From 595c00d669d7cfdeef30d75531ab82769a5f21c7 Mon Sep 17 00:00:00 2001 From: Twaik Yont Date: Mon, 8 Jul 2019 18:22:08 +0300 Subject: [PATCH] Basic keyboard input with locales support --- LICENSE | 21 - .../debug/arm64-v8a/android_gradle_build.json | 298 + ...adle_build_jniLoader_arm64-v8a.command.txt | 14 + ...radle_build_jniLoader_arm64-v8a.stderr.txt | 4 + ...radle_build_jniLoader_arm64-v8a.stdout.txt | 2 + ...d_gradle_build_lorie_arm64-v8a.command.txt | 14 + ...id_gradle_build_lorie_arm64-v8a.stderr.txt | 0 ...id_gradle_build_lorie_arm64-v8a.stdout.txt | 40 + .../arm64-v8a/android_gradle_build_mini.json | 23 + .../arm64-v8a/ndkBuild_build_command.txt | 17 + .../debug/arm64-v8a/ndkBuild_build_output.txt | 128 + .../armeabi-v7a/android_gradle_build.json | 146 +- ...adle_build_jniLoad_armeabi-v7a.command.txt | 14 + ...radle_build_jniLoad_armeabi-v7a.stderr.txt | 23 + ...radle_build_jniLoad_armeabi-v7a.stdout.txt | 1 + ...le_build_jniLoader_armeabi-v7a.command.txt | 14 + ...dle_build_jniLoader_armeabi-v7a.stderr.txt | 0 ...dle_build_jniLoader_armeabi-v7a.stdout.txt | 2 + ...gradle_build_lorie_armeabi-v7a.command.txt | 1 + ..._gradle_build_lorie_armeabi-v7a.stderr.txt | 4 + ..._gradle_build_lorie_armeabi-v7a.stdout.txt | 7 +- .../android_gradle_build_mini.json | 13 +- ...le_build_xkbcommon_armeabi-v7a.command.txt | 14 + ...dle_build_xkbcommon_armeabi-v7a.stderr.txt | 0 ...dle_build_xkbcommon_armeabi-v7a.stdout.txt | 5 + .../armeabi-v7a/ndkBuild_build_command.txt | 1 + .../armeabi-v7a/ndkBuild_build_output.txt | 132 +- .../debug/x86/android_gradle_build.json | 302 + .../debug/x86/android_gradle_build_mini.json | 23 + .../debug/x86/ndkBuild_build_command.txt | 17 + .../debug/x86/ndkBuild_build_output.txt | 134 + .../debug/x86_64/android_gradle_build.json | 298 + ..._gradle_build_jniLoader_x86_64.command.txt | 14 + ...d_gradle_build_jniLoader_x86_64.stderr.txt | 4 + ...d_gradle_build_jniLoader_x86_64.stdout.txt | 2 + ...roid_gradle_build_lorie_x86_64.command.txt | 14 + ...droid_gradle_build_lorie_x86_64.stderr.txt | 0 ...droid_gradle_build_lorie_x86_64.stdout.txt | 40 + .../x86_64/android_gradle_build_mini.json | 23 + .../debug/x86_64/ndkBuild_build_command.txt | 17 + .../debug/x86_64/ndkBuild_build_output.txt | 128 + .../arm64-v8a/android_gradle_build.json | 298 + .../arm64-v8a/android_gradle_build_mini.json | 23 + .../arm64-v8a/ndkBuild_build_command.txt | 17 + .../arm64-v8a/ndkBuild_build_output.txt | 123 + .../armeabi-v7a/android_gradle_build.json | 270 +- .../android_gradle_build_mini.json | 13 +- .../armeabi-v7a/ndkBuild_build_command.txt | 1 + .../armeabi-v7a/ndkBuild_build_output.txt | 130 +- .../release/x86/android_gradle_build.json | 298 + .../x86/android_gradle_build_mini.json | 23 + .../release/x86/ndkBuild_build_command.txt | 17 + .../release/x86/ndkBuild_build_output.txt | 123 + .../release/x86_64/android_gradle_build.json | 298 + .../x86_64/android_gradle_build_mini.json | 23 + .../release/x86_64/ndkBuild_build_command.txt | 17 + .../release/x86_64/ndkBuild_build_output.txt | 123 + app/app.iml | 6 +- app/build.gradle | 5 + .../com/termux/wtermux/KeyboardUtils.java | 127 + .../java/com/termux/wtermux/LorieService.java | 35 +- .../java/com/termux/wtermux/MainActivity.java | 51 +- .../java/com/termux/wtermux/jniLoader.java | 12 + app/src/main/jni/Android.mk | 2 +- app/src/main/jni/Application.mk | 1 + app/src/main/jni/jniLoader/Android.mk | 7 + app/src/main/jni/jniLoader/dt_needed.c | 99 + app/src/main/jni/jniLoader/dt_needed_main.c | 232 + app/src/main/jni/jniLoader/log.h | 56 + app/src/main/jni/libxkbcommon/Android.bp | 68 + app/src/main/jni/libxkbcommon/Android.mk | 47 + app/src/main/jni/libxkbcommon/LICENSE | 215 + app/src/main/jni/libxkbcommon/METADATA | 20 + .../main/jni/libxkbcommon/MODULE_LICENSE_MIT | 0 app/src/main/jni/libxkbcommon/NOTICE | 215 + app/src/main/jni/libxkbcommon/OWNERS | 5 + app/src/main/jni/libxkbcommon/README.version | 3 + .../jni/libxkbcommon/xkbcommon/.autom4te.cfg | 3 + .../jni/libxkbcommon/xkbcommon/.travis.yml | 12 + .../libxkbcommon/xkbcommon/.uncrustify.cfg | 228 + .../main/jni/libxkbcommon/xkbcommon/COPYING | 215 + .../jni/libxkbcommon/xkbcommon/Makefile.am | 309 + app/src/main/jni/libxkbcommon/xkbcommon/NEWS | 218 + .../main/jni/libxkbcommon/xkbcommon/PACKAGING | 50 + .../main/jni/libxkbcommon/xkbcommon/README.md | 59 + .../jni/libxkbcommon/xkbcommon/autogen.sh | 14 + .../libxkbcommon/xkbcommon/bench/.gitignore | 4 + .../libxkbcommon/xkbcommon/bench/compose.c | 76 + .../libxkbcommon/xkbcommon/bench/key-proc.c | 95 + .../jni/libxkbcommon/xkbcommon/bench/rules.c | 71 + .../libxkbcommon/xkbcommon/bench/rulescomp.c | 64 + .../libxkbcommon/xkbcommon/build-aux/compile | 347 + .../xkbcommon/build-aux/config.guess | 1558 ++ .../xkbcommon/build-aux/config.sub | 1791 ++ .../libxkbcommon/xkbcommon/build-aux/depcomp | 791 + .../xkbcommon/build-aux/install-sh | 527 + .../xkbcommon/build-aux/ltmain.sh | 9661 +++++++ .../libxkbcommon/xkbcommon/build-aux/missing | 215 + .../libxkbcommon/xkbcommon/build-aux/output.0 | 21655 ++++++++++++++++ .../libxkbcommon/xkbcommon/build-aux/output.1 | 21655 ++++++++++++++++ .../libxkbcommon/xkbcommon/build-aux/output.2 | 21655 ++++++++++++++++ .../libxkbcommon/xkbcommon/build-aux/requests | 606 + .../xkbcommon/build-aux/test-driver | 139 + .../libxkbcommon/xkbcommon/build-aux/traces.0 | 4140 +++ .../libxkbcommon/xkbcommon/build-aux/traces.1 | 832 + .../libxkbcommon/xkbcommon/build-aux/traces.2 | 4140 +++ .../libxkbcommon/xkbcommon/build-aux/ylwrap | 247 + .../jni/libxkbcommon/xkbcommon/configure.ac | 214 + .../jni/libxkbcommon/xkbcommon/doc/.gitignore | 3 + .../libxkbcommon/xkbcommon/doc/Doxyfile.in | 1886 ++ .../jni/libxkbcommon/xkbcommon/doc/compat.md | 55 + .../xkbcommon/doc/doxygen-extra.css | 9 + .../xkbcommon/doc/keymap-format-text-v1.txt | 359 + .../libxkbcommon/xkbcommon/doc/quick-guide.md | 228 + .../xkbcommon/doc/rules-format.txt | 86 + .../xkbcommon/m4/ax_gcc_builtin.m4 | 168 + .../jni/libxkbcommon/xkbcommon/makekeys.py | 51 + .../jni/libxkbcommon/xkbcommon/src/atom.c | 225 + .../jni/libxkbcommon/xkbcommon/src/atom.h | 49 + .../xkbcommon/src/compose/parser.c | 759 + .../xkbcommon/src/compose/parser.h | 36 + .../xkbcommon/src/compose/paths.c | 204 + .../xkbcommon/src/compose/paths.h | 42 + .../xkbcommon/src/compose/state.c | 196 + .../xkbcommon/src/compose/table.c | 219 + .../xkbcommon/src/compose/table.h | 100 + .../libxkbcommon/xkbcommon/src/context-priv.c | 190 + .../jni/libxkbcommon/xkbcommon/src/context.c | 327 + .../jni/libxkbcommon/xkbcommon/src/context.h | 127 + .../jni/libxkbcommon/xkbcommon/src/darray.h | 205 + .../libxkbcommon/xkbcommon/src/keymap-priv.c | 139 + .../jni/libxkbcommon/xkbcommon/src/keymap.c | 485 + .../jni/libxkbcommon/xkbcommon/src/keymap.h | 478 + .../libxkbcommon/xkbcommon/src/keysym-utf.c | 930 + .../jni/libxkbcommon/xkbcommon/src/keysym.c | 762 + .../jni/libxkbcommon/xkbcommon/src/keysym.h | 71 + .../libxkbcommon/xkbcommon/src/ks_tables.h | 7104 +++++ .../xkbcommon/src/scanner-utils.h | 195 + .../jni/libxkbcommon/xkbcommon/src/state.c | 1386 + .../jni/libxkbcommon/xkbcommon/src/text.c | 345 + .../jni/libxkbcommon/xkbcommon/src/text.h | 76 + .../jni/libxkbcommon/xkbcommon/src/utf8.c | 142 + .../jni/libxkbcommon/xkbcommon/src/utf8.h | 36 + .../jni/libxkbcommon/xkbcommon/src/utils.c | 107 + .../jni/libxkbcommon/xkbcommon/src/utils.h | 254 + .../libxkbcommon/xkbcommon/src/x11/keymap.c | 1176 + .../libxkbcommon/xkbcommon/src/x11/state.c | 71 + .../jni/libxkbcommon/xkbcommon/src/x11/util.c | 217 + .../libxkbcommon/xkbcommon/src/x11/x11-priv.h | 54 + .../xkbcommon/src/xkbcomp/action.c | 870 + .../xkbcommon/src/xkbcomp/action.h | 56 + .../xkbcommon/src/xkbcomp/ast-build.c | 806 + .../xkbcommon/src/xkbcomp/ast-build.h | 122 + .../libxkbcommon/xkbcommon/src/xkbcomp/ast.h | 347 + .../xkbcommon/src/xkbcomp/compat.c | 932 + .../libxkbcommon/xkbcommon/src/xkbcomp/expr.c | 680 + .../libxkbcommon/xkbcommon/src/xkbcomp/expr.h | 85 + .../xkbcommon/src/xkbcomp/include.c | 309 + .../xkbcommon/src/xkbcomp/include.h | 42 + .../xkbcommon/src/xkbcomp/keycodes.c | 668 + .../xkbcommon/src/xkbcomp/keymap-dump.c | 664 + .../xkbcommon/src/xkbcomp/keymap.c | 301 + .../xkbcommon/src/xkbcomp/keywords.c | 348 + .../xkbcommon/src/xkbcomp/keywords.gperf | 78 + .../xkbcommon/src/xkbcomp/parser-priv.h | 44 + .../xkbcommon/src/xkbcomp/parser.c | 3460 +++ .../xkbcommon/src/xkbcomp/parser.h | 219 + .../xkbcommon/src/xkbcomp/parser.y | 826 + .../xkbcommon/src/xkbcomp/rules.c | 1037 + .../xkbcommon/src/xkbcomp/rules.h | 32 + .../xkbcommon/src/xkbcomp/scanner.c | 208 + .../xkbcommon/src/xkbcomp/symbols.c | 1608 ++ .../xkbcommon/src/xkbcomp/types.c | 743 + .../libxkbcommon/xkbcommon/src/xkbcomp/vmod.c | 105 + .../libxkbcommon/xkbcommon/src/xkbcomp/vmod.h | 34 + .../xkbcommon/src/xkbcomp/xkbcomp-priv.h | 124 + .../xkbcommon/src/xkbcomp/xkbcomp.c | 139 + .../libxkbcommon/xkbcommon/test/.gitignore | 21 + .../jni/libxkbcommon/xkbcommon/test/atom.c | 181 + .../libxkbcommon/xkbcommon/test/buffercomp.c | 90 + .../jni/libxkbcommon/xkbcommon/test/common.c | 456 + .../jni/libxkbcommon/xkbcommon/test/compose.c | 525 + .../jni/libxkbcommon/xkbcommon/test/context.c | 52 + .../xkbcommon/test/data/compat/accessx | 52 + .../xkbcommon/test/data/compat/basic | 49 + .../xkbcommon/test/data/compat/caps | 11 + .../xkbcommon/test/data/compat/complete | 10 + .../xkbcommon/test/data/compat/iso9995 | 77 + .../xkbcommon/test/data/compat/ledcaps | 24 + .../xkbcommon/test/data/compat/lednum | 24 + .../xkbcommon/test/data/compat/ledscroll | 24 + .../xkbcommon/test/data/compat/level5 | 56 + .../xkbcommon/test/data/compat/misc | 122 + .../xkbcommon/test/data/compat/mousekeys | 201 + .../xkbcommon/test/data/compat/pc | 17 + .../xkbcommon/test/data/compat/xfree86 | 66 + .../xkbcommon/test/data/keycodes/aliases | 99 + .../test/data/keycodes/aliases-xkbcommon | 99 + .../xkbcommon/test/data/keycodes/empty | 4 + .../xkbcommon/test/data/keycodes/evdev | 314 + .../test/data/keycodes/evdev-xkbcommon | 505 + .../xkbcommon/test/data/keycodes/xfree86 | 410 + .../xkbcommon/test/data/keymaps/bad.xkb | 5 + .../xkbcommon/test/data/keymaps/basic.xkb | 6 + .../data/keymaps/comprehensive-plus-geom.xkb | 1813 ++ .../test/data/keymaps/divide-by-zero.xkb | 21 + .../xkbcommon/test/data/keymaps/host.xkb | 1676 ++ .../test/data/keymaps/no-aliases.xkb | 1337 + .../xkbcommon/test/data/keymaps/no-types.xkb | 1025 + .../xkbcommon/test/data/keymaps/quartz.xkb | 1139 + .../test/data/keymaps/stringcomp.data | 1913 ++ .../test/data/keymaps/syntax-error.xkb | 1814 ++ .../test/data/keymaps/syntax-error2.xkb | 7 + .../test/data/keymaps/unbound-vmod.xkb | 1533 ++ .../xkbcommon/test/data/rules/base | 1226 + .../xkbcommon/test/data/rules/evdev | 1115 + .../xkbcommon/test/data/rules/evdev-xkbcommon | 1092 + .../xkbcommon/test/data/rules/groups | 20 + .../xkbcommon/test/data/rules/index | 28 + .../test/data/rules/multiple-options | 27 + .../xkbcommon/test/data/rules/simple | 21 + .../xkbcommon/test/data/symbols/altwin | 109 + .../xkbcommon/test/data/symbols/ca | 529 + .../xkbcommon/test/data/symbols/capslock | 74 + .../xkbcommon/test/data/symbols/ch | 216 + .../xkbcommon/test/data/symbols/ctrl | 87 + .../xkbcommon/test/data/symbols/cz | 185 + .../xkbcommon/test/data/symbols/de | 806 + .../xkbcommon/test/data/symbols/empty | 4 + .../xkbcommon/test/data/symbols/eurosign | 23 + .../xkbcommon/test/data/symbols/group | 448 + .../xkbcommon/test/data/symbols/il | 323 + .../xkbcommon/test/data/symbols/in | 2062 ++ .../xkbcommon/test/data/symbols/inet | 1877 ++ .../xkbcommon/test/data/symbols/keypad | 625 + .../xkbcommon/test/data/symbols/kpdl | 102 + .../xkbcommon/test/data/symbols/latin | 256 + .../xkbcommon/test/data/symbols/level3 | 211 + .../xkbcommon/test/data/symbols/level5 | 142 + .../test/data/symbols/macintosh_vndr/apple | 141 + .../test/data/symbols/macintosh_vndr/us | 145 + .../xkbcommon/test/data/symbols/nbsp | 204 + .../xkbcommon/test/data/symbols/pc | 87 + .../xkbcommon/test/data/symbols/ru | 651 + .../xkbcommon/test/data/symbols/rupeesign | 5 + .../xkbcommon/test/data/symbols/shift | 87 + .../xkbcommon/test/data/symbols/srvr_ctrl | 110 + .../xkbcommon/test/data/symbols/terminate | 7 + .../xkbcommon/test/data/symbols/us | 1563 ++ .../libxkbcommon/xkbcommon/test/data/sync.sh | 69 + .../xkbcommon/test/data/types/basic | 30 + .../xkbcommon/test/data/types/complete | 9 + .../xkbcommon/test/data/types/extra | 158 + .../xkbcommon/test/data/types/iso9995 | 18 + .../xkbcommon/test/data/types/level5 | 214 + .../xkbcommon/test/data/types/mousekeys | 10 + .../xkbcommon/test/data/types/numpad | 67 + .../libxkbcommon/xkbcommon/test/data/types/pc | 126 + .../xkbcommon/test/evdev-scancodes.h | 587 + .../libxkbcommon/xkbcommon/test/filecomp.c | 67 + .../xkbcommon/test/interactive-evdev.c | 503 + .../xkbcommon/test/interactive-x11.c | 387 + .../jni/libxkbcommon/xkbcommon/test/keyseq.c | 484 + .../jni/libxkbcommon/xkbcommon/test/keysym.c | 200 + .../jni/libxkbcommon/xkbcommon/test/log.c | 119 + .../xkbcommon/test/print-compiled-keymap.c | 106 + .../xkbcommon/test/rmlvo-to-kccgst.c | 86 + .../libxkbcommon/xkbcommon/test/rules-file.c | 173 + .../libxkbcommon/xkbcommon/test/rulescomp.c | 203 + .../jni/libxkbcommon/xkbcommon/test/state.c | 709 + .../libxkbcommon/xkbcommon/test/stringcomp.c | 105 + .../jni/libxkbcommon/xkbcommon/test/test.h | 90 + .../jni/libxkbcommon/xkbcommon/test/utf8.c | 157 + .../jni/libxkbcommon/xkbcommon/test/x11.c | 78 + .../jni/libxkbcommon/xkbcommon/test/x11comp.c | 166 + .../xkbcommon/xkbcommon-uninstalled.pc.in | 8 + .../xkbcommon/xkbcommon-x11-uninstalled.pc.in | 10 + .../libxkbcommon/xkbcommon/xkbcommon-x11.map | 9 + .../xkbcommon/xkbcommon-x11.pc.in | 12 + .../jni/libxkbcommon/xkbcommon/xkbcommon.map | 87 + .../libxkbcommon/xkbcommon/xkbcommon.pc.in | 10 + .../xkbcommon/xkbcommon/xkbcommon-compat.h | 98 + .../xkbcommon/xkbcommon/xkbcommon-compose.h | 483 + .../xkbcommon/xkbcommon/xkbcommon-keysyms.h | 3012 +++ .../xkbcommon/xkbcommon/xkbcommon-names.h | 45 + .../xkbcommon/xkbcommon/xkbcommon-x11.h | 244 + .../xkbcommon/xkbcommon/xkbcommon.h | 1723 ++ app/src/main/jni/lorie/Android.mk | 5 +- app/src/main/jni/lorie/backend-android.c | 159 +- app/src/main/jni/lorie/backend.h | 1 + .../main/jni/lorie/locale/android-keycodes.h | 750 + app/src/main/jni/lorie/locale/android-utils.c | 248 + .../main/jni/lorie/locale/evdev-keycodes.h | 296 + app/src/main/jni/lorie/locale/generator | Bin 0 -> 17864 bytes app/src/main/jni/lorie/locale/generator.c | 230 + .../main/jni/lorie/locale/input-event-codes.h | 861 + app/src/main/jni/lorie/locale/keymaps.h | 519 + app/src/main/jni/lorie/locale/make.sh | 9 + app/src/main/jni/lorie/locale/test.c | 58 + app/src/main/jni/lorie/main.c | 39 +- app/src/main/jni/prebuilt/Android.mk | 20 +- app/src/main/jni/prebuilt/Android.mk2 | 19 + .../prebuilt/arm64-v8a/libandroid-support.so | Bin 0 -> 207232 bytes app/src/main/jni/prebuilt/arm64-v8a/libffi.so | Bin 0 -> 74920 bytes .../prebuilt/arm64-v8a/libwayland-server.so | Bin 0 -> 197608 bytes .../armeabi-v7a/libandroid-support.so | Bin 20820 -> 152780 bytes .../main/jni/prebuilt/armeabi-v7a/libffi.so | Bin 104004 -> 103776 bytes .../prebuilt/armeabi-v7a/libwayland-server.so | Bin 204852 -> 204536 bytes .../jni/prebuilt/x86/libandroid-support.so | Bin 0 -> 150908 bytes app/src/main/jni/prebuilt/x86/libffi.so | Bin 0 -> 17132 bytes .../jni/prebuilt/x86/libwayland-server.so | Bin 0 -> 166020 bytes .../jni/prebuilt/x86_64/libandroid-support.so | Bin 0 -> 156392 bytes app/src/main/jni/prebuilt/x86_64/libffi.so | Bin 0 -> 17664 bytes .../jni/prebuilt/x86_64/libwayland-server.so | Bin 0 -> 192184 bytes 314 files changed, 175105 insertions(+), 144 deletions(-) delete mode 100644 LICENSE create mode 100644 app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build.json create mode 100644 app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_jniLoader_arm64-v8a.command.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_jniLoader_arm64-v8a.stderr.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_jniLoader_arm64-v8a.stdout.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_lorie_arm64-v8a.command.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_lorie_arm64-v8a.stderr.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_lorie_arm64-v8a.stdout.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_mini.json create mode 100644 app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/ndkBuild_build_command.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/ndkBuild_build_output.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_jniLoad_armeabi-v7a.command.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_jniLoad_armeabi-v7a.stderr.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_jniLoad_armeabi-v7a.stdout.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_jniLoader_armeabi-v7a.command.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_jniLoader_armeabi-v7a.stderr.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_jniLoader_armeabi-v7a.stdout.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_xkbcommon_armeabi-v7a.command.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_xkbcommon_armeabi-v7a.stderr.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_xkbcommon_armeabi-v7a.stdout.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/x86/android_gradle_build.json create mode 100644 app/.externalNativeBuild/ndkBuild/debug/x86/android_gradle_build_mini.json create mode 100644 app/.externalNativeBuild/ndkBuild/debug/x86/ndkBuild_build_command.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/x86/ndkBuild_build_output.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build.json create mode 100644 app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_jniLoader_x86_64.command.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_jniLoader_x86_64.stderr.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_jniLoader_x86_64.stdout.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_lorie_x86_64.command.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_lorie_x86_64.stderr.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_lorie_x86_64.stdout.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_mini.json create mode 100644 app/.externalNativeBuild/ndkBuild/debug/x86_64/ndkBuild_build_command.txt create mode 100644 app/.externalNativeBuild/ndkBuild/debug/x86_64/ndkBuild_build_output.txt create mode 100644 app/.externalNativeBuild/ndkBuild/release/arm64-v8a/android_gradle_build.json create mode 100644 app/.externalNativeBuild/ndkBuild/release/arm64-v8a/android_gradle_build_mini.json create mode 100644 app/.externalNativeBuild/ndkBuild/release/arm64-v8a/ndkBuild_build_command.txt create mode 100644 app/.externalNativeBuild/ndkBuild/release/arm64-v8a/ndkBuild_build_output.txt create mode 100644 app/.externalNativeBuild/ndkBuild/release/x86/android_gradle_build.json create mode 100644 app/.externalNativeBuild/ndkBuild/release/x86/android_gradle_build_mini.json create mode 100644 app/.externalNativeBuild/ndkBuild/release/x86/ndkBuild_build_command.txt create mode 100644 app/.externalNativeBuild/ndkBuild/release/x86/ndkBuild_build_output.txt create mode 100644 app/.externalNativeBuild/ndkBuild/release/x86_64/android_gradle_build.json create mode 100644 app/.externalNativeBuild/ndkBuild/release/x86_64/android_gradle_build_mini.json create mode 100644 app/.externalNativeBuild/ndkBuild/release/x86_64/ndkBuild_build_command.txt create mode 100644 app/.externalNativeBuild/ndkBuild/release/x86_64/ndkBuild_build_output.txt create mode 100644 app/src/main/java/com/termux/wtermux/KeyboardUtils.java create mode 100644 app/src/main/java/com/termux/wtermux/jniLoader.java create mode 100644 app/src/main/jni/Application.mk create mode 100644 app/src/main/jni/jniLoader/Android.mk create mode 100644 app/src/main/jni/jniLoader/dt_needed.c create mode 100644 app/src/main/jni/jniLoader/dt_needed_main.c create mode 100644 app/src/main/jni/jniLoader/log.h create mode 100644 app/src/main/jni/libxkbcommon/Android.bp create mode 100644 app/src/main/jni/libxkbcommon/Android.mk create mode 100644 app/src/main/jni/libxkbcommon/LICENSE create mode 100644 app/src/main/jni/libxkbcommon/METADATA create mode 100644 app/src/main/jni/libxkbcommon/MODULE_LICENSE_MIT create mode 100644 app/src/main/jni/libxkbcommon/NOTICE create mode 100644 app/src/main/jni/libxkbcommon/OWNERS create mode 100644 app/src/main/jni/libxkbcommon/README.version create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/.autom4te.cfg create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/.travis.yml create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/.uncrustify.cfg create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/COPYING create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/Makefile.am create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/NEWS create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/PACKAGING create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/README.md create mode 100755 app/src/main/jni/libxkbcommon/xkbcommon/autogen.sh create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/bench/.gitignore create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/bench/compose.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/bench/key-proc.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/bench/rules.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/bench/rulescomp.c create mode 100755 app/src/main/jni/libxkbcommon/xkbcommon/build-aux/compile create mode 100755 app/src/main/jni/libxkbcommon/xkbcommon/build-aux/config.guess create mode 100755 app/src/main/jni/libxkbcommon/xkbcommon/build-aux/config.sub create mode 100755 app/src/main/jni/libxkbcommon/xkbcommon/build-aux/depcomp create mode 100755 app/src/main/jni/libxkbcommon/xkbcommon/build-aux/install-sh create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/build-aux/ltmain.sh create mode 100755 app/src/main/jni/libxkbcommon/xkbcommon/build-aux/missing create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/build-aux/output.0 create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/build-aux/output.1 create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/build-aux/output.2 create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/build-aux/requests create mode 100755 app/src/main/jni/libxkbcommon/xkbcommon/build-aux/test-driver create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/build-aux/traces.0 create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/build-aux/traces.1 create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/build-aux/traces.2 create mode 100755 app/src/main/jni/libxkbcommon/xkbcommon/build-aux/ylwrap create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/configure.ac create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/doc/.gitignore create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/doc/Doxyfile.in create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/doc/compat.md create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/doc/doxygen-extra.css create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/doc/keymap-format-text-v1.txt create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/doc/quick-guide.md create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/doc/rules-format.txt create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/m4/ax_gcc_builtin.m4 create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/makekeys.py create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/atom.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/context.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/context.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/darray.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/ks_tables.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/scanner-utils.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/state.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/text.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/text.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/utils.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/x11/keymap.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/x11/state.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/x11/util.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/x11/x11-priv.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.gperf create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser-priv.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.y create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp-priv.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/.gitignore create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/atom.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/buffercomp.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/common.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/compose.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/context.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/accessx create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/basic create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/caps create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/complete create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/iso9995 create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/ledcaps create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/lednum create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/ledscroll create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/level5 create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/misc create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/mousekeys create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/pc create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/xfree86 create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/aliases create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/aliases-xkbcommon create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/empty create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/evdev create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/evdev-xkbcommon create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/xfree86 create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/bad.xkb create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/basic.xkb create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/comprehensive-plus-geom.xkb create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/divide-by-zero.xkb create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/host.xkb create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/no-aliases.xkb create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/no-types.xkb create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/quartz.xkb create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/stringcomp.data create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/syntax-error.xkb create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/syntax-error2.xkb create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/unbound-vmod.xkb create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/base create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/evdev create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/evdev-xkbcommon create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/groups create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/index create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/multiple-options create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/simple create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/altwin create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/ca create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/capslock create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/ch create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/ctrl create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/cz create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/de create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/empty create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/eurosign create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/group create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/il create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/in create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/inet create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/keypad create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/kpdl create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/latin create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/level3 create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/level5 create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/macintosh_vndr/apple create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/macintosh_vndr/us create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/nbsp create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/pc create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/ru create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/rupeesign create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/shift create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/srvr_ctrl create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/terminate create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/us create mode 100755 app/src/main/jni/libxkbcommon/xkbcommon/test/data/sync.sh create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/basic create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/complete create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/extra create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/iso9995 create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/level5 create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/mousekeys create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/numpad create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/pc create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/evdev-scancodes.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/filecomp.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/interactive-evdev.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/interactive-x11.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/keyseq.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/keysym.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/log.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/print-compiled-keymap.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/rmlvo-to-kccgst.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/rules-file.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/rulescomp.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/state.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/stringcomp.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/test.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/utf8.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/x11.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/test/x11comp.c create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon-uninstalled.pc.in create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon-x11-uninstalled.pc.in create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon-x11.map create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon-x11.pc.in create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon.map create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon.pc.in create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon-compat.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon-compose.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon-keysyms.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon-names.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon-x11.h create mode 100644 app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon.h create mode 100644 app/src/main/jni/lorie/locale/android-keycodes.h create mode 100644 app/src/main/jni/lorie/locale/android-utils.c create mode 100644 app/src/main/jni/lorie/locale/evdev-keycodes.h create mode 100755 app/src/main/jni/lorie/locale/generator create mode 100644 app/src/main/jni/lorie/locale/generator.c create mode 100644 app/src/main/jni/lorie/locale/input-event-codes.h create mode 100644 app/src/main/jni/lorie/locale/keymaps.h create mode 100755 app/src/main/jni/lorie/locale/make.sh create mode 100644 app/src/main/jni/lorie/locale/test.c create mode 100644 app/src/main/jni/prebuilt/Android.mk2 create mode 100755 app/src/main/jni/prebuilt/arm64-v8a/libandroid-support.so create mode 100755 app/src/main/jni/prebuilt/arm64-v8a/libffi.so create mode 100755 app/src/main/jni/prebuilt/arm64-v8a/libwayland-server.so create mode 100755 app/src/main/jni/prebuilt/x86/libandroid-support.so create mode 100755 app/src/main/jni/prebuilt/x86/libffi.so create mode 100755 app/src/main/jni/prebuilt/x86/libwayland-server.so create mode 100755 app/src/main/jni/prebuilt/x86_64/libandroid-support.so create mode 100755 app/src/main/jni/prebuilt/x86_64/libffi.so create mode 100755 app/src/main/jni/prebuilt/x86_64/libwayland-server.so diff --git a/LICENSE b/LICENSE deleted file mode 100644 index d2fc6c3..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2019 Twaik Yont - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build.json b/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build.json new file mode 100644 index 0000000..d8f98ca --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build.json @@ -0,0 +1,298 @@ +{ + "buildFiles": [ + "/home/twaik/WTermux/app/src/main/jni/Android.mk", + "/home/twaik/WTermux/app/src/main/jni/Application.mk" + ], + "cleanCommands": [ + "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darm64-v8a NDK_ALL_ABIS\u003darm64-v8a NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib clean" + ], + "libraries": { + "lorie-debug-arm64-v8a": { + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darm64-v8a NDK_ALL_ABIS\u003darm64-v8a NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/liblorie.so", + "toolchain": "toolchain-arm64-v8a", + "abi": "arm64-v8a", + "artifactName": "lorie", + "files": [ + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/lorie/backend-android.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/lorie/main.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/lorie/renderer.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + } + ], + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/liblorie.so" + }, + "xkbcommon-debug-arm64-v8a": { + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darm64-v8a NDK_ALL_ABIS\u003darm64-v8a NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/libxkbcommon.a", + "toolchain": "toolchain-arm64-v8a", + "abi": "arm64-v8a", + "artifactName": "xkbcommon", + "files": [ + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + } + ], + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/libxkbcommon.a" + } + }, + "toolchains": { + "toolchain-arm64-v8a": { + "cCompilerExecutable": "/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang" + } + }, + "cFileExtensions": [ + "c" + ], + "cppFileExtensions": [] +} \ No newline at end of file diff --git a/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_jniLoader_arm64-v8a.command.txt b/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_jniLoader_arm64-v8a.command.txt new file mode 100644 index 0000000..c468a38 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_jniLoader_arm64-v8a.command.txt @@ -0,0 +1,14 @@ +Executable : /opt/AndroidSdk/ndk-bundle/ndk-build +arguments : +NDK_PROJECT_PATH=null +APP_BUILD_SCRIPT=/home/twaik/WTermux/app/src/main/jni/Android.mk +NDK_APPLICATION_MK=/home/twaik/WTermux/app/src/main/jni/Application.mk +APP_ABI=arm64-v8a +NDK_ALL_ABIS=arm64-v8a +NDK_DEBUG=1 +APP_PLATFORM=android-19 +NDK_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj +NDK_LIBS_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib +/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/libjniLoader.so +jvmArgs : + diff --git a/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_jniLoader_arm64-v8a.stderr.txt b/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_jniLoader_arm64-v8a.stderr.txt new file mode 100644 index 0000000..3317d5c --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_jniLoader_arm64-v8a.stderr.txt @@ -0,0 +1,4 @@ +/home/twaik/WTermux/app/src/main/jni/jniLoader/dt_needed_main.c:206:8: warning: initializing 'char *' with an expression of type 'const char *' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers] + char *name = (*env)->GetStringUTFChars(env, name_, 0); + ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +1 warning generated. diff --git a/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_jniLoader_arm64-v8a.stdout.txt b/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_jniLoader_arm64-v8a.stdout.txt new file mode 100644 index 0000000..956cddb --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_jniLoader_arm64-v8a.stdout.txt @@ -0,0 +1,2 @@ +[arm64-v8a] Compile : jniLoader <= dt_needed_main.c +[arm64-v8a] SharedLibrary : libjniLoader.so diff --git a/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_lorie_arm64-v8a.command.txt b/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_lorie_arm64-v8a.command.txt new file mode 100644 index 0000000..c38ff9e --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_lorie_arm64-v8a.command.txt @@ -0,0 +1,14 @@ +Executable : /opt/AndroidSdk/ndk-bundle/ndk-build +arguments : +NDK_PROJECT_PATH=null +APP_BUILD_SCRIPT=/home/twaik/WTermux/app/src/main/jni/Android.mk +NDK_APPLICATION_MK=/home/twaik/WTermux/app/src/main/jni/Application.mk +APP_ABI=arm64-v8a +NDK_ALL_ABIS=arm64-v8a +NDK_DEBUG=1 +APP_PLATFORM=android-19 +NDK_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj +NDK_LIBS_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib +/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/liblorie.so +jvmArgs : + diff --git a/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_lorie_arm64-v8a.stderr.txt b/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_lorie_arm64-v8a.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_lorie_arm64-v8a.stdout.txt b/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_lorie_arm64-v8a.stdout.txt new file mode 100644 index 0000000..fb8f648 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_lorie_arm64-v8a.stdout.txt @@ -0,0 +1,40 @@ +Android NDK: WARNING:/home/twaik/WTermux/app/src/main/jni/lorie/Android.mk:lorie: non-system libraries in linker flags: -lwayland-server +Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES +Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the +Android NDK: current module +[arm64-v8a] Compile : lorie <= main.c +[arm64-v8a] Compile : lorie <= backend-android.c +[arm64-v8a] Compile : lorie <= renderer.c +[arm64-v8a] Compile : xkbcommon <= parser.c +[arm64-v8a] Compile : xkbcommon <= paths.c +[arm64-v8a] Compile : xkbcommon <= state.c +[arm64-v8a] Compile : xkbcommon <= table.c +[arm64-v8a] Compile : xkbcommon <= action.c +[arm64-v8a] Compile : xkbcommon <= ast-build.c +[arm64-v8a] Compile : xkbcommon <= compat.c +[arm64-v8a] Compile : xkbcommon <= expr.c +[arm64-v8a] Compile : xkbcommon <= include.c +[arm64-v8a] Compile : xkbcommon <= keycodes.c +[arm64-v8a] Compile : xkbcommon <= keymap.c +[arm64-v8a] Compile : xkbcommon <= keymap-dump.c +[arm64-v8a] Compile : xkbcommon <= keywords.c +[arm64-v8a] Compile : xkbcommon <= parser.c +[arm64-v8a] Compile : xkbcommon <= rules.c +[arm64-v8a] Compile : xkbcommon <= scanner.c +[arm64-v8a] Compile : xkbcommon <= symbols.c +[arm64-v8a] Compile : xkbcommon <= types.c +[arm64-v8a] Compile : xkbcommon <= vmod.c +[arm64-v8a] Compile : xkbcommon <= xkbcomp.c +[arm64-v8a] Compile : xkbcommon <= atom.c +[arm64-v8a] Compile : xkbcommon <= context.c +[arm64-v8a] Compile : xkbcommon <= context-priv.c +[arm64-v8a] Compile : xkbcommon <= keysym.c +[arm64-v8a] Compile : xkbcommon <= keysym-utf.c +[arm64-v8a] Compile : xkbcommon <= keymap.c +[arm64-v8a] Compile : xkbcommon <= keymap-priv.c +[arm64-v8a] Compile : xkbcommon <= state.c +[arm64-v8a] Compile : xkbcommon <= text.c +[arm64-v8a] Compile : xkbcommon <= utf8.c +[arm64-v8a] Compile : xkbcommon <= utils.c +[arm64-v8a] SharedLibrary : libxkbcommon.so +[arm64-v8a] SharedLibrary : liblorie.so diff --git a/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_mini.json b/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_mini.json new file mode 100644 index 0000000..e7e6ebb --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/android_gradle_build_mini.json @@ -0,0 +1,23 @@ +{ + "buildFiles": [ + "/home/twaik/WTermux/app/src/main/jni/Android.mk", + "/home/twaik/WTermux/app/src/main/jni/Application.mk" + ], + "cleanCommands": [ + "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darm64-v8a NDK_ALL_ABIS\u003darm64-v8a NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib clean" + ], + "libraries": { + "lorie-debug-arm64-v8a": { + "artifactName": "lorie", + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darm64-v8a NDK_ALL_ABIS\u003darm64-v8a NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/liblorie.so", + "abi": "arm64-v8a", + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/liblorie.so" + }, + "xkbcommon-debug-arm64-v8a": { + "artifactName": "xkbcommon", + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darm64-v8a NDK_ALL_ABIS\u003darm64-v8a NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/libxkbcommon.a", + "abi": "arm64-v8a", + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/libxkbcommon.a" + } + } +} \ No newline at end of file diff --git a/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/ndkBuild_build_command.txt b/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/ndkBuild_build_command.txt new file mode 100644 index 0000000..9c49a86 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/ndkBuild_build_command.txt @@ -0,0 +1,17 @@ +Executable : /opt/AndroidSdk/ndk-bundle/ndk-build +arguments : +NDK_PROJECT_PATH=null +APP_BUILD_SCRIPT=/home/twaik/WTermux/app/src/main/jni/Android.mk +NDK_APPLICATION_MK=/home/twaik/WTermux/app/src/main/jni/Application.mk +APP_ABI=arm64-v8a +NDK_ALL_ABIS=arm64-v8a +NDK_DEBUG=1 +APP_PLATFORM=android-19 +NDK_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj +NDK_LIBS_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib +APP_SHORT_COMMANDS=false +LOCAL_SHORT_COMMANDS=false +-B +-n +jvmArgs : + diff --git a/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/ndkBuild_build_output.txt b/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/ndkBuild_build_output.txt new file mode 100644 index 0000000..369dd3c --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/arm64-v8a/ndkBuild_build_output.txt @@ -0,0 +1,128 @@ +Android NDK: WARNING:/home/twaik/WTermux/app/src/main/jni/lorie/Android.mk:lorie: non-system libraries in linker flags: -lwayland-server +Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES +Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the +Android NDK: current module +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/arm64-v8a/* +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/arm64-v8a/gdbserver +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/arm64-v8a/gdb.setup +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/arm64-v8a +echo [arm64-v8a] "Gdbserver ": "[aarch64-linux-android] /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/arm64-v8a/gdbserver" +install -p /opt/AndroidSdk/ndk-bundle/prebuilt/android-arm64/gdbserver/gdbserver /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/arm64-v8a/gdbserver +echo [arm64-v8a] "Gdbsetup ": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/arm64-v8a/gdb.setup" +echo "set solib-search-path /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a" > /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/arm64-v8a/gdb.setup +echo "directory /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot /home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ /opt/AndroidSdk/ndk-bundle/sources/cxx-stl/system /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src" >> /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/arm64-v8a/gdb.setup +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/lorie +echo [arm64-v8a] "Compile ": "lorie <= main.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/lorie/main.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/lorie/main.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/main.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/lorie/main.o +echo [arm64-v8a] "Compile ": "lorie <= backend-android.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/lorie/backend-android.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/lorie/backend-android.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/backend-android.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/lorie/backend-android.o +echo [arm64-v8a] "Compile ": "lorie <= renderer.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/lorie/renderer.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/lorie/renderer.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/renderer.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/lorie/renderer.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/compose +echo [arm64-v8a] "Compile ": "xkbcommon <= parser.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/compose/parser.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/compose/parser.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/compose/parser.o +echo [arm64-v8a] "Compile ": "xkbcommon <= paths.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/compose/paths.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/compose/paths.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/compose/paths.o +echo [arm64-v8a] "Compile ": "xkbcommon <= state.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/compose/state.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/compose/state.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/compose/state.o +echo [arm64-v8a] "Compile ": "xkbcommon <= table.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/compose/table.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/compose/table.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/compose/table.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp +echo [arm64-v8a] "Compile ": "xkbcommon <= action.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/action.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/action.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/action.o +echo [arm64-v8a] "Compile ": "xkbcommon <= ast-build.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o +echo [arm64-v8a] "Compile ": "xkbcommon <= compat.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/compat.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/compat.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/compat.o +echo [arm64-v8a] "Compile ": "xkbcommon <= expr.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/expr.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/expr.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/expr.o +echo [arm64-v8a] "Compile ": "xkbcommon <= include.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/include.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/include.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/include.o +echo [arm64-v8a] "Compile ": "xkbcommon <= keycodes.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o +echo [arm64-v8a] "Compile ": "xkbcommon <= keymap.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap.o +echo [arm64-v8a] "Compile ": "xkbcommon <= keymap-dump.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o +echo [arm64-v8a] "Compile ": "xkbcommon <= keywords.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keywords.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keywords.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keywords.o +echo [arm64-v8a] "Compile ": "xkbcommon <= parser.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/parser.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/parser.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/parser.o +echo [arm64-v8a] "Compile ": "xkbcommon <= rules.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/rules.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/rules.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/rules.o +echo [arm64-v8a] "Compile ": "xkbcommon <= scanner.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/scanner.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/scanner.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/scanner.o +echo [arm64-v8a] "Compile ": "xkbcommon <= symbols.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/symbols.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/symbols.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/symbols.o +echo [arm64-v8a] "Compile ": "xkbcommon <= types.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/types.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/types.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/types.o +echo [arm64-v8a] "Compile ": "xkbcommon <= vmod.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/vmod.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/vmod.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/vmod.o +echo [arm64-v8a] "Compile ": "xkbcommon <= xkbcomp.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src +echo [arm64-v8a] "Compile ": "xkbcommon <= atom.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/atom.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/atom.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/atom.o +echo [arm64-v8a] "Compile ": "xkbcommon <= context.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/context.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/context.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/context.o +echo [arm64-v8a] "Compile ": "xkbcommon <= context-priv.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/context-priv.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/context-priv.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/context-priv.o +echo [arm64-v8a] "Compile ": "xkbcommon <= keysym.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/keysym.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/keysym.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/keysym.o +echo [arm64-v8a] "Compile ": "xkbcommon <= keysym-utf.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/keysym-utf.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/keysym-utf.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/keysym-utf.o +echo [arm64-v8a] "Compile ": "xkbcommon <= keymap.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/keymap.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/keymap.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/keymap.o +echo [arm64-v8a] "Compile ": "xkbcommon <= keymap-priv.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/keymap-priv.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/keymap-priv.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/keymap-priv.o +echo [arm64-v8a] "Compile ": "xkbcommon <= state.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/state.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/state.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/state.o +echo [arm64-v8a] "Compile ": "xkbcommon <= text.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/text.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/text.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/text.o +echo [arm64-v8a] "Compile ": "xkbcommon <= utf8.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/utf8.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/utf8.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/utf8.o +echo [arm64-v8a] "Compile ": "xkbcommon <= utils.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/utils.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/utils.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/utils.o +echo [arm64-v8a] "StaticLibrary ": "libxkbcommon.a" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/libxkbcommon.a +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar crsD /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/libxkbcommon.a /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/compose/parser.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/compose/paths.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/compose/state.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/compose/table.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/action.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/compat.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/expr.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/include.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keywords.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/parser.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/rules.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/scanner.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/symbols.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/types.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/vmod.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/atom.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/context.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/context-priv.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/keysym.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/keysym-utf.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/keymap.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/keymap-priv.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/state.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/text.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/utf8.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/xkbcommon/xkbcommon/src/utils.o +echo [arm64-v8a] "SharedLibrary ": "liblorie.so" +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -Wl,-soname,liblorie.so -shared /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/lorie/main.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/lorie/backend-android.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/lorie/renderer.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/libxkbcommon.a -lgcc -Wl,--exclude-libs,libgcc.a -latomic -Wl,--exclude-libs,libatomic.a -target aarch64-none-linux-android21 -no-canonical-prefixes -L/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/arm64-v8a -lwayland-server -Wl,--build-id -stdlib=libstdc++ -Wl,--no-undefined -Wl,-z,noexecstack -Wl,--warn-shared-textrel -Wl,--fatal-warnings -lEGL -lGLESv2 -llog -landroid -lc -lm -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/liblorie.so +echo [arm64-v8a] "Install ": "liblorie.so => /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/arm64-v8a/liblorie.so" +install -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/liblorie.so /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/arm64-v8a/liblorie.so +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-strip --strip-unneeded /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/arm64-v8a/liblorie.so diff --git a/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build.json b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build.json index a188210..7d2e742 100644 --- a/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build.json +++ b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build.json @@ -1,31 +1,165 @@ { "buildFiles": [ - "/home/twaik/WTermux/app/src/main/jni/Android.mk" + "/home/twaik/WTermux/app/src/main/jni/Android.mk", + "/home/twaik/WTermux/app/src/main/jni/Application.mk" ], "cleanCommands": [ - "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk APP_ABI\u003darmeabi-v7a NDK_ALL_ABIS\u003darmeabi-v7a NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib clean" + "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darmeabi-v7a NDK_ALL_ABIS\u003darmeabi-v7a NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib clean" ], "libraries": { "lorie-debug-armeabi-v7a": { - "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk APP_ABI\u003darmeabi-v7a NDK_ALL_ABIS\u003darmeabi-v7a NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/liblorie.so", + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darmeabi-v7a NDK_ALL_ABIS\u003darmeabi-v7a NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/liblorie.so", "toolchain": "toolchain-armeabi-v7a", "abi": "armeabi-v7a", "artifactName": "lorie", "files": [ { "src": "/home/twaik/WTermux/app/src/main/jni/lorie/backend-android.c", - "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" }, { "src": "/home/twaik/WTermux/app/src/main/jni/lorie/main.c", - "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" }, { "src": "/home/twaik/WTermux/app/src/main/jni/lorie/renderer.c", - "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" } ], "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/liblorie.so" + }, + "xkbcommon-debug-armeabi-v7a": { + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darmeabi-v7a NDK_ALL_ABIS\u003darmeabi-v7a NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/libxkbcommon.so", + "toolchain": "toolchain-armeabi-v7a", + "abi": "armeabi-v7a", + "artifactName": "xkbcommon", + "files": [ + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + } + ], + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/libxkbcommon.so" } }, "toolchains": { diff --git a/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_jniLoad_armeabi-v7a.command.txt b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_jniLoad_armeabi-v7a.command.txt new file mode 100644 index 0000000..4d910e3 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_jniLoad_armeabi-v7a.command.txt @@ -0,0 +1,14 @@ +Executable : /opt/AndroidSdk/ndk-bundle/ndk-build +arguments : +NDK_PROJECT_PATH=null +APP_BUILD_SCRIPT=/home/twaik/WTermux/app/src/main/jni/Android.mk +NDK_APPLICATION_MK=/home/twaik/WTermux/app/src/main/jni/Application.mk +APP_ABI=armeabi-v7a +NDK_ALL_ABIS=armeabi-v7a +NDK_DEBUG=1 +APP_PLATFORM=android-19 +NDK_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj +NDK_LIBS_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib +/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/libjniLoad.so +jvmArgs : + diff --git a/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_jniLoad_armeabi-v7a.stderr.txt b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_jniLoad_armeabi-v7a.stderr.txt new file mode 100644 index 0000000..167a948 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_jniLoad_armeabi-v7a.stderr.txt @@ -0,0 +1,23 @@ +/home/twaik/WTermux/app/src/main/jni/patchelf.cpp:158:9: error: cannot use 'throw' with exceptions disabled + throw SysError(msg); + ^ +/home/twaik/WTermux/app/src/main/jni/patchelf.cpp:160:9: error: cannot use 'throw' with exceptions disabled + throw std::runtime_error(msg); + ^ +/home/twaik/WTermux/app/src/main/jni/patchelf.cpp:173:9: error: cannot use 'throw' with exceptions disabled + throw SysError(fmt("getting info about '", fileName, "'")); + ^ +/home/twaik/WTermux/app/src/main/jni/patchelf.cpp:176:9: error: cannot use 'throw' with exceptions disabled + throw SysError(fmt("cannot read file of size ", st.st_size, " into memory")); + ^ +/home/twaik/WTermux/app/src/main/jni/patchelf.cpp:185:19: error: cannot use 'throw' with exceptions disabled + if (fd == -1) throw SysError(fmt("opening '", fileName, "'")); + ^ +/home/twaik/WTermux/app/src/main/jni/patchelf.cpp:193:9: error: cannot use 'throw' with exceptions disabled + throw SysError(fmt("reading '", fileName, "'")); + ^ +/home/twaik/WTermux/app/src/main/jni/patchelf.cpp:374:2: error: cannot use 'try' with exceptions disabled + try { + ^ +7 errors generated. +make: *** [/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/jniLoad/patchelf.o] Error 1 diff --git a/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_jniLoad_armeabi-v7a.stdout.txt b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_jniLoad_armeabi-v7a.stdout.txt new file mode 100644 index 0000000..6f36e82 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_jniLoad_armeabi-v7a.stdout.txt @@ -0,0 +1 @@ +[armeabi-v7a] Compile++ thumb: jniLoad <= patchelf.cpp diff --git a/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_jniLoader_armeabi-v7a.command.txt b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_jniLoader_armeabi-v7a.command.txt new file mode 100644 index 0000000..6d82b90 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_jniLoader_armeabi-v7a.command.txt @@ -0,0 +1,14 @@ +Executable : /opt/AndroidSdk/ndk-bundle/ndk-build +arguments : +NDK_PROJECT_PATH=null +APP_BUILD_SCRIPT=/home/twaik/WTermux/app/src/main/jni/Android.mk +NDK_APPLICATION_MK=/home/twaik/WTermux/app/src/main/jni/Application.mk +APP_ABI=armeabi-v7a +NDK_ALL_ABIS=armeabi-v7a +NDK_DEBUG=1 +APP_PLATFORM=android-19 +NDK_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj +NDK_LIBS_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib +/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/libjniLoader.so +jvmArgs : + diff --git a/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_jniLoader_armeabi-v7a.stderr.txt b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_jniLoader_armeabi-v7a.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_jniLoader_armeabi-v7a.stdout.txt b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_jniLoader_armeabi-v7a.stdout.txt new file mode 100644 index 0000000..add65d2 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_jniLoader_armeabi-v7a.stdout.txt @@ -0,0 +1,2 @@ +[armeabi-v7a] Compile thumb : jniLoader <= dt_needed_main.c +[armeabi-v7a] SharedLibrary : libjniLoader.so diff --git a/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_lorie_armeabi-v7a.command.txt b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_lorie_armeabi-v7a.command.txt index 3c71c54..00b0082 100644 --- a/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_lorie_armeabi-v7a.command.txt +++ b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_lorie_armeabi-v7a.command.txt @@ -2,6 +2,7 @@ Executable : /opt/AndroidSdk/ndk-bundle/ndk-build arguments : NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=/home/twaik/WTermux/app/src/main/jni/Android.mk +NDK_APPLICATION_MK=/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI=armeabi-v7a NDK_ALL_ABIS=armeabi-v7a NDK_DEBUG=1 diff --git a/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_lorie_armeabi-v7a.stderr.txt b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_lorie_armeabi-v7a.stderr.txt index e69de29..acf16d0 100644 --- a/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_lorie_armeabi-v7a.stderr.txt +++ b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_lorie_armeabi-v7a.stderr.txt @@ -0,0 +1,4 @@ +/home/twaik/WTermux/app/src/main/jni/lorie/backend-android.c:257:33: warning: result of comparison against a string literal is unspecified (use strncmp instead) [-Wstring-compare] + if (backend->xkb_names.layout != "us") { + ^ ~~~~ +1 warning generated. diff --git a/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_lorie_armeabi-v7a.stdout.txt b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_lorie_armeabi-v7a.stdout.txt index 3d15895..5dc85d0 100644 --- a/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_lorie_armeabi-v7a.stdout.txt +++ b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_lorie_armeabi-v7a.stdout.txt @@ -1 +1,6 @@ -make: `/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/liblorie.so' is up to date. +Android NDK: WARNING:/home/twaik/WTermux/app/src/main/jni/lorie/Android.mk:lorie: non-system libraries in linker flags: -lwayland-server +Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES +Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the +Android NDK: current module +[armeabi-v7a] Compile thumb : lorie <= backend-android.c +[armeabi-v7a] SharedLibrary : liblorie.so diff --git a/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_mini.json b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_mini.json index 7fc41a0..f659c7a 100644 --- a/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_mini.json +++ b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_mini.json @@ -1,16 +1,23 @@ { "buildFiles": [ - "/home/twaik/WTermux/app/src/main/jni/Android.mk" + "/home/twaik/WTermux/app/src/main/jni/Android.mk", + "/home/twaik/WTermux/app/src/main/jni/Application.mk" ], "cleanCommands": [ - "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk APP_ABI\u003darmeabi-v7a NDK_ALL_ABIS\u003darmeabi-v7a NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib clean" + "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darmeabi-v7a NDK_ALL_ABIS\u003darmeabi-v7a NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib clean" ], "libraries": { "lorie-debug-armeabi-v7a": { "artifactName": "lorie", - "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk APP_ABI\u003darmeabi-v7a NDK_ALL_ABIS\u003darmeabi-v7a NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/liblorie.so", + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darmeabi-v7a NDK_ALL_ABIS\u003darmeabi-v7a NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/liblorie.so", "abi": "armeabi-v7a", "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/liblorie.so" + }, + "xkbcommon-debug-armeabi-v7a": { + "artifactName": "xkbcommon", + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darmeabi-v7a NDK_ALL_ABIS\u003darmeabi-v7a NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/libxkbcommon.so", + "abi": "armeabi-v7a", + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/libxkbcommon.so" } } } \ No newline at end of file diff --git a/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_xkbcommon_armeabi-v7a.command.txt b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_xkbcommon_armeabi-v7a.command.txt new file mode 100644 index 0000000..ecd9eb0 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_xkbcommon_armeabi-v7a.command.txt @@ -0,0 +1,14 @@ +Executable : /opt/AndroidSdk/ndk-bundle/ndk-build +arguments : +NDK_PROJECT_PATH=null +APP_BUILD_SCRIPT=/home/twaik/WTermux/app/src/main/jni/Android.mk +NDK_APPLICATION_MK=/home/twaik/WTermux/app/src/main/jni/Application.mk +APP_ABI=armeabi-v7a +NDK_ALL_ABIS=armeabi-v7a +NDK_DEBUG=1 +APP_PLATFORM=android-19 +NDK_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj +NDK_LIBS_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib +/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/libxkbcommon.so +jvmArgs : + diff --git a/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_xkbcommon_armeabi-v7a.stderr.txt b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_xkbcommon_armeabi-v7a.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_xkbcommon_armeabi-v7a.stdout.txt b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_xkbcommon_armeabi-v7a.stdout.txt new file mode 100644 index 0000000..e4bd975 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_xkbcommon_armeabi-v7a.stdout.txt @@ -0,0 +1,5 @@ +Android NDK: WARNING:/home/twaik/WTermux/app/src/main/jni/lorie/Android.mk:lorie: non-system libraries in linker flags: -lwayland-server +Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES +Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the +Android NDK: current module +make: `/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/libxkbcommon.so' is up to date. diff --git a/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/ndkBuild_build_command.txt b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/ndkBuild_build_command.txt index 37ce4f6..827b605 100644 --- a/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/ndkBuild_build_command.txt +++ b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/ndkBuild_build_command.txt @@ -2,6 +2,7 @@ Executable : /opt/AndroidSdk/ndk-bundle/ndk-build arguments : NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=/home/twaik/WTermux/app/src/main/jni/Android.mk +NDK_APPLICATION_MK=/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI=armeabi-v7a NDK_ALL_ABIS=armeabi-v7a NDK_DEBUG=1 diff --git a/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/ndkBuild_build_output.txt b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/ndkBuild_build_output.txt index 994ec2a..57e1355 100644 --- a/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/ndkBuild_build_output.txt +++ b/app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/ndkBuild_build_output.txt @@ -1,3 +1,7 @@ +Android NDK: WARNING:/home/twaik/WTermux/app/src/main/jni/lorie/Android.mk:lorie: non-system libraries in linker flags: -lwayland-server +Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES +Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the +Android NDK: current module rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/armeabi-v7a/* rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/armeabi-v7a/gdbserver rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/armeabi-v7a/gdb.setup @@ -6,35 +10,121 @@ echo [armeabi-v7a] "Gdbserver ": "[arm-linux-androideabi] /home/twaik/WTerm install -p /opt/AndroidSdk/ndk-bundle/prebuilt/android-arm/gdbserver/gdbserver /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/armeabi-v7a/gdbserver echo [armeabi-v7a] "Gdbsetup ": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/armeabi-v7a/gdb.setup" echo "set solib-search-path /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a" > /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/armeabi-v7a/gdb.setup -echo "directory /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot /home/twaik/WTermux/app/src/main/jni/prebuilt /home/twaik/WTermux/app/src/main/jni/prebuilt/include /home/twaik/WTermux/app/src/main/jni/lorie /opt/AndroidSdk/ndk-bundle/sources/cxx-stl/system" >> /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/armeabi-v7a/gdb.setup -mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a -echo [armeabi-v7a] "Prebuilt ": "libandroid-support.so <= /home/twaik/WTermux/app/src/main/jni/prebuilt/armeabi-v7a/" -cp -f /home/twaik/WTermux/app/src/main/jni/prebuilt/armeabi-v7a/libandroid-support.so /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/libandroid-support.so -echo [armeabi-v7a] "Install ": "libandroid-support.so => /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/armeabi-v7a/libandroid-support.so" -install -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/libandroid-support.so /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/armeabi-v7a/libandroid-support.so -/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-strip --strip-unneeded /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/armeabi-v7a/libandroid-support.so -echo [armeabi-v7a] "Prebuilt ": "libffi.so <= /home/twaik/WTermux/app/src/main/jni/prebuilt/armeabi-v7a/" -cp -f /home/twaik/WTermux/app/src/main/jni/prebuilt/armeabi-v7a/libffi.so /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/libffi.so -echo [armeabi-v7a] "Install ": "libffi.so => /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/armeabi-v7a/libffi.so" -install -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/libffi.so /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/armeabi-v7a/libffi.so -/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-strip --strip-unneeded /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/armeabi-v7a/libffi.so +echo "directory /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot /home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include /opt/AndroidSdk/ndk-bundle/sources/cxx-stl/system /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src" >> /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/armeabi-v7a/gdb.setup mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/lorie echo [armeabi-v7a] "Compile thumb ": "lorie <= main.c" rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/lorie/main.o -/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/lorie/main.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/main.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/lorie/main.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/lorie/main.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/main.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/lorie/main.o echo [armeabi-v7a] "Compile thumb ": "lorie <= backend-android.c" rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/lorie/backend-android.o -/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/lorie/backend-android.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/backend-android.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/lorie/backend-android.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/lorie/backend-android.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/backend-android.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/lorie/backend-android.o echo [armeabi-v7a] "Compile thumb ": "lorie <= renderer.c" rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/lorie/renderer.o -/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/lorie/renderer.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/renderer.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/lorie/renderer.o -echo [armeabi-v7a] "Prebuilt ": "libwayland-server.so <= /home/twaik/WTermux/app/src/main/jni/prebuilt/armeabi-v7a/" -cp -f /home/twaik/WTermux/app/src/main/jni/prebuilt/armeabi-v7a/libwayland-server.so /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/libwayland-server.so +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/lorie/renderer.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/renderer.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/lorie/renderer.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a echo [armeabi-v7a] "SharedLibrary ": "liblorie.so" -/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -Wl,-soname,liblorie.so -shared /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/lorie/main.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/lorie/backend-android.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/lorie/renderer.o -lgcc -Wl,--exclude-libs,libgcc.a -latomic -Wl,--exclude-libs,libatomic.a /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/libwayland-server.so -target armv7-none-linux-androideabi19 -no-canonical-prefixes -Wl,--build-id -stdlib=libstdc++ -Wl,--no-undefined -Wl,-z,noexecstack -Wl,--warn-shared-textrel -Wl,--fatal-warnings -lEGL -lGLESv2 -llog -lc -lm -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/liblorie.so +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -Wl,-soname,liblorie.so -shared /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/lorie/main.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/lorie/backend-android.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/lorie/renderer.o -lgcc -Wl,--exclude-libs,libgcc.a -latomic -Wl,--exclude-libs,libatomic.a -target armv7-none-linux-androideabi19 -no-canonical-prefixes -L/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/armeabi-v7a -lwayland-server -Wl,--build-id -stdlib=libstdc++ -Wl,--no-undefined -Wl,-z,noexecstack -Wl,--warn-shared-textrel -Wl,--fatal-warnings -lEGL -lGLESv2 -llog -landroid -lc -lm -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/liblorie.so echo [armeabi-v7a] "Install ": "liblorie.so => /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/armeabi-v7a/liblorie.so" install -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/liblorie.so /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/armeabi-v7a/liblorie.so /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-strip --strip-unneeded /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/armeabi-v7a/liblorie.so -echo [armeabi-v7a] "Install ": "libwayland-server.so => /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/armeabi-v7a/libwayland-server.so" -install -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/libwayland-server.so /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/armeabi-v7a/libwayland-server.so -/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-strip --strip-unneeded /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/armeabi-v7a/libwayland-server.so +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/compose +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= parser.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/compose/parser.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/compose/parser.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/compose/parser.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= paths.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/compose/paths.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/compose/paths.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/compose/paths.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= state.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/compose/state.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/compose/state.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/compose/state.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= table.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/compose/table.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/compose/table.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/compose/table.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= action.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/action.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/action.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/action.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= ast-build.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= compat.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/compat.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/compat.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/compat.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= expr.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/expr.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/expr.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/expr.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= include.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/include.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/include.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/include.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= keycodes.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= keymap.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= keymap-dump.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= keywords.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keywords.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keywords.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keywords.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= parser.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/parser.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/parser.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/parser.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= rules.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/rules.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/rules.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/rules.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= scanner.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/scanner.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/scanner.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/scanner.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= symbols.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/symbols.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/symbols.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/symbols.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= types.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/types.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/types.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/types.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= vmod.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/vmod.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/vmod.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/vmod.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= xkbcomp.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= atom.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/atom.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/atom.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/atom.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= context.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/context.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/context.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/context.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= context-priv.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/context-priv.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/context-priv.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/context-priv.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= keysym.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/keysym.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/keysym.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/keysym.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= keysym-utf.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/keysym-utf.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/keysym-utf.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/keysym-utf.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= keymap.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/keymap.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/keymap.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/keymap.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= keymap-priv.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/keymap-priv.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/keymap-priv.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/keymap-priv.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= state.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/state.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/state.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/state.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= text.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/text.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/text.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/text.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= utf8.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/utf8.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/utf8.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/utf8.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= utils.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/utils.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/utils.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/utils.o +echo [armeabi-v7a] "SharedLibrary ": "libxkbcommon.so" +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -Wl,-soname,libxkbcommon.so -shared /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/compose/parser.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/compose/paths.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/compose/state.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/compose/table.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/action.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/compat.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/expr.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/include.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keywords.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/parser.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/rules.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/scanner.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/symbols.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/types.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/vmod.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/atom.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/context.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/context-priv.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/keysym.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/keysym-utf.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/keymap.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/keymap-priv.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/state.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/text.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/utf8.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/objs-debug/xkbcommon/xkbcommon/src/utils.o -lgcc -Wl,--exclude-libs,libgcc.a -latomic -Wl,--exclude-libs,libatomic.a -target armv7-none-linux-androideabi19 -no-canonical-prefixes -Wl,--build-id -stdlib=libstdc++ -Wl,--no-undefined -Wl,-z,noexecstack -Wl,--warn-shared-textrel -Wl,--fatal-warnings -lc -lm -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/libxkbcommon.so +echo [armeabi-v7a] "Install ": "libxkbcommon.so => /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/armeabi-v7a/libxkbcommon.so" +install -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/libxkbcommon.so /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/armeabi-v7a/libxkbcommon.so +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-strip --strip-unneeded /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/armeabi-v7a/libxkbcommon.so diff --git a/app/.externalNativeBuild/ndkBuild/debug/x86/android_gradle_build.json b/app/.externalNativeBuild/ndkBuild/debug/x86/android_gradle_build.json new file mode 100644 index 0000000..ff69f62 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/x86/android_gradle_build.json @@ -0,0 +1,302 @@ +{ + "buildFiles": [ + "/home/twaik/WTermux/app/src/main/jni/Android.mk", + "/home/twaik/WTermux/app/src/main/jni/Application.mk" + ], + "cleanCommands": [ + "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86 NDK_ALL_ABIS\u003dx86 NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib clean" + ], + "libraries": { + "lorie-debug-x86": { + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86 NDK_ALL_ABIS\u003dx86 NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/liblorie.so", + "toolchain": "toolchain-x86", + "abi": "x86", + "artifactName": "lorie", + "files": [ + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/lorie/backend-android.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/lorie/locale/android-utils.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/lorie/main.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/lorie/renderer.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + } + ], + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/liblorie.so" + }, + "xkbcommon-debug-x86": { + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86 NDK_ALL_ABIS\u003dx86 NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/libxkbcommon.so", + "toolchain": "toolchain-x86", + "abi": "x86", + "artifactName": "xkbcommon", + "files": [ + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + } + ], + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/libxkbcommon.so" + } + }, + "toolchains": { + "toolchain-x86": { + "cCompilerExecutable": "/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang" + } + }, + "cFileExtensions": [ + "c" + ], + "cppFileExtensions": [] +} \ No newline at end of file diff --git a/app/.externalNativeBuild/ndkBuild/debug/x86/android_gradle_build_mini.json b/app/.externalNativeBuild/ndkBuild/debug/x86/android_gradle_build_mini.json new file mode 100644 index 0000000..4d6899f --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/x86/android_gradle_build_mini.json @@ -0,0 +1,23 @@ +{ + "buildFiles": [ + "/home/twaik/WTermux/app/src/main/jni/Android.mk", + "/home/twaik/WTermux/app/src/main/jni/Application.mk" + ], + "cleanCommands": [ + "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86 NDK_ALL_ABIS\u003dx86 NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib clean" + ], + "libraries": { + "lorie-debug-x86": { + "artifactName": "lorie", + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86 NDK_ALL_ABIS\u003dx86 NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/liblorie.so", + "abi": "x86", + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/liblorie.so" + }, + "xkbcommon-debug-x86": { + "artifactName": "xkbcommon", + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86 NDK_ALL_ABIS\u003dx86 NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/libxkbcommon.so", + "abi": "x86", + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/libxkbcommon.so" + } + } +} \ No newline at end of file diff --git a/app/.externalNativeBuild/ndkBuild/debug/x86/ndkBuild_build_command.txt b/app/.externalNativeBuild/ndkBuild/debug/x86/ndkBuild_build_command.txt new file mode 100644 index 0000000..e89083d --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/x86/ndkBuild_build_command.txt @@ -0,0 +1,17 @@ +Executable : /opt/AndroidSdk/ndk-bundle/ndk-build +arguments : +NDK_PROJECT_PATH=null +APP_BUILD_SCRIPT=/home/twaik/WTermux/app/src/main/jni/Android.mk +NDK_APPLICATION_MK=/home/twaik/WTermux/app/src/main/jni/Application.mk +APP_ABI=x86 +NDK_ALL_ABIS=x86 +NDK_DEBUG=1 +APP_PLATFORM=android-19 +NDK_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj +NDK_LIBS_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib +APP_SHORT_COMMANDS=false +LOCAL_SHORT_COMMANDS=false +-B +-n +jvmArgs : + diff --git a/app/.externalNativeBuild/ndkBuild/debug/x86/ndkBuild_build_output.txt b/app/.externalNativeBuild/ndkBuild/debug/x86/ndkBuild_build_output.txt new file mode 100644 index 0000000..065f839 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/x86/ndkBuild_build_output.txt @@ -0,0 +1,134 @@ +Android NDK: WARNING:/home/twaik/WTermux/app/src/main/jni/lorie/Android.mk:lorie: non-system libraries in linker flags: -lwayland-server +Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES +Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the +Android NDK: current module +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86/* +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86/gdbserver +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86/gdb.setup +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86 +echo [x86] "Gdbserver ": "[i686-linux-android] /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86/gdbserver" +install -p /opt/AndroidSdk/ndk-bundle/prebuilt/android-x86/gdbserver/gdbserver /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86/gdbserver +echo [x86] "Gdbsetup ": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86/gdb.setup" +echo "set solib-search-path /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86" > /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86/gdb.setup +echo "directory /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot /home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ /opt/AndroidSdk/ndk-bundle/sources/cxx-stl/system /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src" >> /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86/gdb.setup +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/lorie +echo [x86] "Compile ": "lorie <= main.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/lorie/main.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/lorie/main.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/lorie/main.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/lorie/main.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/lorie/locale +echo [x86] "Compile ": "lorie <= android-utils.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/lorie/locale/android-utils.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/lorie/locale/android-utils.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/lorie/locale/android-utils.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/lorie/locale/android-utils.o +echo [x86] "Compile ": "lorie <= backend-android.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/lorie/backend-android.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/lorie/backend-android.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/lorie/backend-android.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/lorie/backend-android.o +echo [x86] "Compile ": "lorie <= renderer.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/lorie/renderer.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/lorie/renderer.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/lorie/renderer.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/lorie/renderer.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86 +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/compose +echo [x86] "Compile ": "xkbcommon <= parser.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/compose/parser.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/compose/parser.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/compose/parser.o +echo [x86] "Compile ": "xkbcommon <= paths.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/compose/paths.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/compose/paths.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/compose/paths.o +echo [x86] "Compile ": "xkbcommon <= state.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/compose/state.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/compose/state.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/compose/state.o +echo [x86] "Compile ": "xkbcommon <= table.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/compose/table.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/compose/table.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/compose/table.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp +echo [x86] "Compile ": "xkbcommon <= action.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/action.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/action.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/action.o +echo [x86] "Compile ": "xkbcommon <= ast-build.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o +echo [x86] "Compile ": "xkbcommon <= compat.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/compat.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/compat.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/compat.o +echo [x86] "Compile ": "xkbcommon <= expr.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/expr.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/expr.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/expr.o +echo [x86] "Compile ": "xkbcommon <= include.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/include.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/include.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/include.o +echo [x86] "Compile ": "xkbcommon <= keycodes.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o +echo [x86] "Compile ": "xkbcommon <= keymap.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap.o +echo [x86] "Compile ": "xkbcommon <= keymap-dump.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o +echo [x86] "Compile ": "xkbcommon <= keywords.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keywords.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keywords.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keywords.o +echo [x86] "Compile ": "xkbcommon <= parser.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/parser.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/parser.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/parser.o +echo [x86] "Compile ": "xkbcommon <= rules.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/rules.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/rules.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/rules.o +echo [x86] "Compile ": "xkbcommon <= scanner.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/scanner.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/scanner.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/scanner.o +echo [x86] "Compile ": "xkbcommon <= symbols.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/symbols.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/symbols.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/symbols.o +echo [x86] "Compile ": "xkbcommon <= types.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/types.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/types.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/types.o +echo [x86] "Compile ": "xkbcommon <= vmod.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/vmod.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/vmod.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/vmod.o +echo [x86] "Compile ": "xkbcommon <= xkbcomp.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src +echo [x86] "Compile ": "xkbcommon <= atom.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/atom.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/atom.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/atom.o +echo [x86] "Compile ": "xkbcommon <= context.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/context.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/context.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/context.o +echo [x86] "Compile ": "xkbcommon <= context-priv.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/context-priv.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/context-priv.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/context-priv.o +echo [x86] "Compile ": "xkbcommon <= keysym.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/keysym.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/keysym.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/keysym.o +echo [x86] "Compile ": "xkbcommon <= keysym-utf.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/keysym-utf.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/keysym-utf.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/keysym-utf.o +echo [x86] "Compile ": "xkbcommon <= keymap.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/keymap.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/keymap.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/keymap.o +echo [x86] "Compile ": "xkbcommon <= keymap-priv.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/keymap-priv.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/keymap-priv.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/keymap-priv.o +echo [x86] "Compile ": "xkbcommon <= state.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/state.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/state.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/state.o +echo [x86] "Compile ": "xkbcommon <= text.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/text.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/text.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/text.o +echo [x86] "Compile ": "xkbcommon <= utf8.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/utf8.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/utf8.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/utf8.o +echo [x86] "Compile ": "xkbcommon <= utils.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/utils.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/utils.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/utils.o +echo [x86] "SharedLibrary ": "libxkbcommon.so" +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -Wl,-soname,libxkbcommon.so -shared /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/compose/parser.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/compose/paths.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/compose/state.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/compose/table.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/action.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/compat.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/expr.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/include.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keywords.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/parser.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/rules.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/scanner.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/symbols.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/types.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/vmod.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/atom.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/context.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/context-priv.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/keysym.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/keysym-utf.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/keymap.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/keymap-priv.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/state.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/text.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/utf8.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/xkbcommon/xkbcommon/src/utils.o -lgcc -Wl,--exclude-libs,libgcc.a -latomic -Wl,--exclude-libs,libatomic.a -target i686-none-linux-android19 -no-canonical-prefixes -Wl,--build-id -stdlib=libstdc++ -Wl,--no-undefined -Wl,-z,noexecstack -Wl,--warn-shared-textrel -Wl,--fatal-warnings -lc -lm -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/libxkbcommon.so +echo [x86] "SharedLibrary ": "liblorie.so" +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -Wl,-soname,liblorie.so -shared /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/lorie/main.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/lorie/locale/android-utils.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/lorie/backend-android.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/lorie/renderer.o -lgcc -Wl,--exclude-libs,libgcc.a -latomic -Wl,--exclude-libs,libatomic.a /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/libxkbcommon.so -target i686-none-linux-android19 -no-canonical-prefixes -L/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/x86 -lwayland-server -Wl,--build-id -stdlib=libstdc++ -Wl,--no-undefined -Wl,-z,noexecstack -Wl,--warn-shared-textrel -Wl,--fatal-warnings -lEGL -lGLESv2 -llog -landroid -lc -lm -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/liblorie.so +echo [x86] "Install ": "liblorie.so => /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86/liblorie.so" +install -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/liblorie.so /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86/liblorie.so +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android-strip --strip-unneeded /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86/liblorie.so +echo [x86] "Install ": "libxkbcommon.so => /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86/libxkbcommon.so" +install -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86/libxkbcommon.so /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86/libxkbcommon.so +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android-strip --strip-unneeded /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86/libxkbcommon.so diff --git a/app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build.json b/app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build.json new file mode 100644 index 0000000..6ca2fd1 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build.json @@ -0,0 +1,298 @@ +{ + "buildFiles": [ + "/home/twaik/WTermux/app/src/main/jni/Android.mk", + "/home/twaik/WTermux/app/src/main/jni/Application.mk" + ], + "cleanCommands": [ + "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86_64 NDK_ALL_ABIS\u003dx86_64 NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib clean" + ], + "libraries": { + "xkbcommon-debug-x86_64": { + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86_64 NDK_ALL_ABIS\u003dx86_64 NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/libxkbcommon.a", + "toolchain": "toolchain-x86_64", + "abi": "x86_64", + "artifactName": "xkbcommon", + "files": [ + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + } + ], + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/libxkbcommon.a" + }, + "lorie-debug-x86_64": { + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86_64 NDK_ALL_ABIS\u003dx86_64 NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/liblorie.so", + "toolchain": "toolchain-x86_64", + "abi": "x86_64", + "artifactName": "lorie", + "files": [ + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/lorie/backend-android.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/lorie/main.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/lorie/renderer.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + } + ], + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/liblorie.so" + } + }, + "toolchains": { + "toolchain-x86_64": { + "cCompilerExecutable": "/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang" + } + }, + "cFileExtensions": [ + "c" + ], + "cppFileExtensions": [] +} \ No newline at end of file diff --git a/app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_jniLoader_x86_64.command.txt b/app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_jniLoader_x86_64.command.txt new file mode 100644 index 0000000..746ff32 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_jniLoader_x86_64.command.txt @@ -0,0 +1,14 @@ +Executable : /opt/AndroidSdk/ndk-bundle/ndk-build +arguments : +NDK_PROJECT_PATH=null +APP_BUILD_SCRIPT=/home/twaik/WTermux/app/src/main/jni/Android.mk +NDK_APPLICATION_MK=/home/twaik/WTermux/app/src/main/jni/Application.mk +APP_ABI=x86_64 +NDK_ALL_ABIS=x86_64 +NDK_DEBUG=1 +APP_PLATFORM=android-19 +NDK_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj +NDK_LIBS_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib +/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/libjniLoader.so +jvmArgs : + diff --git a/app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_jniLoader_x86_64.stderr.txt b/app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_jniLoader_x86_64.stderr.txt new file mode 100644 index 0000000..3317d5c --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_jniLoader_x86_64.stderr.txt @@ -0,0 +1,4 @@ +/home/twaik/WTermux/app/src/main/jni/jniLoader/dt_needed_main.c:206:8: warning: initializing 'char *' with an expression of type 'const char *' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers] + char *name = (*env)->GetStringUTFChars(env, name_, 0); + ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +1 warning generated. diff --git a/app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_jniLoader_x86_64.stdout.txt b/app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_jniLoader_x86_64.stdout.txt new file mode 100644 index 0000000..429fa27 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_jniLoader_x86_64.stdout.txt @@ -0,0 +1,2 @@ +[x86_64] Compile : jniLoader <= dt_needed_main.c +[x86_64] SharedLibrary : libjniLoader.so diff --git a/app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_lorie_x86_64.command.txt b/app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_lorie_x86_64.command.txt new file mode 100644 index 0000000..fc8280d --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_lorie_x86_64.command.txt @@ -0,0 +1,14 @@ +Executable : /opt/AndroidSdk/ndk-bundle/ndk-build +arguments : +NDK_PROJECT_PATH=null +APP_BUILD_SCRIPT=/home/twaik/WTermux/app/src/main/jni/Android.mk +NDK_APPLICATION_MK=/home/twaik/WTermux/app/src/main/jni/Application.mk +APP_ABI=x86_64 +NDK_ALL_ABIS=x86_64 +NDK_DEBUG=1 +APP_PLATFORM=android-19 +NDK_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj +NDK_LIBS_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib +/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/liblorie.so +jvmArgs : + diff --git a/app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_lorie_x86_64.stderr.txt b/app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_lorie_x86_64.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_lorie_x86_64.stdout.txt b/app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_lorie_x86_64.stdout.txt new file mode 100644 index 0000000..3bc5e7e --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_lorie_x86_64.stdout.txt @@ -0,0 +1,40 @@ +Android NDK: WARNING:/home/twaik/WTermux/app/src/main/jni/lorie/Android.mk:lorie: non-system libraries in linker flags: -lwayland-server +Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES +Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the +Android NDK: current module +[x86_64] Compile : lorie <= main.c +[x86_64] Compile : lorie <= backend-android.c +[x86_64] Compile : lorie <= renderer.c +[x86_64] Compile : xkbcommon <= parser.c +[x86_64] Compile : xkbcommon <= paths.c +[x86_64] Compile : xkbcommon <= state.c +[x86_64] Compile : xkbcommon <= table.c +[x86_64] Compile : xkbcommon <= action.c +[x86_64] Compile : xkbcommon <= ast-build.c +[x86_64] Compile : xkbcommon <= compat.c +[x86_64] Compile : xkbcommon <= expr.c +[x86_64] Compile : xkbcommon <= include.c +[x86_64] Compile : xkbcommon <= keycodes.c +[x86_64] Compile : xkbcommon <= keymap.c +[x86_64] Compile : xkbcommon <= keymap-dump.c +[x86_64] Compile : xkbcommon <= keywords.c +[x86_64] Compile : xkbcommon <= parser.c +[x86_64] Compile : xkbcommon <= rules.c +[x86_64] Compile : xkbcommon <= scanner.c +[x86_64] Compile : xkbcommon <= symbols.c +[x86_64] Compile : xkbcommon <= types.c +[x86_64] Compile : xkbcommon <= vmod.c +[x86_64] Compile : xkbcommon <= xkbcomp.c +[x86_64] Compile : xkbcommon <= atom.c +[x86_64] Compile : xkbcommon <= context.c +[x86_64] Compile : xkbcommon <= context-priv.c +[x86_64] Compile : xkbcommon <= keysym.c +[x86_64] Compile : xkbcommon <= keysym-utf.c +[x86_64] Compile : xkbcommon <= keymap.c +[x86_64] Compile : xkbcommon <= keymap-priv.c +[x86_64] Compile : xkbcommon <= state.c +[x86_64] Compile : xkbcommon <= text.c +[x86_64] Compile : xkbcommon <= utf8.c +[x86_64] Compile : xkbcommon <= utils.c +[x86_64] SharedLibrary : libxkbcommon.so +[x86_64] SharedLibrary : liblorie.so diff --git a/app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_mini.json b/app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_mini.json new file mode 100644 index 0000000..bcb7a31 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/x86_64/android_gradle_build_mini.json @@ -0,0 +1,23 @@ +{ + "buildFiles": [ + "/home/twaik/WTermux/app/src/main/jni/Android.mk", + "/home/twaik/WTermux/app/src/main/jni/Application.mk" + ], + "cleanCommands": [ + "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86_64 NDK_ALL_ABIS\u003dx86_64 NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib clean" + ], + "libraries": { + "xkbcommon-debug-x86_64": { + "artifactName": "xkbcommon", + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86_64 NDK_ALL_ABIS\u003dx86_64 NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/libxkbcommon.a", + "abi": "x86_64", + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/libxkbcommon.a" + }, + "lorie-debug-x86_64": { + "artifactName": "lorie", + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86_64 NDK_ALL_ABIS\u003dx86_64 NDK_DEBUG\u003d1 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/liblorie.so", + "abi": "x86_64", + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/liblorie.so" + } + } +} \ No newline at end of file diff --git a/app/.externalNativeBuild/ndkBuild/debug/x86_64/ndkBuild_build_command.txt b/app/.externalNativeBuild/ndkBuild/debug/x86_64/ndkBuild_build_command.txt new file mode 100644 index 0000000..851c67e --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/x86_64/ndkBuild_build_command.txt @@ -0,0 +1,17 @@ +Executable : /opt/AndroidSdk/ndk-bundle/ndk-build +arguments : +NDK_PROJECT_PATH=null +APP_BUILD_SCRIPT=/home/twaik/WTermux/app/src/main/jni/Android.mk +NDK_APPLICATION_MK=/home/twaik/WTermux/app/src/main/jni/Application.mk +APP_ABI=x86_64 +NDK_ALL_ABIS=x86_64 +NDK_DEBUG=1 +APP_PLATFORM=android-19 +NDK_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj +NDK_LIBS_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib +APP_SHORT_COMMANDS=false +LOCAL_SHORT_COMMANDS=false +-B +-n +jvmArgs : + diff --git a/app/.externalNativeBuild/ndkBuild/debug/x86_64/ndkBuild_build_output.txt b/app/.externalNativeBuild/ndkBuild/debug/x86_64/ndkBuild_build_output.txt new file mode 100644 index 0000000..d4388b7 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/debug/x86_64/ndkBuild_build_output.txt @@ -0,0 +1,128 @@ +Android NDK: WARNING:/home/twaik/WTermux/app/src/main/jni/lorie/Android.mk:lorie: non-system libraries in linker flags: -lwayland-server +Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES +Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the +Android NDK: current module +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86_64/* +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86_64/gdbserver +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86_64/gdb.setup +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86_64 +echo [x86_64] "Gdbserver ": "[x86_64-linux-android] /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86_64/gdbserver" +install -p /opt/AndroidSdk/ndk-bundle/prebuilt/android-x86_64/gdbserver/gdbserver /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86_64/gdbserver +echo [x86_64] "Gdbsetup ": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86_64/gdb.setup" +echo "set solib-search-path /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64" > /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86_64/gdb.setup +echo "directory /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot /home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ /opt/AndroidSdk/ndk-bundle/sources/cxx-stl/system /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src" >> /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86_64/gdb.setup +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/lorie +echo [x86_64] "Compile ": "lorie <= main.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/lorie/main.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/lorie/main.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/main.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/lorie/main.o +echo [x86_64] "Compile ": "lorie <= backend-android.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/lorie/backend-android.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/lorie/backend-android.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/backend-android.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/lorie/backend-android.o +echo [x86_64] "Compile ": "lorie <= renderer.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/lorie/renderer.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/lorie/renderer.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/renderer.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/lorie/renderer.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64 +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/compose +echo [x86_64] "Compile ": "xkbcommon <= parser.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/compose/parser.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/compose/parser.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/compose/parser.o +echo [x86_64] "Compile ": "xkbcommon <= paths.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/compose/paths.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/compose/paths.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/compose/paths.o +echo [x86_64] "Compile ": "xkbcommon <= state.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/compose/state.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/compose/state.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/compose/state.o +echo [x86_64] "Compile ": "xkbcommon <= table.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/compose/table.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/compose/table.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/compose/table.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp +echo [x86_64] "Compile ": "xkbcommon <= action.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/action.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/action.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/action.o +echo [x86_64] "Compile ": "xkbcommon <= ast-build.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o +echo [x86_64] "Compile ": "xkbcommon <= compat.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/compat.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/compat.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/compat.o +echo [x86_64] "Compile ": "xkbcommon <= expr.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/expr.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/expr.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/expr.o +echo [x86_64] "Compile ": "xkbcommon <= include.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/include.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/include.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/include.o +echo [x86_64] "Compile ": "xkbcommon <= keycodes.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o +echo [x86_64] "Compile ": "xkbcommon <= keymap.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap.o +echo [x86_64] "Compile ": "xkbcommon <= keymap-dump.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o +echo [x86_64] "Compile ": "xkbcommon <= keywords.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keywords.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keywords.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keywords.o +echo [x86_64] "Compile ": "xkbcommon <= parser.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/parser.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/parser.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/parser.o +echo [x86_64] "Compile ": "xkbcommon <= rules.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/rules.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/rules.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/rules.o +echo [x86_64] "Compile ": "xkbcommon <= scanner.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/scanner.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/scanner.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/scanner.o +echo [x86_64] "Compile ": "xkbcommon <= symbols.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/symbols.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/symbols.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/symbols.o +echo [x86_64] "Compile ": "xkbcommon <= types.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/types.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/types.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/types.o +echo [x86_64] "Compile ": "xkbcommon <= vmod.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/vmod.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/vmod.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/vmod.o +echo [x86_64] "Compile ": "xkbcommon <= xkbcomp.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src +echo [x86_64] "Compile ": "xkbcommon <= atom.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/atom.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/atom.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/atom.o +echo [x86_64] "Compile ": "xkbcommon <= context.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/context.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/context.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/context.o +echo [x86_64] "Compile ": "xkbcommon <= context-priv.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/context-priv.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/context-priv.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/context-priv.o +echo [x86_64] "Compile ": "xkbcommon <= keysym.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/keysym.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/keysym.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/keysym.o +echo [x86_64] "Compile ": "xkbcommon <= keysym-utf.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/keysym-utf.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/keysym-utf.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/keysym-utf.o +echo [x86_64] "Compile ": "xkbcommon <= keymap.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/keymap.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/keymap.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/keymap.o +echo [x86_64] "Compile ": "xkbcommon <= keymap-priv.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/keymap-priv.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/keymap-priv.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/keymap-priv.o +echo [x86_64] "Compile ": "xkbcommon <= state.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/state.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/state.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/state.o +echo [x86_64] "Compile ": "xkbcommon <= text.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/text.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/text.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/text.o +echo [x86_64] "Compile ": "xkbcommon <= utf8.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/utf8.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/utf8.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/utf8.o +echo [x86_64] "Compile ": "xkbcommon <= utils.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/utils.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/utils.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O0 -UNDEBUG -fno-limit-debug-info -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/utils.o +echo [x86_64] "StaticLibrary ": "libxkbcommon.a" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/libxkbcommon.a +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android-ar crsD /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/libxkbcommon.a /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/compose/parser.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/compose/paths.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/compose/state.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/compose/table.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/action.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/compat.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/expr.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/include.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/keywords.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/parser.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/rules.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/scanner.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/symbols.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/types.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/vmod.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/atom.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/context.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/context-priv.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/keysym.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/keysym-utf.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/keymap.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/keymap-priv.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/state.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/text.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/utf8.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/xkbcommon/xkbcommon/src/utils.o +echo [x86_64] "SharedLibrary ": "liblorie.so" +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -Wl,-soname,liblorie.so -shared /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/lorie/main.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/lorie/backend-android.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs-debug/lorie/renderer.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/libxkbcommon.a -lgcc -Wl,--exclude-libs,libgcc.a -latomic -Wl,--exclude-libs,libatomic.a -target x86_64-none-linux-android21 -no-canonical-prefixes -L/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/x86_64 -lwayland-server -Wl,--build-id -stdlib=libstdc++ -Wl,--no-undefined -Wl,-z,noexecstack -Wl,--warn-shared-textrel -Wl,--fatal-warnings -lEGL -lGLESv2 -llog -landroid -lc -lm -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/liblorie.so +echo [x86_64] "Install ": "liblorie.so => /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86_64/liblorie.so" +install -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/liblorie.so /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86_64/liblorie.so +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android-strip --strip-unneeded /home/twaik/WTermux/app/build/intermediates/ndkBuild/debug/lib/x86_64/liblorie.so diff --git a/app/.externalNativeBuild/ndkBuild/release/arm64-v8a/android_gradle_build.json b/app/.externalNativeBuild/ndkBuild/release/arm64-v8a/android_gradle_build.json new file mode 100644 index 0000000..8744547 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/release/arm64-v8a/android_gradle_build.json @@ -0,0 +1,298 @@ +{ + "buildFiles": [ + "/home/twaik/WTermux/app/src/main/jni/Android.mk", + "/home/twaik/WTermux/app/src/main/jni/Application.mk" + ], + "cleanCommands": [ + "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darm64-v8a NDK_ALL_ABIS\u003darm64-v8a NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib clean" + ], + "libraries": { + "xkbcommon-release-arm64-v8a": { + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darm64-v8a NDK_ALL_ABIS\u003darm64-v8a NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/libxkbcommon.a", + "toolchain": "toolchain-arm64-v8a", + "abi": "arm64-v8a", + "artifactName": "xkbcommon", + "files": [ + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + } + ], + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/libxkbcommon.a" + }, + "lorie-release-arm64-v8a": { + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darm64-v8a NDK_ALL_ABIS\u003darm64-v8a NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/liblorie.so", + "toolchain": "toolchain-arm64-v8a", + "abi": "arm64-v8a", + "artifactName": "lorie", + "files": [ + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/lorie/backend-android.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/lorie/main.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/lorie/renderer.c", + "flags": "-target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + } + ], + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/liblorie.so" + } + }, + "toolchains": { + "toolchain-arm64-v8a": { + "cCompilerExecutable": "/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang" + } + }, + "cFileExtensions": [ + "c" + ], + "cppFileExtensions": [] +} \ No newline at end of file diff --git a/app/.externalNativeBuild/ndkBuild/release/arm64-v8a/android_gradle_build_mini.json b/app/.externalNativeBuild/ndkBuild/release/arm64-v8a/android_gradle_build_mini.json new file mode 100644 index 0000000..bda3b33 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/release/arm64-v8a/android_gradle_build_mini.json @@ -0,0 +1,23 @@ +{ + "buildFiles": [ + "/home/twaik/WTermux/app/src/main/jni/Android.mk", + "/home/twaik/WTermux/app/src/main/jni/Application.mk" + ], + "cleanCommands": [ + "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darm64-v8a NDK_ALL_ABIS\u003darm64-v8a NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib clean" + ], + "libraries": { + "xkbcommon-release-arm64-v8a": { + "artifactName": "xkbcommon", + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darm64-v8a NDK_ALL_ABIS\u003darm64-v8a NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/libxkbcommon.a", + "abi": "arm64-v8a", + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/libxkbcommon.a" + }, + "lorie-release-arm64-v8a": { + "artifactName": "lorie", + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darm64-v8a NDK_ALL_ABIS\u003darm64-v8a NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/liblorie.so", + "abi": "arm64-v8a", + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/liblorie.so" + } + } +} \ No newline at end of file diff --git a/app/.externalNativeBuild/ndkBuild/release/arm64-v8a/ndkBuild_build_command.txt b/app/.externalNativeBuild/ndkBuild/release/arm64-v8a/ndkBuild_build_command.txt new file mode 100644 index 0000000..6b1169f --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/release/arm64-v8a/ndkBuild_build_command.txt @@ -0,0 +1,17 @@ +Executable : /opt/AndroidSdk/ndk-bundle/ndk-build +arguments : +NDK_PROJECT_PATH=null +APP_BUILD_SCRIPT=/home/twaik/WTermux/app/src/main/jni/Android.mk +NDK_APPLICATION_MK=/home/twaik/WTermux/app/src/main/jni/Application.mk +APP_ABI=arm64-v8a +NDK_ALL_ABIS=arm64-v8a +NDK_DEBUG=0 +APP_PLATFORM=android-19 +NDK_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj +NDK_LIBS_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib +APP_SHORT_COMMANDS=false +LOCAL_SHORT_COMMANDS=false +-B +-n +jvmArgs : + diff --git a/app/.externalNativeBuild/ndkBuild/release/arm64-v8a/ndkBuild_build_output.txt b/app/.externalNativeBuild/ndkBuild/release/arm64-v8a/ndkBuild_build_output.txt new file mode 100644 index 0000000..1ab647f --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/release/arm64-v8a/ndkBuild_build_output.txt @@ -0,0 +1,123 @@ +Android NDK: WARNING:/home/twaik/WTermux/app/src/main/jni/lorie/Android.mk:lorie: non-system libraries in linker flags: -lwayland-server +Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES +Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the +Android NDK: current module +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/arm64-v8a/* +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/arm64-v8a/gdbserver +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/arm64-v8a/gdb.setup +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/lorie +echo [arm64-v8a] "Compile ": "lorie <= main.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/lorie/main.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/lorie/main.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/main.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/lorie/main.o +echo [arm64-v8a] "Compile ": "lorie <= backend-android.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/lorie/backend-android.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/lorie/backend-android.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/backend-android.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/lorie/backend-android.o +echo [arm64-v8a] "Compile ": "lorie <= renderer.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/lorie/renderer.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/lorie/renderer.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/renderer.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/lorie/renderer.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/compose +echo [arm64-v8a] "Compile ": "xkbcommon <= parser.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/compose/parser.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/compose/parser.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/compose/parser.o +echo [arm64-v8a] "Compile ": "xkbcommon <= paths.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/compose/paths.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/compose/paths.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/compose/paths.o +echo [arm64-v8a] "Compile ": "xkbcommon <= state.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/compose/state.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/compose/state.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/compose/state.o +echo [arm64-v8a] "Compile ": "xkbcommon <= table.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/compose/table.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/compose/table.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/compose/table.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp +echo [arm64-v8a] "Compile ": "xkbcommon <= action.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/action.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/action.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/action.o +echo [arm64-v8a] "Compile ": "xkbcommon <= ast-build.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o +echo [arm64-v8a] "Compile ": "xkbcommon <= compat.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/compat.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/compat.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/compat.o +echo [arm64-v8a] "Compile ": "xkbcommon <= expr.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/expr.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/expr.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/expr.o +echo [arm64-v8a] "Compile ": "xkbcommon <= include.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/include.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/include.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/include.o +echo [arm64-v8a] "Compile ": "xkbcommon <= keycodes.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o +echo [arm64-v8a] "Compile ": "xkbcommon <= keymap.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap.o +echo [arm64-v8a] "Compile ": "xkbcommon <= keymap-dump.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o +echo [arm64-v8a] "Compile ": "xkbcommon <= keywords.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/keywords.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/keywords.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/keywords.o +echo [arm64-v8a] "Compile ": "xkbcommon <= parser.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/parser.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/parser.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/parser.o +echo [arm64-v8a] "Compile ": "xkbcommon <= rules.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/rules.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/rules.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/rules.o +echo [arm64-v8a] "Compile ": "xkbcommon <= scanner.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/scanner.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/scanner.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/scanner.o +echo [arm64-v8a] "Compile ": "xkbcommon <= symbols.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/symbols.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/symbols.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/symbols.o +echo [arm64-v8a] "Compile ": "xkbcommon <= types.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/types.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/types.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/types.o +echo [arm64-v8a] "Compile ": "xkbcommon <= vmod.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/vmod.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/vmod.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/vmod.o +echo [arm64-v8a] "Compile ": "xkbcommon <= xkbcomp.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src +echo [arm64-v8a] "Compile ": "xkbcommon <= atom.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/atom.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/atom.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/atom.o +echo [arm64-v8a] "Compile ": "xkbcommon <= context.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/context.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/context.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/context.o +echo [arm64-v8a] "Compile ": "xkbcommon <= context-priv.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/context-priv.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/context-priv.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/context-priv.o +echo [arm64-v8a] "Compile ": "xkbcommon <= keysym.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/keysym.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/keysym.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/keysym.o +echo [arm64-v8a] "Compile ": "xkbcommon <= keysym-utf.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/keysym-utf.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/keysym-utf.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/keysym-utf.o +echo [arm64-v8a] "Compile ": "xkbcommon <= keymap.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/keymap.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/keymap.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/keymap.o +echo [arm64-v8a] "Compile ": "xkbcommon <= keymap-priv.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/keymap-priv.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/keymap-priv.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/keymap-priv.o +echo [arm64-v8a] "Compile ": "xkbcommon <= state.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/state.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/state.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/state.o +echo [arm64-v8a] "Compile ": "xkbcommon <= text.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/text.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/text.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/text.o +echo [arm64-v8a] "Compile ": "xkbcommon <= utf8.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/utf8.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/utf8.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/utf8.o +echo [arm64-v8a] "Compile ": "xkbcommon <= utils.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/utils.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/utils.o.d -target aarch64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/utils.o +echo [arm64-v8a] "StaticLibrary ": "libxkbcommon.a" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/libxkbcommon.a +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar crsD /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/libxkbcommon.a /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/compose/parser.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/compose/paths.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/compose/state.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/compose/table.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/action.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/compat.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/expr.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/include.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/keywords.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/parser.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/rules.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/scanner.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/symbols.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/types.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/vmod.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/atom.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/context.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/context-priv.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/keysym.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/keysym-utf.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/keymap.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/keymap-priv.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/state.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/text.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/utf8.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/xkbcommon/xkbcommon/src/utils.o +echo [arm64-v8a] "SharedLibrary ": "liblorie.so" +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -Wl,-soname,liblorie.so -shared /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/lorie/main.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/lorie/backend-android.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/lorie/renderer.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/libxkbcommon.a -lgcc -Wl,--exclude-libs,libgcc.a -latomic -Wl,--exclude-libs,libatomic.a -target aarch64-none-linux-android21 -no-canonical-prefixes -L/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/arm64-v8a -lwayland-server -Wl,--build-id -stdlib=libstdc++ -Wl,--no-undefined -Wl,-z,noexecstack -Wl,--warn-shared-textrel -Wl,--fatal-warnings -lEGL -lGLESv2 -llog -landroid -lc -lm -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/liblorie.so +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/arm64-v8a +echo [arm64-v8a] "Install ": "liblorie.so => /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/arm64-v8a/liblorie.so" +install -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/liblorie.so /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/arm64-v8a/liblorie.so +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-strip --strip-unneeded /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/arm64-v8a/liblorie.so diff --git a/app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/android_gradle_build.json b/app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/android_gradle_build.json index 0d7d111..9200498 100644 --- a/app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/android_gradle_build.json +++ b/app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/android_gradle_build.json @@ -1,31 +1,289 @@ { "buildFiles": [ - "/home/twaik/WTermux/app/src/main/jni/Android.mk" + "/home/twaik/WTermux/app/src/main/jni/Android.mk", + "/home/twaik/WTermux/app/src/main/jni/Application.mk" ], "cleanCommands": [ - "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk APP_ABI\u003darmeabi-v7a NDK_ALL_ABIS\u003darmeabi-v7a NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib clean" + "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darmeabi-v7a NDK_ALL_ABIS\u003darmeabi-v7a NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib clean" ], "libraries": { "lorie-release-armeabi-v7a": { - "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk APP_ABI\u003darmeabi-v7a NDK_ALL_ABIS\u003darmeabi-v7a NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/liblorie.so", + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darmeabi-v7a NDK_ALL_ABIS\u003darmeabi-v7a NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/liblorie.so", "toolchain": "toolchain-armeabi-v7a", "abi": "armeabi-v7a", "artifactName": "lorie", "files": [ + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, { "src": "/home/twaik/WTermux/app/src/main/jni/lorie/backend-android.c", - "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" }, { "src": "/home/twaik/WTermux/app/src/main/jni/lorie/main.c", - "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" }, { "src": "/home/twaik/WTermux/app/src/main/jni/lorie/renderer.c", - "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" } ], "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/liblorie.so" + }, + "xkbcommon-release-armeabi-v7a": { + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darmeabi-v7a NDK_ALL_ABIS\u003darmeabi-v7a NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/libxkbcommon.a", + "toolchain": "toolchain-armeabi-v7a", + "abi": "armeabi-v7a", + "artifactName": "xkbcommon", + "files": [ + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c", + "flags": "-target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march\u003darmv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + } + ], + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/libxkbcommon.a" } }, "toolchains": { diff --git a/app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/android_gradle_build_mini.json b/app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/android_gradle_build_mini.json index 6b592a0..788a3ff 100644 --- a/app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/android_gradle_build_mini.json +++ b/app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/android_gradle_build_mini.json @@ -1,16 +1,23 @@ { "buildFiles": [ - "/home/twaik/WTermux/app/src/main/jni/Android.mk" + "/home/twaik/WTermux/app/src/main/jni/Android.mk", + "/home/twaik/WTermux/app/src/main/jni/Application.mk" ], "cleanCommands": [ - "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk APP_ABI\u003darmeabi-v7a NDK_ALL_ABIS\u003darmeabi-v7a NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib clean" + "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darmeabi-v7a NDK_ALL_ABIS\u003darmeabi-v7a NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib clean" ], "libraries": { "lorie-release-armeabi-v7a": { "artifactName": "lorie", - "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk APP_ABI\u003darmeabi-v7a NDK_ALL_ABIS\u003darmeabi-v7a NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/liblorie.so", + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darmeabi-v7a NDK_ALL_ABIS\u003darmeabi-v7a NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/liblorie.so", "abi": "armeabi-v7a", "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/liblorie.so" + }, + "xkbcommon-release-armeabi-v7a": { + "artifactName": "xkbcommon", + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003darmeabi-v7a NDK_ALL_ABIS\u003darmeabi-v7a NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/libxkbcommon.a", + "abi": "armeabi-v7a", + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/libxkbcommon.a" } } } \ No newline at end of file diff --git a/app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/ndkBuild_build_command.txt b/app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/ndkBuild_build_command.txt index 0a8608a..6ae0d1f 100644 --- a/app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/ndkBuild_build_command.txt +++ b/app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/ndkBuild_build_command.txt @@ -2,6 +2,7 @@ Executable : /opt/AndroidSdk/ndk-bundle/ndk-build arguments : NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=/home/twaik/WTermux/app/src/main/jni/Android.mk +NDK_APPLICATION_MK=/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI=armeabi-v7a NDK_ALL_ABIS=armeabi-v7a NDK_DEBUG=0 diff --git a/app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/ndkBuild_build_output.txt b/app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/ndkBuild_build_output.txt index 9a8fb2e..4e562f1 100644 --- a/app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/ndkBuild_build_output.txt +++ b/app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/ndkBuild_build_output.txt @@ -1,35 +1,123 @@ +Android NDK: WARNING:/home/twaik/WTermux/app/src/main/jni/lorie/Android.mk:lorie: non-system libraries in linker flags: -lwayland-server +Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES +Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the +Android NDK: current module rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/armeabi-v7a/* rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/armeabi-v7a/gdbserver rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/armeabi-v7a/gdb.setup -mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a -echo [armeabi-v7a] "Prebuilt ": "libandroid-support.so <= /home/twaik/WTermux/app/src/main/jni/prebuilt/armeabi-v7a/" -cp -f /home/twaik/WTermux/app/src/main/jni/prebuilt/armeabi-v7a/libandroid-support.so /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/libandroid-support.so -mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/armeabi-v7a -echo [armeabi-v7a] "Install ": "libandroid-support.so => /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/armeabi-v7a/libandroid-support.so" -install -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/libandroid-support.so /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/armeabi-v7a/libandroid-support.so -/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-strip --strip-unneeded /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/armeabi-v7a/libandroid-support.so -echo [armeabi-v7a] "Prebuilt ": "libffi.so <= /home/twaik/WTermux/app/src/main/jni/prebuilt/armeabi-v7a/" -cp -f /home/twaik/WTermux/app/src/main/jni/prebuilt/armeabi-v7a/libffi.so /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/libffi.so -echo [armeabi-v7a] "Install ": "libffi.so => /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/armeabi-v7a/libffi.so" -install -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/libffi.so /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/armeabi-v7a/libffi.so -/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-strip --strip-unneeded /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/armeabi-v7a/libffi.so mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/lorie echo [armeabi-v7a] "Compile thumb ": "lorie <= main.c" rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/lorie/main.o -/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/lorie/main.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/main.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/lorie/main.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/lorie/main.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/main.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/lorie/main.o echo [armeabi-v7a] "Compile thumb ": "lorie <= backend-android.c" rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/lorie/backend-android.o -/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/lorie/backend-android.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/backend-android.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/lorie/backend-android.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/lorie/backend-android.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/backend-android.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/lorie/backend-android.o echo [armeabi-v7a] "Compile thumb ": "lorie <= renderer.c" rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/lorie/renderer.o -/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/lorie/renderer.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/renderer.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/lorie/renderer.o -echo [armeabi-v7a] "Prebuilt ": "libwayland-server.so <= /home/twaik/WTermux/app/src/main/jni/prebuilt/armeabi-v7a/" -cp -f /home/twaik/WTermux/app/src/main/jni/prebuilt/armeabi-v7a/libwayland-server.so /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/libwayland-server.so +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/lorie/renderer.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/renderer.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/lorie/renderer.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/compose +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= parser.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/compose/parser.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/compose/parser.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/compose/parser.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= paths.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/compose/paths.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/compose/paths.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/compose/paths.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= state.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/compose/state.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/compose/state.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/compose/state.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= table.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/compose/table.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/compose/table.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/compose/table.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= action.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/action.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/action.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/action.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= ast-build.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= compat.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/compat.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/compat.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/compat.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= expr.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/expr.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/expr.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/expr.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= include.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/include.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/include.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/include.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= keycodes.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= keymap.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= keymap-dump.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= keywords.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/keywords.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/keywords.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/keywords.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= parser.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/parser.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/parser.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/parser.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= rules.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/rules.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/rules.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/rules.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= scanner.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/scanner.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/scanner.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/scanner.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= symbols.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/symbols.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/symbols.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/symbols.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= types.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/types.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/types.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/types.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= vmod.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/vmod.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/vmod.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/vmod.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= xkbcomp.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= atom.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/atom.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/atom.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/atom.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= context.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/context.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/context.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/context.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= context-priv.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/context-priv.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/context-priv.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/context-priv.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= keysym.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/keysym.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/keysym.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/keysym.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= keysym-utf.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/keysym-utf.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/keysym-utf.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/keysym-utf.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= keymap.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/keymap.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/keymap.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/keymap.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= keymap-priv.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/keymap-priv.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/keymap-priv.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/keymap-priv.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= state.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/state.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/state.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/state.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= text.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/text.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/text.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/text.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= utf8.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/utf8.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/utf8.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/utf8.o +echo [armeabi-v7a] "Compile thumb ": "xkbcommon <= utils.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/utils.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/utils.o.d -target armv7-none-linux-androideabi19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fpic -march=armv7-a -mthumb -Oz -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/utils.o +echo [armeabi-v7a] "StaticLibrary ": "libxkbcommon.a" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/libxkbcommon.a +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar crsD /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/libxkbcommon.a /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/compose/parser.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/compose/paths.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/compose/state.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/compose/table.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/action.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/compat.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/expr.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/include.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/keywords.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/parser.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/rules.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/scanner.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/symbols.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/types.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/vmod.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/atom.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/context.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/context-priv.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/keysym.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/keysym-utf.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/keymap.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/keymap-priv.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/state.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/text.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/utf8.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/xkbcommon/xkbcommon/src/utils.o echo [armeabi-v7a] "SharedLibrary ": "liblorie.so" -/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -Wl,-soname,liblorie.so -shared /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/lorie/main.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/lorie/backend-android.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/lorie/renderer.o -lgcc -Wl,--exclude-libs,libgcc.a -latomic -Wl,--exclude-libs,libatomic.a /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/libwayland-server.so -target armv7-none-linux-androideabi19 -no-canonical-prefixes -Wl,--build-id -stdlib=libstdc++ -Wl,--no-undefined -Wl,-z,noexecstack -Wl,--warn-shared-textrel -Wl,--fatal-warnings -lEGL -lGLESv2 -llog -lc -lm -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/liblorie.so +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -Wl,-soname,liblorie.so -shared /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/lorie/main.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/lorie/backend-android.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/lorie/renderer.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/libxkbcommon.a -lgcc -Wl,--exclude-libs,libgcc.a -latomic -Wl,--exclude-libs,libatomic.a -target armv7-none-linux-androideabi19 -no-canonical-prefixes -L/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/armeabi-v7a -lwayland-server -Wl,--build-id -stdlib=libstdc++ -Wl,--no-undefined -Wl,-z,noexecstack -Wl,--warn-shared-textrel -Wl,--fatal-warnings -lEGL -lGLESv2 -llog -landroid -lc -lm -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/liblorie.so +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/armeabi-v7a echo [armeabi-v7a] "Install ": "liblorie.so => /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/armeabi-v7a/liblorie.so" install -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/liblorie.so /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/armeabi-v7a/liblorie.so /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-strip --strip-unneeded /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/armeabi-v7a/liblorie.so -echo [armeabi-v7a] "Install ": "libwayland-server.so => /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/armeabi-v7a/libwayland-server.so" -install -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/libwayland-server.so /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/armeabi-v7a/libwayland-server.so -/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-strip --strip-unneeded /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/armeabi-v7a/libwayland-server.so diff --git a/app/.externalNativeBuild/ndkBuild/release/x86/android_gradle_build.json b/app/.externalNativeBuild/ndkBuild/release/x86/android_gradle_build.json new file mode 100644 index 0000000..a3d77f0 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/release/x86/android_gradle_build.json @@ -0,0 +1,298 @@ +{ + "buildFiles": [ + "/home/twaik/WTermux/app/src/main/jni/Android.mk", + "/home/twaik/WTermux/app/src/main/jni/Application.mk" + ], + "cleanCommands": [ + "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86 NDK_ALL_ABIS\u003dx86 NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib clean" + ], + "libraries": { + "lorie-release-x86": { + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86 NDK_ALL_ABIS\u003dx86 NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/liblorie.so", + "toolchain": "toolchain-x86", + "abi": "x86", + "artifactName": "lorie", + "files": [ + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/lorie/backend-android.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/lorie/main.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/lorie/renderer.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + } + ], + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/liblorie.so" + }, + "xkbcommon-release-x86": { + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86 NDK_ALL_ABIS\u003dx86 NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/libxkbcommon.a", + "toolchain": "toolchain-x86", + "abi": "x86", + "artifactName": "xkbcommon", + "files": [ + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c", + "flags": "-target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security -mstackrealign" + } + ], + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/libxkbcommon.a" + } + }, + "toolchains": { + "toolchain-x86": { + "cCompilerExecutable": "/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang" + } + }, + "cFileExtensions": [ + "c" + ], + "cppFileExtensions": [] +} \ No newline at end of file diff --git a/app/.externalNativeBuild/ndkBuild/release/x86/android_gradle_build_mini.json b/app/.externalNativeBuild/ndkBuild/release/x86/android_gradle_build_mini.json new file mode 100644 index 0000000..623cba0 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/release/x86/android_gradle_build_mini.json @@ -0,0 +1,23 @@ +{ + "buildFiles": [ + "/home/twaik/WTermux/app/src/main/jni/Android.mk", + "/home/twaik/WTermux/app/src/main/jni/Application.mk" + ], + "cleanCommands": [ + "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86 NDK_ALL_ABIS\u003dx86 NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib clean" + ], + "libraries": { + "lorie-release-x86": { + "artifactName": "lorie", + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86 NDK_ALL_ABIS\u003dx86 NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/liblorie.so", + "abi": "x86", + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/liblorie.so" + }, + "xkbcommon-release-x86": { + "artifactName": "xkbcommon", + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86 NDK_ALL_ABIS\u003dx86 NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/libxkbcommon.a", + "abi": "x86", + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/libxkbcommon.a" + } + } +} \ No newline at end of file diff --git a/app/.externalNativeBuild/ndkBuild/release/x86/ndkBuild_build_command.txt b/app/.externalNativeBuild/ndkBuild/release/x86/ndkBuild_build_command.txt new file mode 100644 index 0000000..6a95df1 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/release/x86/ndkBuild_build_command.txt @@ -0,0 +1,17 @@ +Executable : /opt/AndroidSdk/ndk-bundle/ndk-build +arguments : +NDK_PROJECT_PATH=null +APP_BUILD_SCRIPT=/home/twaik/WTermux/app/src/main/jni/Android.mk +NDK_APPLICATION_MK=/home/twaik/WTermux/app/src/main/jni/Application.mk +APP_ABI=x86 +NDK_ALL_ABIS=x86 +NDK_DEBUG=0 +APP_PLATFORM=android-19 +NDK_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj +NDK_LIBS_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib +APP_SHORT_COMMANDS=false +LOCAL_SHORT_COMMANDS=false +-B +-n +jvmArgs : + diff --git a/app/.externalNativeBuild/ndkBuild/release/x86/ndkBuild_build_output.txt b/app/.externalNativeBuild/ndkBuild/release/x86/ndkBuild_build_output.txt new file mode 100644 index 0000000..793a50a --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/release/x86/ndkBuild_build_output.txt @@ -0,0 +1,123 @@ +Android NDK: WARNING:/home/twaik/WTermux/app/src/main/jni/lorie/Android.mk:lorie: non-system libraries in linker flags: -lwayland-server +Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES +Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the +Android NDK: current module +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/x86/* +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/x86/gdbserver +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/x86/gdb.setup +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/lorie +echo [x86] "Compile ": "lorie <= main.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/lorie/main.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/lorie/main.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/lorie/main.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/lorie/main.o +echo [x86] "Compile ": "lorie <= backend-android.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/lorie/backend-android.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/lorie/backend-android.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/lorie/backend-android.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/lorie/backend-android.o +echo [x86] "Compile ": "lorie <= renderer.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/lorie/renderer.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/lorie/renderer.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/lorie/renderer.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/lorie/renderer.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86 +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/compose +echo [x86] "Compile ": "xkbcommon <= parser.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/compose/parser.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/compose/parser.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/compose/parser.o +echo [x86] "Compile ": "xkbcommon <= paths.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/compose/paths.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/compose/paths.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/compose/paths.o +echo [x86] "Compile ": "xkbcommon <= state.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/compose/state.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/compose/state.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/compose/state.o +echo [x86] "Compile ": "xkbcommon <= table.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/compose/table.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/compose/table.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/compose/table.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp +echo [x86] "Compile ": "xkbcommon <= action.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/action.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/action.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/action.o +echo [x86] "Compile ": "xkbcommon <= ast-build.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o +echo [x86] "Compile ": "xkbcommon <= compat.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/compat.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/compat.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/compat.o +echo [x86] "Compile ": "xkbcommon <= expr.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/expr.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/expr.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/expr.o +echo [x86] "Compile ": "xkbcommon <= include.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/include.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/include.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/include.o +echo [x86] "Compile ": "xkbcommon <= keycodes.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o +echo [x86] "Compile ": "xkbcommon <= keymap.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap.o +echo [x86] "Compile ": "xkbcommon <= keymap-dump.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o +echo [x86] "Compile ": "xkbcommon <= keywords.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/keywords.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/keywords.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/keywords.o +echo [x86] "Compile ": "xkbcommon <= parser.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/parser.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/parser.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/parser.o +echo [x86] "Compile ": "xkbcommon <= rules.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/rules.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/rules.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/rules.o +echo [x86] "Compile ": "xkbcommon <= scanner.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/scanner.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/scanner.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/scanner.o +echo [x86] "Compile ": "xkbcommon <= symbols.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/symbols.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/symbols.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/symbols.o +echo [x86] "Compile ": "xkbcommon <= types.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/types.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/types.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/types.o +echo [x86] "Compile ": "xkbcommon <= vmod.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/vmod.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/vmod.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/vmod.o +echo [x86] "Compile ": "xkbcommon <= xkbcomp.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src +echo [x86] "Compile ": "xkbcommon <= atom.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/atom.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/atom.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/atom.o +echo [x86] "Compile ": "xkbcommon <= context.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/context.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/context.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/context.o +echo [x86] "Compile ": "xkbcommon <= context-priv.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/context-priv.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/context-priv.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/context-priv.o +echo [x86] "Compile ": "xkbcommon <= keysym.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/keysym.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/keysym.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/keysym.o +echo [x86] "Compile ": "xkbcommon <= keysym-utf.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/keysym-utf.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/keysym-utf.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/keysym-utf.o +echo [x86] "Compile ": "xkbcommon <= keymap.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/keymap.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/keymap.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/keymap.o +echo [x86] "Compile ": "xkbcommon <= keymap-priv.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/keymap-priv.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/keymap-priv.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/keymap-priv.o +echo [x86] "Compile ": "xkbcommon <= state.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/state.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/state.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/state.o +echo [x86] "Compile ": "xkbcommon <= text.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/text.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/text.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/text.o +echo [x86] "Compile ": "xkbcommon <= utf8.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/utf8.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/utf8.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/utf8.o +echo [x86] "Compile ": "xkbcommon <= utils.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/utils.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/utils.o.d -target i686-none-linux-android19 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -mstackrealign -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/utils.o +echo [x86] "StaticLibrary ": "libxkbcommon.a" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/libxkbcommon.a +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android-ar crsD /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/libxkbcommon.a /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/compose/parser.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/compose/paths.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/compose/state.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/compose/table.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/action.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/compat.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/expr.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/include.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/keywords.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/parser.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/rules.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/scanner.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/symbols.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/types.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/vmod.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/atom.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/context.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/context-priv.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/keysym.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/keysym-utf.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/keymap.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/keymap-priv.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/state.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/text.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/utf8.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/xkbcommon/xkbcommon/src/utils.o +echo [x86] "SharedLibrary ": "liblorie.so" +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -Wl,-soname,liblorie.so -shared /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/lorie/main.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/lorie/backend-android.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/objs/lorie/renderer.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/libxkbcommon.a -lgcc -Wl,--exclude-libs,libgcc.a -latomic -Wl,--exclude-libs,libatomic.a -target i686-none-linux-android19 -no-canonical-prefixes -L/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/x86 -lwayland-server -Wl,--build-id -stdlib=libstdc++ -Wl,--no-undefined -Wl,-z,noexecstack -Wl,--warn-shared-textrel -Wl,--fatal-warnings -lEGL -lGLESv2 -llog -landroid -lc -lm -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/liblorie.so +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/x86 +echo [x86] "Install ": "liblorie.so => /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/x86/liblorie.so" +install -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86/liblorie.so /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/x86/liblorie.so +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android-strip --strip-unneeded /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/x86/liblorie.so diff --git a/app/.externalNativeBuild/ndkBuild/release/x86_64/android_gradle_build.json b/app/.externalNativeBuild/ndkBuild/release/x86_64/android_gradle_build.json new file mode 100644 index 0000000..06a1680 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/release/x86_64/android_gradle_build.json @@ -0,0 +1,298 @@ +{ + "buildFiles": [ + "/home/twaik/WTermux/app/src/main/jni/Android.mk", + "/home/twaik/WTermux/app/src/main/jni/Application.mk" + ], + "cleanCommands": [ + "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86_64 NDK_ALL_ABIS\u003dx86_64 NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib clean" + ], + "libraries": { + "xkbcommon-release-x86_64": { + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86_64 NDK_ALL_ABIS\u003dx86_64 NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/libxkbcommon.a", + "toolchain": "toolchain-x86_64", + "abi": "x86_64", + "artifactName": "xkbcommon", + "files": [ + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + } + ], + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/libxkbcommon.a" + }, + "lorie-release-x86_64": { + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86_64 NDK_ALL_ABIS\u003dx86_64 NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/liblorie.so", + "toolchain": "toolchain-x86_64", + "abi": "x86_64", + "artifactName": "lorie", + "files": [ + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std\u003dc99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR\u003d\\\"/data/data/com.termux/files/usr/share/X11/locale\\\" -DDEFAULT_XKB_LAYOUT\u003d\\\"us\\\" -DDEFAULT_XKB_MODEL\u003d\\\"pc105\\\" -DDEFAULT_XKB_RULES\u003d\\\"evdev\\\" -DDFLT_XKB_CONFIG_ROOT\u003d\\\"/data/data/com.termux/files/usr/share/X11/xkb\\\" -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/lorie/backend-android.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/lorie/main.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + }, + { + "src": "/home/twaik/WTermux/app/src/main/jni/lorie/renderer.c", + "flags": "-target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror\u003dformat-security" + } + ], + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/liblorie.so" + } + }, + "toolchains": { + "toolchain-x86_64": { + "cCompilerExecutable": "/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang" + } + }, + "cFileExtensions": [ + "c" + ], + "cppFileExtensions": [] +} \ No newline at end of file diff --git a/app/.externalNativeBuild/ndkBuild/release/x86_64/android_gradle_build_mini.json b/app/.externalNativeBuild/ndkBuild/release/x86_64/android_gradle_build_mini.json new file mode 100644 index 0000000..0e8273b --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/release/x86_64/android_gradle_build_mini.json @@ -0,0 +1,23 @@ +{ + "buildFiles": [ + "/home/twaik/WTermux/app/src/main/jni/Android.mk", + "/home/twaik/WTermux/app/src/main/jni/Application.mk" + ], + "cleanCommands": [ + "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86_64 NDK_ALL_ABIS\u003dx86_64 NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib clean" + ], + "libraries": { + "xkbcommon-release-x86_64": { + "artifactName": "xkbcommon", + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86_64 NDK_ALL_ABIS\u003dx86_64 NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/libxkbcommon.a", + "abi": "x86_64", + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/libxkbcommon.a" + }, + "lorie-release-x86_64": { + "artifactName": "lorie", + "buildCommand": "/opt/AndroidSdk/ndk-bundle/ndk-build NDK_PROJECT_PATH\u003dnull APP_BUILD_SCRIPT\u003d/home/twaik/WTermux/app/src/main/jni/Android.mk NDK_APPLICATION_MK\u003d/home/twaik/WTermux/app/src/main/jni/Application.mk APP_ABI\u003dx86_64 NDK_ALL_ABIS\u003dx86_64 NDK_DEBUG\u003d0 APP_PLATFORM\u003dandroid-19 NDK_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT\u003d/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/liblorie.so", + "abi": "x86_64", + "output": "/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/liblorie.so" + } + } +} \ No newline at end of file diff --git a/app/.externalNativeBuild/ndkBuild/release/x86_64/ndkBuild_build_command.txt b/app/.externalNativeBuild/ndkBuild/release/x86_64/ndkBuild_build_command.txt new file mode 100644 index 0000000..ab7ae4a --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/release/x86_64/ndkBuild_build_command.txt @@ -0,0 +1,17 @@ +Executable : /opt/AndroidSdk/ndk-bundle/ndk-build +arguments : +NDK_PROJECT_PATH=null +APP_BUILD_SCRIPT=/home/twaik/WTermux/app/src/main/jni/Android.mk +NDK_APPLICATION_MK=/home/twaik/WTermux/app/src/main/jni/Application.mk +APP_ABI=x86_64 +NDK_ALL_ABIS=x86_64 +NDK_DEBUG=0 +APP_PLATFORM=android-19 +NDK_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj +NDK_LIBS_OUT=/home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib +APP_SHORT_COMMANDS=false +LOCAL_SHORT_COMMANDS=false +-B +-n +jvmArgs : + diff --git a/app/.externalNativeBuild/ndkBuild/release/x86_64/ndkBuild_build_output.txt b/app/.externalNativeBuild/ndkBuild/release/x86_64/ndkBuild_build_output.txt new file mode 100644 index 0000000..2047674 --- /dev/null +++ b/app/.externalNativeBuild/ndkBuild/release/x86_64/ndkBuild_build_output.txt @@ -0,0 +1,123 @@ +Android NDK: WARNING:/home/twaik/WTermux/app/src/main/jni/lorie/Android.mk:lorie: non-system libraries in linker flags: -lwayland-server +Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES +Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the +Android NDK: current module +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/x86_64/* +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/x86_64/gdbserver +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/x86_64/gdb.setup +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/lorie +echo [x86_64] "Compile ": "lorie <= main.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/lorie/main.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/lorie/main.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/main.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/lorie/main.o +echo [x86_64] "Compile ": "lorie <= backend-android.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/lorie/backend-android.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/lorie/backend-android.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/backend-android.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/lorie/backend-android.o +echo [x86_64] "Compile ": "lorie <= renderer.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/lorie/renderer.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/lorie/renderer.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/include -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/ -I/home/twaik/WTermux/app/src/main/jni/lorie -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/lorie/renderer.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/lorie/renderer.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64 +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/compose +echo [x86_64] "Compile ": "xkbcommon <= parser.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/compose/parser.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/compose/parser.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/compose/parser.o +echo [x86_64] "Compile ": "xkbcommon <= paths.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/compose/paths.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/compose/paths.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/compose/paths.o +echo [x86_64] "Compile ": "xkbcommon <= state.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/compose/state.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/compose/state.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/compose/state.o +echo [x86_64] "Compile ": "xkbcommon <= table.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/compose/table.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/compose/table.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/compose/table.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp +echo [x86_64] "Compile ": "xkbcommon <= action.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/action.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/action.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/action.o +echo [x86_64] "Compile ": "xkbcommon <= ast-build.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o +echo [x86_64] "Compile ": "xkbcommon <= compat.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/compat.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/compat.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/compat.o +echo [x86_64] "Compile ": "xkbcommon <= expr.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/expr.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/expr.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/expr.o +echo [x86_64] "Compile ": "xkbcommon <= include.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/include.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/include.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/include.o +echo [x86_64] "Compile ": "xkbcommon <= keycodes.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o +echo [x86_64] "Compile ": "xkbcommon <= keymap.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap.o +echo [x86_64] "Compile ": "xkbcommon <= keymap-dump.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o +echo [x86_64] "Compile ": "xkbcommon <= keywords.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/keywords.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/keywords.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/keywords.o +echo [x86_64] "Compile ": "xkbcommon <= parser.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/parser.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/parser.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/parser.o +echo [x86_64] "Compile ": "xkbcommon <= rules.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/rules.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/rules.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/rules.o +echo [x86_64] "Compile ": "xkbcommon <= scanner.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/scanner.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/scanner.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/scanner.o +echo [x86_64] "Compile ": "xkbcommon <= symbols.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/symbols.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/symbols.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/symbols.o +echo [x86_64] "Compile ": "xkbcommon <= types.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/types.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/types.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/types.o +echo [x86_64] "Compile ": "xkbcommon <= vmod.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/vmod.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/vmod.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/vmod.o +echo [x86_64] "Compile ": "xkbcommon <= xkbcomp.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src +echo [x86_64] "Compile ": "xkbcommon <= atom.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/atom.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/atom.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/atom.o +echo [x86_64] "Compile ": "xkbcommon <= context.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/context.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/context.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/context.o +echo [x86_64] "Compile ": "xkbcommon <= context-priv.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/context-priv.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/context-priv.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/context-priv.o +echo [x86_64] "Compile ": "xkbcommon <= keysym.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/keysym.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/keysym.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/keysym.o +echo [x86_64] "Compile ": "xkbcommon <= keysym-utf.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/keysym-utf.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/keysym-utf.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/keysym-utf.o +echo [x86_64] "Compile ": "xkbcommon <= keymap.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/keymap.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/keymap.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/keymap.o +echo [x86_64] "Compile ": "xkbcommon <= keymap-priv.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/keymap-priv.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/keymap-priv.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/keymap-priv.o +echo [x86_64] "Compile ": "xkbcommon <= state.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/state.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/state.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/state.o +echo [x86_64] "Compile ": "xkbcommon <= text.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/text.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/text.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/text.o +echo [x86_64] "Compile ": "xkbcommon <= utf8.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/utf8.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/utf8.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/utf8.o +echo [x86_64] "Compile ": "xkbcommon <= utils.c" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/utils.o +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -MF /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/utils.o.d -target x86_64-none-linux-android21 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot /opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -fno-addrsig -fPIC -O2 -DNDEBUG -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src -I/home/twaik/WTermux/app/src/main/jni/libxkbcommon -DANDROID -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -D_GNU_SOURCE -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" -DDEFAULT_XKB_LAYOUT=\"us\" -DDEFAULT_XKB_MODEL=\"pc105\" -DDEFAULT_XKB_RULES=\"evdev\" -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" -Wa,--noexecstack -Wformat -Werror=format-security -c /home/twaik/WTermux/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/utils.o +echo [x86_64] "StaticLibrary ": "libxkbcommon.a" +rm -f /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/libxkbcommon.a +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android-ar crsD /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/libxkbcommon.a /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/compose/parser.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/compose/paths.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/compose/state.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/compose/table.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/action.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/ast-build.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/compat.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/expr.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/include.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/keycodes.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/keymap-dump.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/keywords.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/parser.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/rules.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/scanner.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/symbols.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/types.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/vmod.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/xkbcomp/xkbcomp.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/atom.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/context.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/context-priv.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/keysym.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/keysym-utf.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/keymap.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/keymap-priv.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/state.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/text.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/utf8.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/xkbcommon/xkbcommon/src/utils.o +echo [x86_64] "SharedLibrary ": "liblorie.so" +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -Wl,-soname,liblorie.so -shared /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/lorie/main.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/lorie/backend-android.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/objs/lorie/renderer.o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/libxkbcommon.a -lgcc -Wl,--exclude-libs,libgcc.a -latomic -Wl,--exclude-libs,libatomic.a -target x86_64-none-linux-android21 -no-canonical-prefixes -L/home/twaik/WTermux/app/src/main/jni/lorie/../prebuilt/x86_64 -lwayland-server -Wl,--build-id -stdlib=libstdc++ -Wl,--no-undefined -Wl,-z,noexecstack -Wl,--warn-shared-textrel -Wl,--fatal-warnings -lEGL -lGLESv2 -llog -landroid -lc -lm -o /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/liblorie.so +mkdir -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/x86_64 +echo [x86_64] "Install ": "liblorie.so => /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/x86_64/liblorie.so" +install -p /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/obj/local/x86_64/liblorie.so /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/x86_64/liblorie.so +/opt/AndroidSdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android-strip --strip-unneeded /home/twaik/WTermux/app/build/intermediates/ndkBuild/release/lib/x86_64/liblorie.so diff --git a/app/app.iml b/app/app.iml index e944511..9d048c6 100644 --- a/app/app.iml +++ b/app/app.iml @@ -24,7 +24,7 @@ - @@ -33,7 +33,11 @@ + + + + diff --git a/app/build.gradle b/app/build.gradle index ea22853..47881c0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,6 +21,11 @@ android { path "src/main/jni/Android.mk" } } + sourceSets { + main { + jniLibs.srcDirs 'src/main/jni/prebuilt' + } + } } dependencies { diff --git a/app/src/main/java/com/termux/wtermux/KeyboardUtils.java b/app/src/main/java/com/termux/wtermux/KeyboardUtils.java new file mode 100644 index 0000000..6ee0671 --- /dev/null +++ b/app/src/main/java/com/termux/wtermux/KeyboardUtils.java @@ -0,0 +1,127 @@ +package com.termux.wtermux; + +import android.app.Activity; +import android.graphics.Rect; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewTreeObserver; +import android.content.Context; +import android.view.inputmethod.InputMethodManager; + +import java.util.HashMap; + +/** + * Based on the following Stackoverflow answer: + * http://stackoverflow.com/questions/2150078/how-to-check-visibility-of-software-keyboard-in-android + */ +@SuppressWarnings("WeakerAccess") +public class KeyboardUtils implements ViewTreeObserver.OnGlobalLayoutListener +{ + private final static int MAGIC_NUMBER = 200; + + private SoftKeyboardToggleListener mCallback; + private View mRootView; + private Boolean prevValue = null; + private float mScreenDensity; + private static HashMap sListenerMap = new HashMap<>(); + + public interface SoftKeyboardToggleListener + { + void onToggleSoftKeyboard(boolean isVisible); + } + + + @Override + public void onGlobalLayout() + { + Rect r = new Rect(); + mRootView.getWindowVisibleDisplayFrame(r); + + int heightDiff = mRootView.getRootView().getHeight() - (r.bottom - r.top); + float dp = heightDiff/ mScreenDensity; + boolean isVisible = dp > MAGIC_NUMBER; + + if (mCallback != null && (prevValue == null || isVisible != prevValue)) { + prevValue = isVisible; + mCallback.onToggleSoftKeyboard(isVisible); + } + } + + /** + * Add a new keyboard listener + * @param act calling activity + * @param listener callback + */ + public static void addKeyboardToggleListener(Activity act, SoftKeyboardToggleListener listener) + { + removeKeyboardToggleListener(listener); + + sListenerMap.put(listener, new KeyboardUtils(act, listener)); + } + + /** + * Remove a registered listener + * @param listener {@link SoftKeyboardToggleListener} + */ + public static void removeKeyboardToggleListener(SoftKeyboardToggleListener listener) + { + if(sListenerMap.containsKey(listener)) + { + KeyboardUtils k = sListenerMap.get(listener); + k.removeListener(); + + sListenerMap.remove(listener); + } + } + + /** + * Remove all registered keyboard listeners + */ + public static void removeAllKeyboardToggleListeners() + { + for(SoftKeyboardToggleListener l : sListenerMap.keySet()) + sListenerMap.get(l).removeListener(); + + sListenerMap.clear(); + } + + /** + * Manually toggle soft keyboard visibility + * @param context calling context + */ + public static void toggleKeyboardVisibility(Context context) + { + InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); + if(inputMethodManager != null) + inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); + } + + /** + * Force closes the soft keyboard + * @param activeView the view with the keyboard focus + */ + public static void forceCloseKeyboard(View activeView) + { + InputMethodManager inputMethodManager = (InputMethodManager) activeView.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + if(inputMethodManager != null) + inputMethodManager.hideSoftInputFromWindow(activeView.getWindowToken(), 0); + } + + private void removeListener() + { + mCallback = null; + + mRootView.getViewTreeObserver().removeOnGlobalLayoutListener(this); + } + + private KeyboardUtils(Activity act, SoftKeyboardToggleListener listener) + { + mCallback = listener; + + mRootView = ((ViewGroup) act.findViewById(android.R.id.content)).getChildAt(0); + mRootView.getViewTreeObserver().addOnGlobalLayoutListener(this); + + mScreenDensity = act.getResources().getDisplayMetrics().density; + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/termux/wtermux/LorieService.java b/app/src/main/java/com/termux/wtermux/LorieService.java index 4dc0597..2f05633 100644 --- a/app/src/main/java/com/termux/wtermux/LorieService.java +++ b/app/src/main/java/com/termux/wtermux/LorieService.java @@ -1,14 +1,20 @@ package com.termux.wtermux; import android.annotation.SuppressLint; +import android.content.Context; import android.util.Log; +import android.view.KeyEvent; import android.view.MotionEvent; import android.view.Surface; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; +import android.view.inputmethod.InputMethodManager; +import android.view.inputmethod.InputMethodSubtype; -public class LorieService implements SurfaceHolder.Callback, View.OnTouchListener { +import java.util.Locale; + +public class LorieService implements SurfaceHolder.Callback, View.OnTouchListener, View.OnKeyListener { private static final int BTN_LEFT = 0x110; private static final int BTN_MIDDLE = 0x110; private static final int BTN_RIGHT = 0x110; @@ -17,9 +23,13 @@ public class LorieService implements SurfaceHolder.Callback, View.OnTouchListene private static final int WL_STATE_RELEASED = 0; private static final int WL_POINTER_MOTION = 2; - private static final int WL_POINTER_BUTTON = 3; - private long compositor = 0; - LorieService() { + //private static final int WL_POINTER_BUTTON = 3; + private InputMethodManager imm; + private long compositor; + Context ctx; + LorieService(Context context) { + imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE); + ctx = context; compositor = createLorieThread(); if (compositor == 0) { Log.e("WestonService", "compositor thread was not created"); @@ -30,6 +40,11 @@ public class LorieService implements SurfaceHolder.Callback, View.OnTouchListene void connectSurfaceView(SurfaceView surface) { surface.getHolder().addCallback(this); surface.setOnTouchListener(this); + surface.setOnKeyListener(this); + + surface.setFocusable(true); + surface.setFocusableInTouchMode(true); + surface.requestFocus(); } @Override @@ -88,10 +103,20 @@ public class LorieService implements SurfaceHolder.Callback, View.OnTouchListene return true; } + @Override + public boolean onKey(View v, int keyCode, KeyEvent e) { + int action = 0; + int shift = e.isShiftPressed() ? 1 : 0; + if (e.getAction() == KeyEvent.ACTION_DOWN) action = WL_STATE_PRESSED; + if (e.getAction() == KeyEvent.ACTION_UP) action = WL_STATE_RELEASED; + onKey(compositor, action, keyCode, shift, e.getCharacters()); + return false; + } + private native long createLorieThread(); private native void windowChanged(long compositor, Surface surface, int width, int height); private native void onTouch(long compositor, int type, int button, int x, int y); - private native void onKey(long compositor, int type, int key); + private native void onKey(long compositor, int type, int key, int shift, String characters); static { System.loadLibrary("lorie"); diff --git a/app/src/main/java/com/termux/wtermux/MainActivity.java b/app/src/main/java/com/termux/wtermux/MainActivity.java index eb8154c..495a445 100644 --- a/app/src/main/java/com/termux/wtermux/MainActivity.java +++ b/app/src/main/java/com/termux/wtermux/MainActivity.java @@ -1,22 +1,65 @@ package com.termux.wtermux; +import android.content.Context; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.util.Log; +import android.view.KeyEvent; import android.view.SurfaceView; import android.view.WindowManager; +import android.view.inputmethod.InputMethodManager; -public class MainActivity extends AppCompatActivity { +public class MainActivity extends AppCompatActivity implements KeyboardUtils.SoftKeyboardToggleListener { LorieService weston; + boolean kbdVisible = false; + InputMethodManager imm; + SurfaceView root; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + //jniLoader.loadLibrary("wayland-server"); setContentView(R.layout.activity_main); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - SurfaceView surface = findViewById(R.id.WestonView); - weston = new LorieService(); - weston.connectSurfaceView(surface); + root = findViewById(R.id.WestonView); + weston = new LorieService(this); + weston.connectSurfaceView(root); + KeyboardUtils.addKeyboardToggleListener(this, this); + + } + + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + Log.d("LorieActivity", "keydown: " + keyCode + "(keycode_back = " + KeyEvent.KEYCODE_BACK + " )"); + if (keyCode == KeyEvent.KEYCODE_BACK) { + onBackPressed(); + return true; + } + return super.onKeyDown(keyCode, event); + } + + + @Override + public void onBackPressed() { + //KeyboardUtils.toggleKeyboardVisibility(this); + Log.d("Asdasd", "asdasdasd"); + if (root == null) return; + if (kbdVisible) { + ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)) + .hideSoftInputFromWindow(root.getWindowToken(), 0); + } else + { + ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)) + .showSoftInput(root, InputMethodManager.SHOW_FORCED); + } + } + + + @Override + public void onToggleSoftKeyboard(boolean isVisible) { + kbdVisible = isVisible; + Log.d("LorieActivity", "keyboard is " + (isVisible?"visible":"not visible")); } } diff --git a/app/src/main/java/com/termux/wtermux/jniLoader.java b/app/src/main/java/com/termux/wtermux/jniLoader.java new file mode 100644 index 0000000..0ad373d --- /dev/null +++ b/app/src/main/java/com/termux/wtermux/jniLoader.java @@ -0,0 +1,12 @@ +package com.termux.wtermux; + +final class jniLoader { + static void loadLibrary(String name) { + _loadLibrary("lib" + name + ".so"); + } + + private static native void _loadLibrary(String name); + static { + System.loadLibrary("jniLoader"); + } +} diff --git a/app/src/main/jni/Android.mk b/app/src/main/jni/Android.mk index cef17d6..ec371df 100644 --- a/app/src/main/jni/Android.mk +++ b/app/src/main/jni/Android.mk @@ -1,3 +1,3 @@ ROOT_PATH := $(call my-dir) -include $(ROOT_PATH)/prebuilt/Android.mk +include $(ROOT_PATH)/libxkbcommon/Android.mk include $(ROOT_PATH)/lorie/Android.mk diff --git a/app/src/main/jni/Application.mk b/app/src/main/jni/Application.mk new file mode 100644 index 0000000..9db6250 --- /dev/null +++ b/app/src/main/jni/Application.mk @@ -0,0 +1 @@ +#APP_STL := c++_shared diff --git a/app/src/main/jni/jniLoader/Android.mk b/app/src/main/jni/jniLoader/Android.mk new file mode 100644 index 0000000..390d41c --- /dev/null +++ b/app/src/main/jni/jniLoader/Android.mk @@ -0,0 +1,7 @@ +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) +LOCAL_MODULE := jniLoader +LOCAL_SRC_FILES := dt_needed_main.c +LOCAL_LDLIBS := -llog +include $(BUILD_SHARED_LIBRARY) diff --git a/app/src/main/jni/jniLoader/dt_needed.c b/app/src/main/jni/jniLoader/dt_needed.c new file mode 100644 index 0000000..2db9904 --- /dev/null +++ b/app/src/main/jni/jniLoader/dt_needed.c @@ -0,0 +1,99 @@ +#if defined(bit64) + #define Elf_Ehdr Elf64_Ehdr + #define Elf_Shdr Elf64_Shdr + #define Elf_Dyn Elf64_Dyn + #define dlneeds dlneeds64 +#else + #define Elf_Ehdr Elf32_Ehdr + #define Elf_Shdr Elf32_Shdr + #define Elf_Dyn Elf32_Dyn + #define dlneeds dlneeds32 +#endif + +char ** dlneeds(int fd) +{ + Elf_Ehdr hdr; + char *strdata = 0; + char **result = NULL; + int i; + + if( read( fd, &hdr, sizeof( Elf_Ehdr ) ) < 0 ) { + LOGE("Cannot read elf header: %s", strerror( errno ) ); + return NULL; + } + + /* Jump to the section header table. */ + lseek( fd, hdr.e_shoff, SEEK_SET ); + + /* Find and load the dynamic symbol strings. */ + for( i = 0; i < hdr.e_shnum; i++ ) { + Elf_Shdr shdr; + + lseek( fd, hdr.e_shoff + (i * hdr.e_shentsize), SEEK_SET ); + read( fd, &shdr, sizeof( Elf_Shdr ) ); + + if( shdr.sh_type == SHT_DYNSYM ) { + Elf_Shdr symstr; + + lseek( fd, hdr.e_shoff + (shdr.sh_link * hdr.e_shentsize), + SEEK_SET ); + read( fd, &symstr, sizeof( Elf_Shdr ) ); + lseek( fd, symstr.sh_offset, SEEK_SET ); + strdata = malloc( symstr.sh_size ); + read( fd, strdata, symstr.sh_size ); + break; + } + } + + /* Quit if we couldn't find any. */ + if( strdata == 0 ) { + LOGE("No symbol strings found."); + close(fd); + return NULL; + } + + /* Now find the .dynamic section. */ + for( i = 0; i < hdr.e_shnum; i++ ) { + Elf_Shdr shdr; + + lseek( fd, hdr.e_shoff + (i * hdr.e_shentsize), SEEK_SET ); + read( fd, &shdr, sizeof( Elf_Shdr ) ); + + if( shdr.sh_type == SHT_DYNAMIC ) { + int j; + int k; + int needed_count = 0; + Elf_Dyn cur; + + /* Load its data and print all DT_NEEDED strings. */ + lseek( fd, shdr.sh_offset, SEEK_SET ); + for(j=0; j +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "log.h" +#ifdef __ANDROID__ +#include +int System_load(JNIEnv *env, char *filename); +#endif + +#ifndef __ANDROID__ +#define __USE_GNU +#include +#include +int trace_funcs = 0; +void __attribute__((no_instrument_function)) +__cyg_profile_func_enter (void *func, void *caller) { + if (!trace_funcs) return; + Dl_info info; + if (dladdr(func, &info)) + LOGD ("enter [%s] %s", (info.dli_fname) ? info.dli_fname : "?", info.dli_sname ? info.dli_sname : "?"); +} +void __attribute__((no_instrument_function)) +__cyg_profile_func_exit (void *func, void *caller) { + if (!trace_funcs) return; + Dl_info info; + if (dladdr(func, &info)) + LOGD ("leave [%s] %s", (info.dli_fname) ? info.dli_fname : "?", info.dli_sname ? info.dli_sname : "?"); +} +#endif +#define static // backtrace do not report static function names + + +#define bit64 +#include "dt_needed.c" +#undef bit64 +#include "dt_needed.c" + +char ** str_split(char *s, char *delim) { + char *strings[128]; + char *pch, **result, *str = strdup(s); + int i=0, j=0; + pch = strtok (str,delim); + while (pch != NULL) { + strings[i] = strdup(pch); + pch = strtok(NULL, ":"); + i++; + } + result = calloc(i+1, sizeof(char*)); + if (!result) { + LOGE("str_split: Failed to allocate result array: %s", strerror(errno)); + return NULL; + } + + for (j=0; j", argv[0]); + return 1; + } + + android_dlopen(argv[1]); + return 0; +} +#endif + +#ifdef __ANDROID__ +JavaVM *jvm = NULL; + +JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) { + jvm = vm; + return JNI_VERSION_1_4; +} + +int System_load(JNIEnv *env, char *filename) { + jclass System = (*env)->FindClass (env, "java/lang/System"); + if(System == NULL) { + LOGE("ERROR: class java.land.System is not found!"); + } + + jmethodID load = (*env)->GetStaticMethodID(env, System, "load","(Ljava/lang/String;)V"); + if (load == NULL) { + LOGE("ERROR: method System.load is not found!"); + } + + jstring file = (*env)->NewStringUTF(env, filename); + if (file == NULL) { + LOGE("failed to create jstring"); + } + + (*env)->CallStaticVoidMethod(env, System, load, file); + (*env)->DeleteLocalRef(env, file); + (*env)->DeleteLocalRef(env, System); + + + jboolean flag = (*env)->ExceptionCheck(env); + if (flag) { + jthrowable e = (*env)->ExceptionOccurred(env); + (*env)->ExceptionClear(env); + jclass clazz = (*env)->GetObjectClass(env, e); + jmethodID getMessage = (*env)->GetMethodID(env, clazz, "getMessage", "()Ljava/lang/String;"); + jstring message = (jstring)(*env)->CallObjectMethod(env, e, getMessage); + + const char *mstr = (*env)->GetStringUTFChars(env, message, NULL); + LOGE("%s", mstr); + (*env)->ReleaseStringUTFChars(env, message, mstr); + + (*env)->DeleteLocalRef(env, message); + (*env)->DeleteLocalRef(env, clazz); + (*env)->DeleteLocalRef(env, e); + + return 1; + } + return 0; +} + + + + +JNIEXPORT void JNICALL +Java_com_termux_wtermux_jniLoader__1loadLibrary(JNIEnv *env, jclass type, jstring name_) { + char *name = (char*) (*env)->GetStringUTFChars(env, name_, 0); + android_dlopen(env, name); + (*env)->ReleaseStringUTFChars(env, name_, name); +} +#endif diff --git a/app/src/main/jni/jniLoader/log.h b/app/src/main/jni/jniLoader/log.h new file mode 100644 index 0000000..173e37f --- /dev/null +++ b/app/src/main/jni/jniLoader/log.h @@ -0,0 +1,56 @@ +#ifdef __ANDROID__ +#include + +#ifndef LOG_TAG +#define LOG_TAG "jniLoader" +#endif + +#define LOG(prio, ...) __android_log_print(prio, LOG_TAG, __VA_ARGS__) + +#define LOGI(...) LOG(ANDROID_LOG_INFO, __VA_ARGS__) +#define LOGW(...) LOG(ANDROID_LOG_WARN, __VA_ARGS__) +#define LOGD(...) LOG(ANDROID_LOG_DEBUG, __VA_ARGS__) +#define LOGV(...) LOG(ANDROID_LOG_VERBOSE, __VA_ARGS__) +#define LOGE(...) LOG(ANDROID_LOG_ERROR, __VA_ARGS__) +#define LOGF(...) LOG(ANDROID_LOG_FATAL, __VA_ARGS__) + +#else +#include + +#define LOG(prio, ...) { printf(prio __VA_ARGS__); printf("\n"); } + +#define LOGI(...) LOG("I: " , __VA_ARGS__) +#define LOGW(...) LOG("W: " , __VA_ARGS__) +#define LOGD(...) LOG("D: " , __VA_ARGS__) +#define LOGV(...) LOG("V: " , __VA_ARGS__) +#define LOGE(...) LOG("E: " , __VA_ARGS__) +#define LOGF(...) LOG("F: " , __VA_ARGS__) + +#endif +#ifdef DBG +#undef DBG +#endif + +#define DBG LOGD("Here! %s %d", __FILE__, __LINE__) + +extern int trace_funcs; +#if defined(TRACE_FUNCS) && !defined(__ANDROID__) +#include +#include +void __attribute__((no_instrument_function)) +__cyg_profile_func_enter (void *func, void *caller) { + if (!trace_funcs) return; + Dl_info info; + if (dladdr(func, &info)) + LOGD ("enter %p [%s] %s\n", func, (info.dli_fname) ? info.dli_fname : "?", info.dli_sname ? info.dli_sname : "?"); +} +void __attribute__((no_instrument_function)) +__cyg_profile_func_exit (void *func, void *caller) { + if (!trace_funcs) return; + Dl_info info; + if (dladdr(func, &info)) + LOGD ("leave %p [%s] %s\n", func, (info.dli_fname) ? info.dli_fname : "?", info.dli_sname ? info.dli_sname : "?"); +} + +#define static // backtrace do not report static function names +#endif diff --git a/app/src/main/jni/libxkbcommon/Android.bp b/app/src/main/jni/libxkbcommon/Android.bp new file mode 100644 index 0000000..503d42d --- /dev/null +++ b/app/src/main/jni/libxkbcommon/Android.bp @@ -0,0 +1,68 @@ +// Copyright (C) 2017 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +cc_library_static { + srcs: [ + "xkbcommon/src/compose/parser.c", + "xkbcommon/src/compose/paths.c", + "xkbcommon/src/compose/state.c", + "xkbcommon/src/compose/table.c", + "xkbcommon/src/xkbcomp/action.c", + "xkbcommon/src/xkbcomp/ast-build.c", + "xkbcommon/src/xkbcomp/compat.c", + "xkbcommon/src/xkbcomp/expr.c", + "xkbcommon/src/xkbcomp/include.c", + "xkbcommon/src/xkbcomp/keycodes.c", + "xkbcommon/src/xkbcomp/keymap.c", + "xkbcommon/src/xkbcomp/keymap-dump.c", + "xkbcommon/src/xkbcomp/keywords.c", + "xkbcommon/src/xkbcomp/parser.c", + "xkbcommon/src/xkbcomp/rules.c", + "xkbcommon/src/xkbcomp/scanner.c", + "xkbcommon/src/xkbcomp/symbols.c", + "xkbcommon/src/xkbcomp/types.c", + "xkbcommon/src/xkbcomp/vmod.c", + "xkbcommon/src/xkbcomp/xkbcomp.c", + "xkbcommon/src/atom.c", + "xkbcommon/src/context.c", + "xkbcommon/src/context-priv.c", + "xkbcommon/src/keysym.c", + "xkbcommon/src/keysym-utf.c", + "xkbcommon/src/keymap.c", + "xkbcommon/src/keymap-priv.c", + "xkbcommon/src/state.c", + "xkbcommon/src/text.c", + "xkbcommon/src/utf8.c", + "xkbcommon/src/utils.c", + ], + cflags: [ + "-std=c99", + "-Wall", + "-Werror", + "-Wno-unused-parameter", + "-Wno-missing-field-initializers", + "-DXLOCALEDIR=\"/usr/share/X11/locale\"", + // Needed because libxkbcommon uses GNU extension asprintf(). + "-D_GNU_SOURCE", + "-DDEFAULT_XKB_LAYOUT=\"us\"", + "-DDEFAULT_XKB_MODEL=\"pc105\"", + "-DDEFAULT_XKB_RULES=\"evdev\"", + "-DDFLT_XKB_CONFIG_ROOT=\"/usr/share/X11/xkb\"", + ], + local_include_dirs: ["xkbcommon/src"], + export_include_dirs: ["xkbcommon"], + vendor_available: true, + host_supported: true, + name: "libxkbcommon", +} diff --git a/app/src/main/jni/libxkbcommon/Android.mk b/app/src/main/jni/libxkbcommon/Android.mk new file mode 100644 index 0000000..9ac86b0 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/Android.mk @@ -0,0 +1,47 @@ +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) +LOCAL_MODULE := xkbcommon +LOCAL_SRC_FILES := \ + xkbcommon/src/compose/parser.c \ + xkbcommon/src/compose/paths.c \ + xkbcommon/src/compose/state.c \ + xkbcommon/src/compose/table.c \ + xkbcommon/src/xkbcomp/action.c \ + xkbcommon/src/xkbcomp/ast-build.c \ + xkbcommon/src/xkbcomp/compat.c \ + xkbcommon/src/xkbcomp/expr.c \ + xkbcommon/src/xkbcomp/include.c \ + xkbcommon/src/xkbcomp/keycodes.c \ + xkbcommon/src/xkbcomp/keymap.c \ + xkbcommon/src/xkbcomp/keymap-dump.c \ + xkbcommon/src/xkbcomp/keywords.c \ + xkbcommon/src/xkbcomp/parser.c \ + xkbcommon/src/xkbcomp/rules.c \ + xkbcommon/src/xkbcomp/scanner.c \ + xkbcommon/src/xkbcomp/symbols.c \ + xkbcommon/src/xkbcomp/types.c \ + xkbcommon/src/xkbcomp/vmod.c \ + xkbcommon/src/xkbcomp/xkbcomp.c \ + xkbcommon/src/atom.c \ + xkbcommon/src/context.c \ + xkbcommon/src/context-priv.c \ + xkbcommon/src/keysym.c \ + xkbcommon/src/keysym-utf.c \ + xkbcommon/src/keymap.c \ + xkbcommon/src/keymap-priv.c \ + xkbcommon/src/state.c \ + xkbcommon/src/text.c \ + xkbcommon/src/utf8.c \ + xkbcommon/src/utils.c +LOCAL_CFLAGS := \ + -std=c99 -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers \ + -D_GNU_SOURCE \ + -DXLOCALEDIR=\"/data/data/com.termux/files/usr/share/X11/locale\" \ + -DDEFAULT_XKB_LAYOUT=\"us\" \ + -DDEFAULT_XKB_MODEL=\"pc105\" \ + -DDEFAULT_XKB_RULES=\"evdev\" \ + -DDFLT_XKB_CONFIG_ROOT=\"/data/data/com.termux/files/usr/share/X11/xkb\" +LOCAL_C_INCLUDES := $(LOCAL_PATH)/xkbcommon $(LOCAL_PATH)/xkbcommon/src +LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/xkbcommon/ +include $(BUILD_SHARED_LIBRARY) diff --git a/app/src/main/jni/libxkbcommon/LICENSE b/app/src/main/jni/libxkbcommon/LICENSE new file mode 100644 index 0000000..d96c428 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/LICENSE @@ -0,0 +1,215 @@ +The following is a list of all copyright notices and license statements which +appear in the xkbcommon source tree. + +If making new contributions, the first form (i.e. Daniel Stone, Ran Benita, +etc) is vastly preferred. + +All licenses are derivative of the MIT/X11 license, mostly identical other +than no-endorsement clauses (e.g. paragraph 4 of The Open Group's license). + +These statements are split into two sections: one for the code compiled and +distributed as part of the libxkbcommon shared library and the code +component of all tests (i.e. everything under src/ and xkbcommon/, plus the +.c and .h files under test/), and another for the test data under test/data, +which is distributed with the xkbcommon source tarball, but not installed to +the system. + + +BEGINNING OF SOFTWARE COPYRIGHT/LICENSE STATEMENTS: + + +------------------------------------------------------------------------------- + +Copyright © 2009-2012 Daniel Stone +Copyright © 2012 Ran Benita +Copyright © 2010, 2012 Intel Corporation +Copyright © 2008, 2009 Dan Nicholson +Copyright © 2010 Francisco Jerez + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + + +------------------------------------------------------------------------------- + + +Copyright 1985, 1987, 1988, 1990, 1998 The Open Group + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the names of the authors or their +institutions shall not be used in advertising or otherwise to promote the +sale, use or other dealings in this Software without prior written +authorization from the authors. + + +------------------------------------------------------------------------------- + + +Copyright (c) 1993, 1994, 1995, 1996 by Silicon Graphics Computer Systems, Inc. + +Permission to use, copy, modify, and distribute this +software and its documentation for any purpose and without +fee is hereby granted, provided that the above copyright +notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting +documentation, and that the name of Silicon Graphics not be +used in advertising or publicity pertaining to distribution +of the software without specific prior written permission. +Silicon Graphics makes no representation about the suitability +of this software for any purpose. It is provided "as is" +without any express or implied warranty. + +SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON +GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL +DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH +THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +------------------------------------------------------------------------------- + + +Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +------------------------------------------------------------------------------- + + +Copyright (C) 2011 Joseph Adams + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +------------------------------------------------------------------------------- + + + +END OF SOFTWARE COPYRIGHT/LICENSE STATEMENTS + + +BEGINNING OF LICENSE STATEMENTS FOR UNDISTRIBUTED DATA FILES IN test/data, +derived from xkeyboard-config: + + + +------------------------------------------------------------------------------- + +Copyright 1996 by Joseph Moss +Copyright (C) 2002-2007 Free Software Foundation, Inc. +Copyright (C) Dmitry Golubev , 2003-2004 +Copyright (C) 2004, Gregory Mokhin +Copyright (C) 2006 Erdal Ronahî + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of the copyright holder(s) not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. The copyright holder(s) makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +THE COPYRIGHT HOLDER(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +------------------------------------------------------------------------------- + + Copyright 1992 by Oki Technosystems Laboratory, Inc. + Copyright 1992 by Fuji Xerox Co., Ltd. + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and +that both that copyright notice and this permission notice appear +in supporting documentation, and that the name of Oki Technosystems +Laboratory and Fuji Xerox not be used in advertising or publicity +pertaining to distribution of the software without specific, written +prior permission. +Oki Technosystems Laboratory and Fuji Xerox make no representations +about the suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +OKI TECHNOSYSTEMS LABORATORY AND FUJI XEROX DISCLAIM ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OKI TECHNOSYSTEMS +LABORATORY AND FUJI XEROX BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE +OR PERFORMANCE OF THIS SOFTWARE. diff --git a/app/src/main/jni/libxkbcommon/METADATA b/app/src/main/jni/libxkbcommon/METADATA new file mode 100644 index 0000000..4d140f1 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/METADATA @@ -0,0 +1,20 @@ +name: "libxkbcommon" +description: + "libxkbcommon is a keyboard keymap compiler and support library which " + "processes a reduced subset of keymaps as defined by the XKB (X Keyboard " + "Extension) specification. It also contains a module for handling Compose " + "and dead keys." + +third_party { + url { + type: HOMEPAGE + value: "https://github.com/xkbcommon/libxkbcommon" + } + url { + type: ARCHIVE + value: "https://github.com/xkbcommon/libxkbcommon/archive/xkbcommon-0.5.0.tar.gz" + } + version: "0.5.0" + last_upgrade_date { year: 2017 month: 9 day: 29 } + license_type: NOTICE +} diff --git a/app/src/main/jni/libxkbcommon/MODULE_LICENSE_MIT b/app/src/main/jni/libxkbcommon/MODULE_LICENSE_MIT new file mode 100644 index 0000000..e69de29 diff --git a/app/src/main/jni/libxkbcommon/NOTICE b/app/src/main/jni/libxkbcommon/NOTICE new file mode 100644 index 0000000..d96c428 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/NOTICE @@ -0,0 +1,215 @@ +The following is a list of all copyright notices and license statements which +appear in the xkbcommon source tree. + +If making new contributions, the first form (i.e. Daniel Stone, Ran Benita, +etc) is vastly preferred. + +All licenses are derivative of the MIT/X11 license, mostly identical other +than no-endorsement clauses (e.g. paragraph 4 of The Open Group's license). + +These statements are split into two sections: one for the code compiled and +distributed as part of the libxkbcommon shared library and the code +component of all tests (i.e. everything under src/ and xkbcommon/, plus the +.c and .h files under test/), and another for the test data under test/data, +which is distributed with the xkbcommon source tarball, but not installed to +the system. + + +BEGINNING OF SOFTWARE COPYRIGHT/LICENSE STATEMENTS: + + +------------------------------------------------------------------------------- + +Copyright © 2009-2012 Daniel Stone +Copyright © 2012 Ran Benita +Copyright © 2010, 2012 Intel Corporation +Copyright © 2008, 2009 Dan Nicholson +Copyright © 2010 Francisco Jerez + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + + +------------------------------------------------------------------------------- + + +Copyright 1985, 1987, 1988, 1990, 1998 The Open Group + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the names of the authors or their +institutions shall not be used in advertising or otherwise to promote the +sale, use or other dealings in this Software without prior written +authorization from the authors. + + +------------------------------------------------------------------------------- + + +Copyright (c) 1993, 1994, 1995, 1996 by Silicon Graphics Computer Systems, Inc. + +Permission to use, copy, modify, and distribute this +software and its documentation for any purpose and without +fee is hereby granted, provided that the above copyright +notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting +documentation, and that the name of Silicon Graphics not be +used in advertising or publicity pertaining to distribution +of the software without specific prior written permission. +Silicon Graphics makes no representation about the suitability +of this software for any purpose. It is provided "as is" +without any express or implied warranty. + +SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON +GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL +DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH +THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +------------------------------------------------------------------------------- + + +Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +------------------------------------------------------------------------------- + + +Copyright (C) 2011 Joseph Adams + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +------------------------------------------------------------------------------- + + + +END OF SOFTWARE COPYRIGHT/LICENSE STATEMENTS + + +BEGINNING OF LICENSE STATEMENTS FOR UNDISTRIBUTED DATA FILES IN test/data, +derived from xkeyboard-config: + + + +------------------------------------------------------------------------------- + +Copyright 1996 by Joseph Moss +Copyright (C) 2002-2007 Free Software Foundation, Inc. +Copyright (C) Dmitry Golubev , 2003-2004 +Copyright (C) 2004, Gregory Mokhin +Copyright (C) 2006 Erdal Ronahî + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of the copyright holder(s) not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. The copyright holder(s) makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +THE COPYRIGHT HOLDER(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +------------------------------------------------------------------------------- + + Copyright 1992 by Oki Technosystems Laboratory, Inc. + Copyright 1992 by Fuji Xerox Co., Ltd. + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and +that both that copyright notice and this permission notice appear +in supporting documentation, and that the name of Oki Technosystems +Laboratory and Fuji Xerox not be used in advertising or publicity +pertaining to distribution of the software without specific, written +prior permission. +Oki Technosystems Laboratory and Fuji Xerox make no representations +about the suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +OKI TECHNOSYSTEMS LABORATORY AND FUJI XEROX DISCLAIM ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OKI TECHNOSYSTEMS +LABORATORY AND FUJI XEROX BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE +OR PERFORMANCE OF THIS SOFTWARE. diff --git a/app/src/main/jni/libxkbcommon/OWNERS b/app/src/main/jni/libxkbcommon/OWNERS new file mode 100644 index 0000000..6ccd5b6 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/OWNERS @@ -0,0 +1,5 @@ +# Default code reviewers picked from top 3 or more developers. +# Please update this list if you find better candidates. +prabirmsp@google.com +xutan@google.com +yhanada@google.com diff --git a/app/src/main/jni/libxkbcommon/README.version b/app/src/main/jni/libxkbcommon/README.version new file mode 100644 index 0000000..85e5e76 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/README.version @@ -0,0 +1,3 @@ +URL: https://github.com/xkbcommon/libxkbcommon/archive/xkbcommon-0.5.0.tar.gz +Version: 0.5.0 +Owners: denniskempin, adlr diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/.autom4te.cfg b/app/src/main/jni/libxkbcommon/xkbcommon/.autom4te.cfg new file mode 100644 index 0000000..36e4354 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/.autom4te.cfg @@ -0,0 +1,3 @@ +begin-language: "Autoconf-without-aclocal-m4" +args: --cache=build-aux +end-language: "Autoconf-without-aclocal-m4" diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/.travis.yml b/app/src/main/jni/libxkbcommon/xkbcommon/.travis.yml new file mode 100644 index 0000000..88dd261 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/.travis.yml @@ -0,0 +1,12 @@ +language: c + +before_install: + - sudo apt-get update -qq + - sudo apt-get install xutils-dev + +compiler: + - gcc + - clang + +# libxcb too old -- should enable when possible. +script: ./autogen.sh --disable-x11 && make && make check diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/.uncrustify.cfg b/app/src/main/jni/libxkbcommon/xkbcommon/.uncrustify.cfg new file mode 100644 index 0000000..3a02039 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/.uncrustify.cfg @@ -0,0 +1,228 @@ +tok_split_gte=false +utf8_byte=true +utf8_force=true +indent_cmt_with_tabs=false +indent_align_string=false +indent_braces=false +indent_braces_no_func=false +indent_braces_no_class=false +indent_braces_no_struct=false +indent_brace_parent=false +indent_namespace=false +indent_extern=false +indent_class=false +indent_class_colon=false +indent_else_if=false +indent_var_def_cont=false +indent_func_call_param=false +indent_func_def_param=false +indent_func_proto_param=false +indent_func_class_param=false +indent_func_ctor_var_param=false +indent_template_param=false +indent_func_param_double=false +indent_relative_single_line_comments=false +indent_col1_comment=false +indent_access_spec_body=false +indent_paren_nl=false +indent_comma_paren=false +indent_bool_paren=false +indent_first_bool_expr=false +indent_square_nl=false +indent_preserve_sql=false +indent_align_assign=true +sp_balance_nested_parens=false +align_keep_tabs=false +align_with_tabs=false +align_on_tabstop=false +align_number_left=false +align_func_params=false +align_same_func_call_params=false +align_var_def_colon=true +align_var_def_attribute=true +align_var_def_inline=true +align_right_cmt_mix=false +align_on_operator=false +align_mix_var_proto=false +align_single_line_func=false +align_single_line_brace=false +align_nl_cont=false +align_left_shift=true +align_oc_decl_colon=true +nl_collapse_empty_body=true +nl_assign_leave_one_liners=true +nl_class_leave_one_liners=true +nl_enum_leave_one_liners=true +nl_getset_leave_one_liners=true +nl_func_leave_one_liners=true +nl_if_leave_one_liners=true +nl_multi_line_cond=false +nl_multi_line_define=false +nl_before_case=true +nl_after_case=true +nl_after_return=false +nl_after_semicolon=true +nl_after_brace_open=true +nl_after_brace_open_cmt=false +nl_after_vbrace_open=false +nl_after_vbrace_open_empty=false +nl_after_brace_close=false +nl_after_vbrace_close=false +nl_define_macro=false +nl_squeeze_ifdef=false +nl_ds_struct_enum_cmt=false +nl_ds_struct_enum_close_brace=false +nl_create_if_one_liner=false +nl_create_for_one_liner=false +nl_create_while_one_liner=false +ls_for_split_full=false +ls_func_split_full=false +nl_after_multiline_comment=false +eat_blanks_after_open_brace=false +eat_blanks_before_close_brace=false +mod_full_brace_if_chain=false +mod_pawn_semicolon=false +mod_full_paren_if_bool=false +mod_remove_extra_semicolon=false +mod_sort_import=false +mod_sort_using=false +mod_sort_include=false +mod_move_case_break=false +mod_remove_empty_return=false +cmt_indent_multi=true +cmt_c_group=false +cmt_c_nl_start=false +cmt_c_nl_end=false +cmt_cpp_group=false +cmt_cpp_nl_start=false +cmt_cpp_nl_end=false +cmt_cpp_to_c=true +cmt_star_cont=true +cmt_multi_check_last=true +cmt_insert_before_preproc=false +pp_indent_at_level=false +pp_region_indent_code=false +pp_if_indent_code=false +pp_define_at_level=false +indent_columns=4 +indent_brace=0 +indent_switch_case=0 +align_struct_init_span=2 +align_pp_define_gap=0 +align_pp_define_span=2 +align_oc_msg_colon_span=16 +nl_end_of_file_min=1 +nl_func_var_def_blk=0 +code_width=78 +nl_max=2 +newlines=auto +indent_with_tabs=0 +sp_arith=force +sp_assign=force +sp_assign_default=force +sp_before_assign=force +sp_after_assign=force +sp_enum_assign=force +sp_enum_before_assign=force +sp_enum_after_assign=force +sp_pp_stringify=add +sp_bool=force +sp_compare=force +sp_inside_paren=remove +sp_paren_paren=remove +sp_paren_brace=force +sp_before_ptr_star=ignore +sp_before_unnamed_ptr_star=force +sp_before_byref=force +sp_before_unnamed_byref=force +sp_after_byref=remove +sp_after_type=force +sp_before_sparen=force +sp_inside_sparen=remove +sp_inside_sparen_close=remove +sp_after_sparen=force +sp_sparen_brace=force +sp_special_semi=force +sp_before_semi=remove +sp_after_semi=force +sp_after_semi_for=force +sp_after_semi_for_empty=force +sp_before_square=remove +sp_inside_square=remove +sp_after_comma=force +sp_before_comma=remove +sp_paren_comma=force +sp_before_ellipsis=force +sp_after_class_colon=force +sp_before_class_colon=force +sp_before_case_colon=remove +sp_after_cast=force +sp_inside_paren_cast=remove +sp_sizeof_paren=remove +sp_inside_braces_enum=force +sp_inside_braces_struct=force +sp_inside_braces=force +sp_inside_braces_empty=force +sp_func_proto_paren=remove +sp_func_def_paren=remove +sp_inside_fparens=remove +sp_inside_fparen=remove +sp_square_fparen=remove +sp_fparen_brace=force +sp_func_call_paren=remove +sp_func_call_paren_empty=remove +sp_return_paren=force +sp_attribute_paren=remove +sp_defined_paren=remove +sp_macro=force +sp_macro_func=force +sp_else_brace=force +sp_brace_else=force +sp_brace_typedef=force +sp_not=remove +sp_inv=remove +nl_start_of_file=remove +nl_end_of_file=force +nl_assign_square=remove +nl_after_square_assign=remove +nl_fcall_brace=remove +nl_enum_brace=remove +nl_struct_brace=remove +nl_union_brace=remove +nl_if_brace=remove +nl_brace_else=force +nl_elseif_brace=remove +nl_else_brace=remove +nl_else_if=remove +nl_for_brace=remove +nl_do_brace=remove +nl_brace_while=remove +nl_switch_brace=remove +nl_case_colon_brace=force +nl_func_type_name=force +nl_func_type_name_class=force +nl_func_proto_type_name=force +nl_func_paren=remove +nl_func_def_paren=remove +nl_func_decl_start=remove +nl_func_def_start=remove +nl_func_decl_args=remove +nl_func_decl_end=remove +nl_func_def_end=remove +nl_func_decl_end_single=remove +nl_func_def_end_single=remove +nl_func_decl_empty=remove +nl_func_def_empty=remove +nl_fdef_brace=force +nl_return_expr=remove +nl_before_if=ignore +nl_after_if=ignore +nl_before_for=ignore +nl_after_for=ignore +nl_before_while=ignore +nl_after_while=ignore +nl_before_switch=ignore +nl_after_switch=ignore +nl_before_do=ignore +nl_after_do=ignore +pp_space=remove diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/COPYING b/app/src/main/jni/libxkbcommon/xkbcommon/COPYING new file mode 100644 index 0000000..d96c428 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/COPYING @@ -0,0 +1,215 @@ +The following is a list of all copyright notices and license statements which +appear in the xkbcommon source tree. + +If making new contributions, the first form (i.e. Daniel Stone, Ran Benita, +etc) is vastly preferred. + +All licenses are derivative of the MIT/X11 license, mostly identical other +than no-endorsement clauses (e.g. paragraph 4 of The Open Group's license). + +These statements are split into two sections: one for the code compiled and +distributed as part of the libxkbcommon shared library and the code +component of all tests (i.e. everything under src/ and xkbcommon/, plus the +.c and .h files under test/), and another for the test data under test/data, +which is distributed with the xkbcommon source tarball, but not installed to +the system. + + +BEGINNING OF SOFTWARE COPYRIGHT/LICENSE STATEMENTS: + + +------------------------------------------------------------------------------- + +Copyright © 2009-2012 Daniel Stone +Copyright © 2012 Ran Benita +Copyright © 2010, 2012 Intel Corporation +Copyright © 2008, 2009 Dan Nicholson +Copyright © 2010 Francisco Jerez + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + + +------------------------------------------------------------------------------- + + +Copyright 1985, 1987, 1988, 1990, 1998 The Open Group + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the names of the authors or their +institutions shall not be used in advertising or otherwise to promote the +sale, use or other dealings in this Software without prior written +authorization from the authors. + + +------------------------------------------------------------------------------- + + +Copyright (c) 1993, 1994, 1995, 1996 by Silicon Graphics Computer Systems, Inc. + +Permission to use, copy, modify, and distribute this +software and its documentation for any purpose and without +fee is hereby granted, provided that the above copyright +notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting +documentation, and that the name of Silicon Graphics not be +used in advertising or publicity pertaining to distribution +of the software without specific prior written permission. +Silicon Graphics makes no representation about the suitability +of this software for any purpose. It is provided "as is" +without any express or implied warranty. + +SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON +GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL +DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH +THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +------------------------------------------------------------------------------- + + +Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +------------------------------------------------------------------------------- + + +Copyright (C) 2011 Joseph Adams + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +------------------------------------------------------------------------------- + + + +END OF SOFTWARE COPYRIGHT/LICENSE STATEMENTS + + +BEGINNING OF LICENSE STATEMENTS FOR UNDISTRIBUTED DATA FILES IN test/data, +derived from xkeyboard-config: + + + +------------------------------------------------------------------------------- + +Copyright 1996 by Joseph Moss +Copyright (C) 2002-2007 Free Software Foundation, Inc. +Copyright (C) Dmitry Golubev , 2003-2004 +Copyright (C) 2004, Gregory Mokhin +Copyright (C) 2006 Erdal Ronahî + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of the copyright holder(s) not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. The copyright holder(s) makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +THE COPYRIGHT HOLDER(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +------------------------------------------------------------------------------- + + Copyright 1992 by Oki Technosystems Laboratory, Inc. + Copyright 1992 by Fuji Xerox Co., Ltd. + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and +that both that copyright notice and this permission notice appear +in supporting documentation, and that the name of Oki Technosystems +Laboratory and Fuji Xerox not be used in advertising or publicity +pertaining to distribution of the software without specific, written +prior permission. +Oki Technosystems Laboratory and Fuji Xerox make no representations +about the suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +OKI TECHNOSYSTEMS LABORATORY AND FUJI XEROX DISCLAIM ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OKI TECHNOSYSTEMS +LABORATORY AND FUJI XEROX BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE +OR PERFORMANCE OF THIS SOFTWARE. diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/Makefile.am b/app/src/main/jni/libxkbcommon/xkbcommon/Makefile.am new file mode 100644 index 0000000..8e45ccb --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/Makefile.am @@ -0,0 +1,309 @@ +ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = xkbcommon.pc + +EXTRA_DIST = \ + makekeys.py \ + src/xkbcomp/keywords.gperf \ + test/data \ + README.md \ + doc/quick-guide.md \ + doc/compat.md \ + doc/keymap-format-text-v1.txt \ + doc/rules-format.txt \ + doc/doxygen-extra.css \ + xkbcommon.map \ + xkbcommon-x11.map \ + PACKAGING + +AM_CPPFLAGS = \ + -DDFLT_XKB_CONFIG_ROOT='"$(XKBCONFIGROOT)"' \ + -DXLOCALEDIR='"$(XLOCALEDIR)"' \ + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/xkbcomp \ + -I$(top_builddir)/src/xkbcomp \ + -include $(top_builddir)/src/config.h + +AM_CFLAGS = $(BASE_CFLAGS) + +AM_LDFLAGS = -no-undefined +if HAVE_NO_UNDEFINED +AM_LDFLAGS += -Wl,--no-undefined +endif + +AM_YFLAGS = -d -p _xkbcommon_ + +xkbcommonincludedir = $(includedir)/xkbcommon +xkbcommoninclude_HEADERS = \ + xkbcommon/xkbcommon.h \ + xkbcommon/xkbcommon-compat.h \ + xkbcommon/xkbcommon-compose.h \ + xkbcommon/xkbcommon-keysyms.h \ + xkbcommon/xkbcommon-names.h + +lib_LTLIBRARIES = libxkbcommon.la +libxkbcommon_la_SOURCES = \ + src/compose/parser.c \ + src/compose/parser.h \ + src/compose/paths.c \ + src/compose/paths.h \ + src/compose/state.c \ + src/compose/table.c \ + src/compose/table.h \ + src/xkbcomp/action.c \ + src/xkbcomp/action.h \ + src/xkbcomp/ast.h \ + src/xkbcomp/ast-build.c \ + src/xkbcomp/ast-build.h \ + src/xkbcomp/compat.c \ + src/xkbcomp/expr.c \ + src/xkbcomp/expr.h \ + src/xkbcomp/include.c \ + src/xkbcomp/include.h \ + src/xkbcomp/keycodes.c \ + src/xkbcomp/keymap.c \ + src/xkbcomp/keymap-dump.c \ + src/xkbcomp/keywords.c \ + src/xkbcomp/parser.y \ + src/xkbcomp/parser-priv.h \ + src/xkbcomp/rules.c \ + src/xkbcomp/rules.h \ + src/xkbcomp/scanner.c \ + src/xkbcomp/symbols.c \ + src/xkbcomp/types.c \ + src/xkbcomp/vmod.c \ + src/xkbcomp/vmod.h \ + src/xkbcomp/xkbcomp.c \ + src/xkbcomp/xkbcomp-priv.h \ + src/atom.c \ + src/atom.h \ + src/context.c \ + src/context.h \ + src/context-priv.c \ + src/darray.h \ + src/keysym.c \ + src/keysym.h \ + src/keysym-utf.c \ + src/ks_tables.h \ + src/keymap.c \ + src/keymap.h \ + src/keymap-priv.c \ + src/scanner-utils.h \ + src/state.c \ + src/text.c \ + src/text.h \ + src/utf8.c \ + src/utf8.h \ + src/utils.c \ + src/utils.h +libxkbcommon_la_LDFLAGS = -Wl,--version-script=${srcdir}/xkbcommon.map + +if ENABLE_X11 +pkgconfig_DATA += xkbcommon-x11.pc + +xkbcommon_x11includedir = $(xkbcommonincludedir) +xkbcommon_x11include_HEADERS = \ + xkbcommon/xkbcommon-x11.h + +lib_LTLIBRARIES += libxkbcommon-x11.la + +libxkbcommon_x11_la_CFLAGS = $(AM_CFLAGS) $(XCB_XKB_CFLAGS) +libxkbcommon_x11_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(top_srcdir)/src/x11 +libxkbcommon_x11_la_LIBADD = libxkbcommon.la $(XCB_XKB_LIBS) +libxkbcommon_x11_la_LDFLAGS = -Wl,--version-script=${srcdir}/xkbcommon-x11.map + +libxkbcommon_x11_la_SOURCES = \ + src/x11/keymap.c \ + src/x11/state.c \ + src/x11/util.c \ + src/x11/x11-priv.h \ + src/context.h \ + src/context-priv.c \ + src/keymap.h \ + src/keymap-priv.c \ + src/atom.h \ + src/atom.c +endif ENABLE_X11 + +BUILT_SOURCES = \ + src/xkbcomp/parser.c \ + src/xkbcomp/parser.h +CLEANFILES = $(BUILT_SOURCES) + +src/xkbcomp/parser.c: $(top_builddir)/src/$(am__dirstamp) $(top_builddir)/src/xkbcomp/$(am__dirstamp) +src/xkbcomp/parser.h: $(top_builddir)/src/$(am__dirstamp) $(top_builddir)/src/xkbcomp/$(am__dirstamp) + +## +# Documentation +## + +if ENABLE_DOCS +if HAVE_DOXYGEN +doc: doc/stamp-doxygen +clean-doc: clean-doxygen +all-local:: doc +clean-local:: clean-doc + +doc/stamp-doxygen: $(top_srcdir)/xkbcommon/*.h + $(AM_V_GEN)$(DOXYGEN) doc/Doxyfile + touch $@ + +clean-doxygen: + rm -rf doc/html doc/stamp-doxygen + +install-data-local:: doc + $(MKDIR_P) $(DESTDIR)$(htmldir) + $(INSTALL_DATA) doc/html/* $(DESTDIR)$(htmldir) + +uninstall-local:: + rm -rf $(DESTDIR)$(htmldir) +endif HAVE_DOXYGEN +endif ENABLE_DOCS + +## +# Tests +## + +# Some tests need to use unexported symbols, so we link them against +# a private copy of libxkbcommon with all symbols exposed. +check_LTLIBRARIES = libtest.la +libtest_la_SOURCES = \ + $(libxkbcommon_la_SOURCES) \ + test/common.c \ + test/test.h \ + test/evdev-scancodes.h + +AM_TESTS_ENVIRONMENT = \ + XKB_LOG_LEVEL=debug; export XKB_LOG_LEVEL; \ + XKB_LOG_VERBOSITY=10; export XKB_LOG_VERBOSITY; \ + $(XORG_MALLOC_DEBUG_ENV) + +TESTS = \ + test/keysym \ + test/filecomp \ + test/context \ + test/rules-file \ + test/stringcomp \ + test/buffercomp \ + test/log \ + test/atom \ + test/utf8 \ + test/state \ + test/keyseq \ + test/rulescomp \ + test/compose +check_PROGRAMS = \ + test/rmlvo-to-kccgst \ + test/print-compiled-keymap + +TESTS_LDADD = libtest.la + +test_keysym_LDADD = $(TESTS_LDADD) +test_filecomp_LDADD = $(TESTS_LDADD) +test_context_LDADD = $(TESTS_LDADD) +test_rules_file_CFLAGS = $(AM_CFLAGS) -Wno-declaration-after-statement +test_rules_file_LDADD = $(TESTS_LDADD) +test_stringcomp_LDADD = $(TESTS_LDADD) +test_buffercomp_LDADD = $(TESTS_LDADD) +test_log_LDADD = $(TESTS_LDADD) +test_atom_LDADD = $(TESTS_LDADD) +test_utf8_LDADD = $(TESTS_LDADD) +test_state_LDADD = $(TESTS_LDADD) +test_keyseq_LDADD = $(TESTS_LDADD) +test_rulescomp_LDADD = $(TESTS_LDADD) +test_rmlvo_to_kccgst_LDADD = $(TESTS_LDADD) +test_print_compiled_keymap_LDADD = $(TESTS_LDADD) +test_compose_LDADD = $(TESTS_LDADD) $(RT_LIBS) + +if BUILD_LINUX_TESTS +check_PROGRAMS += \ + test/interactive-evdev + +test_interactive_evdev_LDADD = $(TESTS_LDADD) +endif BUILD_LINUX_TESTS + +if ENABLE_X11 +TESTS += \ + test/x11 \ + test/x11comp +check_PROGRAMS += \ + test/interactive-x11 + +TESTS_X11_LDADD = $(XCB_XKB_LIBS) $(TESTS_LDADD) libxkbcommon-x11.la +TESTS_X11_CFLAGS = $(XCB_XKB_CFLAGS) + +test_x11_LDADD = $(TESTS_X11_LDADD) +test_x11_CFLAGS = $(TESTS_X11_CFLAGS) +test_x11comp_LDADD = $(TESTS_X11_LDADD) +test_x11comp_CFLAGS = $(TESTS_X11_CFLAGS) +test_interactive_x11_LDADD = $(TESTS_X11_LDADD) +test_interactive_x11_CFLAGS = $(TESTS_X11_CFLAGS) +endif ENABLE_X11 + +check_PROGRAMS += $(TESTS) + +## +# Benchmarks +## + +BENCH_LDADD = $(TESTS_LDADD) $(RT_LIBS) + +check_PROGRAMS += \ + bench/key-proc \ + bench/rules \ + bench/rulescomp \ + bench/compose +bench_key_proc_LDADD = $(BENCH_LDADD) +bench_rules_LDADD = $(BENCH_LDADD) +bench_rulescomp_LDADD = $(BENCH_LDADD) +bench_compose_LDADD = $(BENCH_LDADD) + +## +# Custom targets +## + +# This sed script strips out lines that start with '#define _' which +# removes #define _OSF_Keysyms and such. The XK_Ydiaeresis case is to +# handle a duplicate definition in HPkeysyms.h which kicks in if it's +# not already defined. +X11_INCLUDEDIR = /usr/include/X11 +KEYSYMDEFS = \ + $(X11_INCLUDEDIR)/keysymdef.h \ + $(X11_INCLUDEDIR)/XF86keysym.h \ + $(X11_INCLUDEDIR)/Sunkeysym.h \ + $(X11_INCLUDEDIR)/DECkeysym.h \ + $(X11_INCLUDEDIR)/HPkeysym.h +update-keysyms: + echo -en '#ifndef _XKBCOMMON_KEYSYMS_H\n#define _XKBCOMMON_KEYSYMS_H\n\n' > $(top_srcdir)/xkbcommon/xkbcommon-keysyms.h + echo -en '/* This file is autogenerated from Makefile.am; please do not commit directly. */\n\n' >> $(top_srcdir)/xkbcommon/xkbcommon-keysyms.h + echo -en '#define XKB_KEY_NoSymbol 0x000000 /* Special KeySym */\n\n' >> $(top_srcdir)/xkbcommon/xkbcommon-keysyms.h + sed -e '/XK_Ydiaeresis\s*0x100000ee/d' \ + -e '/#define _/d' \ + -e 's/#define\s*\(\w*\)XK_/#define XKB_KEY_\1/' \ + -e '/\(#ifdef\|#ifndef\|#endif\)/d' $(KEYSYMDEFS) >> $(top_srcdir)/xkbcommon/xkbcommon-keysyms.h + echo -en '\n\n#endif\n' >> $(top_srcdir)/xkbcommon/xkbcommon-keysyms.h + LC_CTYPE=C python $(top_srcdir)/makekeys.py $(top_srcdir)/xkbcommon/xkbcommon-keysyms.h > $(top_srcdir)/src/ks_tables.h + +# Run this if you add/remove a new keyword to the xkbcomp scanner, +# or just want to regenerate the gperf file. +update-keywords: + $(AM_V_GEN)gperf < $(top_srcdir)/src/xkbcomp/keywords.gperf > $(top_srcdir)/src/xkbcomp/keywords.c + +## +# Android stuff +## + +Android_build.mk: Makefile $(BUILT_SOURCES) + androgenizer \ + -:PROJECT libxkbcommon \ + -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \ + \ + -:STATIC libxkbcommon \ + -:TAGS eng debug \ + -:SOURCES $(filter-out %.l %.y,$(libxkbcommon_la_SOURCES)) $(BUILT_SOURCES) \ + -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(AM_CPPFLAGS) $(AM_CFLAGS) \ + -:LDFLAGS $(AM_LDFLAGS) \ + \ + -:PASSTHROUGH 'libxkbcommon-clean: clean-libxkbcommon' \ + > $@ diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/NEWS b/app/src/main/jni/libxkbcommon/xkbcommon/NEWS new file mode 100644 index 0000000..bec2bd9 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/NEWS @@ -0,0 +1,218 @@ +libxkbcommon 0.5.0 - 2014-10-18 +================== + +- Added support for Compose/dead keys in a new module (included in + libxkbcommon). See the documentation or the + xkbcommon/xkbcommon-compose.h header file for more details. + +- Improved and reordered some sections of the documentation. + +- The doxygen HTML pages were made nicer to read. + +- Most tests now run also on non-linux platforms. + +- A warning is emitted by default about RMLVO values which are not used + during keymap compilation, which are most often a user misconfiguration. + For example, "terminate:ctrl_alt_backspace" instead of + "terminate:ctrl_alt_bksp". + +- Added symbol versioning for libxkbcommon and libxkbcommon-x11. + Note: binaries compiled against this and future versions will not be + able to link against the previous versions of the library. + +- Removed several compatablity symbols from the binary (the API isn't + affected). This affects binaries which + + 1. Were compiled against a pre-stable (<0.2.0) version of libxkbcommon, and + 2. Are linked against the this or later version of libxkbcommon. + + Such a scenario is likely to fail already. + +- If Xvfb is not available, the x11comp test is now correctly skipped + instead of hanging. + +- Benchmarks were moved to a separate bench/ directory. + +- Build fixes from OpenBSD. + +- Fixed a bug where key type entries such as "map[None] = Level2;" were + ignored. + +- New API: + XKB_COMPOSE_* + xkb_compose_* + +libxkbcommon 0.4.3 - 2014-08-19 +================== + +- Fixed a bug which caused xkb_x11_keymap_new_from_device() to misrepresent + modifiers for some keymaps. + + https://github.com/xkbcommon/libxkbcommon/issues/9 + +- Fixed a bug which caused xkb_x11_keymap_new_from_device() to ignore XKB + PrivateAction's. + +- Modifiers are now always fully resolved after xkb_state_update_mask(). + Previously the given state components were used as-is, without + considering virtual modifier mappings. + Note: this only affects non-standard uses of xkb_state_update_mask(). + +- Added a test for xkbcommon-x11, "x11comp". The test uses the system's + Xvfb server and xkbcomp. If they do not exist or fail, the test is + skipped. + +- Fixed memory leaks after parse errors in the XKB yacc parser. + The fix required changes which are currently incompatible with byacc. + +libxkbcommon 0.4.2 - 2014-05-15 +================== + +- Fixed a bug where explicitly passing "--enable-x11" to ./configure would + in fact disable it (regressed in 0.4.1). + +- Added @since version annotations to the API documentation for everything + introduced after the initial stable release (0.2.0). + +- Added a section to the documentation about keysym transformations, and + clarified which functions perform a given transformation. + +- XKB files which fail to compile during keymap construction can no longer + have any effect on the resulting keymap: changes are only applied when + the entire compilation succeeds. + Note: this was a minor correctness issue inherited from xkbcomp. + +- Fix an out-of-bounds array access in src/x11/util.c:adopt_atoms() + error-handling code. + Note: it seems impossible to trigger in the current code since the input + size cannot exceed the required size. + +libxkbcommon 0.4.1 - 2014-03-27 +================== + +- Converted README to markdown and added a Quick Guide to the + documentation, which breezes through the most common parts of + xkbcommon. + +- Added two new functions, xkb_state_key_get_utf{8,32}(). They + combine the operations of xkb_state_key_get_syms() and + xkb_keysym_to_utf{8,32}(), and provide a nicer interface for it + (espcially for multiple-keysyms-per-level). + +- The xkb_state_key_get_utf{8,32}() functions now apply Control + transformation: when the Control modifier is active, the string + is converted to an appropriate control character. + This matches the behavior of libX11's XLookupString(3), and + required by the XKB specification: + http://www.x.org/releases/current/doc/kbproto/xkbproto.html#Interpreting_the_Control_Modifier + + https://bugs.freedesktop.org/show_bug.cgi?id=75892 + +- The consumed modifiers for a key are now calculated similarly + to libX11. The previous behavior caused a bug where Shift would + not cancel an active Caps Lock. + +- Make xkbcommon-x11 work with the keymap reported by the XQuartz + X server. + + https://bugs.freedesktop.org/show_bug.cgi?id=75798 + +- Reduce memory usage during keymap compilation some more. + +- New API: + xkb_state_key_get_consumed_mods() + xkb_state_key_get_utf8() + xkb_state_key_get_utf32() + +- Deprecated API: + XKB_MAP_COMPILE_PLACEHOLDER, XKB_MAP_NO_FLAGS + use XKB_KEYMAP_NO_FLAGS instead. + +- Bug fixes. + +libxkbcommon 0.4.0 - 2014-02-02 +================== + +- Add a new add-on library, xkbcommon-x11, to support creating keymaps + with the XKB X11 protocol, by querying the X server directly. + See the xkbcommon/xkbcommon-x11.h header file for more details. + This library requires libxcb-xkb >= 1.10, and is enabled by default. + It can be disabled with the --disable-x11 configure switch. + Distributions are encouraged to split the necessary files for this + library (libxkbcommon-x11.so, xkbcommon-x11.pc, xkbcommon/xkbcommon-x11.h) + to a separate package, such that the main package does not depend on + X11 libraries. + +- Fix the keysym <-> name lookup table to not require huge amounts of + relocations. + +- Fix a bug in the keysym <-> name lookup, whereby lookup might fail in + some rare cases. + +- Reduce memory usage during keymap compilation. + +- New API: + New keysyms from xproto 7.0.25 (German T3 layout keysyms). + XKB_MOD_NAME_NUM for the usual NumLock modifier. + xkb_x11_* types and functions, XKB_X11_* constants. + + +libxkbcommon 0.3.2 - 2013-11-22 +================== + +- Log messages from the library now look like "xkbcommon: ERROR" by + default, instead of xkbcomp-like "Error: ". + +- Apply capitalization transformation on keysyms in + xkb_keysym_get_one_sym(), to match the behavior specified in the XKB + specification: + http://www.x.org/releases/current/doc/kbproto/xkbproto.html#Interpreting_the_Lock_Modifier + +- Support byacc for generating the parser, in addition to Bison. + +- New API: + XKB_KEY_XF86AudioMicMute keysym from xproto 7.0.24. + XKB_KEYSYM_NO_FLAGS + XKB_CONTEXT_NO_FLAGS + XKB_MAP_COMPILE_NO_FLAGS + +- Bug fixes. + + +libxkbcommon 0.3.1 - 2013-06-03 +================== + +- Replace the flex scanner with a hand-written one. flex is no longer + a build requirement. + +- New API: + xkb_keymap_min_keycode() + xkb_keymap_max_keycode() + xkb_keymap_key_for_each() + + +libxkbcommon 0.3.0 - 2013-04-01 +================== + +- Allow passing NULL to *_unref() functions; do nothing instead of + crashing. + +- The functions xkb_keymap_num_levels_for_key() and + xkb_keymap_get_syms_by_level() now allow out-of-range values for the + 'layout' parameter. The functions now wrap the value around the number + of layouts instead of failing. + +- The function xkb_keysym_get_name() now types unicode keysyms in + uppercase and 0-padding, to match the format used by XKeysymToString(). + +- Building Linux-specific tests is no longer attempted on non-Linux + environments. + +- The function xkb_keymap_new_from_names() now accepts a NULL value for + the 'names' parameter, instead of failing. This is equivalent to passing + a 'struct xkb_rule_names' with all fields set to NULL. + +- New API: + xkb_keymap_new_from_buffer() + +- Bug fixes. diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/PACKAGING b/app/src/main/jni/libxkbcommon/xkbcommon/PACKAGING new file mode 100644 index 0000000..738ccc4 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/PACKAGING @@ -0,0 +1,50 @@ +libxkbcommon consists of two shared libraries, libxkbcommon (the main +library) and libxkbcommon-x11 (an addon library for XCB clients). + +The files for libxkbcommon-x11 are: + libxkbcommon-x11.a libxkbcommon.so* xkbcommon/xkbcommon-x11.h + xkbcommon-x11.map xkbcommon-x11.pc + +libxkbcommon-x11 can be disabled with --disable-x11 (see +`./configure --help` for other options/variables). + +Dependencies for libxkbcommon: +- C compiler, autoconf, automake, pkg-config, libc, etc. + +- (build optional) xorg-util-macros. + Output included in tarball. + +- (build optional) bison (preferred) or byacc>=20141006. + Output included in tarball. + byacc must be configured with --enable-btyacc. + +- (build optional, runtime) xkeyboard-config. + During build, for automatically detecting the value of + --with-xkb-config-root instead of guessing (/usr/share/X11/xkb). + During runtime, not strictly needed, but most users of the library + would need it. + +- (runtime) libX11. + Contains the dataset for Compose support (/usr/share/X11/locale). + Please don't depend on it explicitly. + +- (build optional) doxygen. + For generating the HTML documentation. + +- (build optional) gperf. + Output included in git and tarball. To regenerate, use + `make update-keywords`. + +Dependencies for libxkbcommon-x11: +- libxkbcommon. + +- libxcb>=1.10 with libxcb-xkb. + +Dependencies for libxkbcommon-x11 tests: +- xkbcomp, Xvfb. + If they are not available, the relevant tests are skipped. + +Unless libxcb is always available as part of the system, it is preferred +that libxkbcommon and libxkbcommon-x11 be split into separate packages, +such that the main library does not depend on libxcb. This avoids a +transitive dependency of Wayland clients on X libraries. diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/README.md b/app/src/main/jni/libxkbcommon/xkbcommon/README.md new file mode 100644 index 0000000..867b532 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/README.md @@ -0,0 +1,59 @@ +# libxkbcommon + +libxkbcommon is a keyboard keymap compiler and support library which +processes a reduced subset of keymaps as defined by the XKB (X Keyboard +Extension) specification. It also contains a module for handling Compose +and dead keys. + +## Quick Guide + +See [Quick Guide](doc/quick-guide.md). + +## API + +While libxkbcommon's API is somewhat derived from the classic XKB API as found +in X11/extensions/XKB.h and friends, it has been substantially reworked to +expose fewer internal details to clients. + +See the [API Documentation](http://xkbcommon.org/doc/current/modules.html). + +## Dataset + +libxkbcommon does not distribute a keymap dataset itself, other than for +testing purposes. The most common dataset is xkeyboard-config, which is used +by all current distributions for their X11 XKB data. More information on +xkeyboard-config is available here: + http://www.freedesktop.org/wiki/Software/XKeyboardConfig + +The dataset for Compose is distributed in libX11, as part of the X locale +data. + +## Relation to X11 + +See [Compatibility](doc/compat.md) notes. + +## Development + +An extremely rudimentary homepage can be found at + http://xkbcommon.org + +xkbcommon is maintained in git at + https://github.com/xkbcommon/libxkbcommon + +Patches are always welcome, and may be sent to either + or +or through github. + +Bugs are also welcome, and may be reported either at + Bugzilla https://bugs.freedesktop.org/describecomponents.cgi?product=libxkbcommon +or + Github https://github.com/xkbcommon/libxkbcommon/issues + +The maintainers are +- Daniel Stone +- Ran Benita + +## Credits + +Many thanks are due to Dan Nicholson for his heroic work in getting xkbcommon +off the ground initially. diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/autogen.sh b/app/src/main/jni/libxkbcommon/xkbcommon/autogen.sh new file mode 100755 index 0000000..c7467f1 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/autogen.sh @@ -0,0 +1,14 @@ +#!/bin/sh -e + +srcdir=`dirname "$0"` +test -z "$srcdir" && srcdir=. + +ORIGDIR=`pwd` +cd "$srcdir" + +autoreconf --verbose --install --force --warnings=all +cd "$ORIGDIR" + +if test -z "$NOCONFIGURE"; then + exec "$srcdir/configure" "$@" +fi diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/bench/.gitignore b/app/src/main/jni/libxkbcommon/xkbcommon/bench/.gitignore new file mode 100644 index 0000000..cd32dfc --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/bench/.gitignore @@ -0,0 +1,4 @@ +key-proc +rules +rulescomp +compose diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/bench/compose.c b/app/src/main/jni/libxkbcommon/xkbcommon/bench/compose.c new file mode 100644 index 0000000..e2ded57 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/bench/compose.c @@ -0,0 +1,76 @@ +/* + * Copyright © 2014 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include + +#include "xkbcommon/xkbcommon-compose.h" + +#include "../test/test.h" + +#define BENCHMARK_ITERATIONS 1000 + +int +main(void) +{ + struct xkb_context *ctx; + struct timespec start, stop, elapsed; + char *path; + FILE *file; + struct xkb_compose_table *table; + + ctx = test_get_context(CONTEXT_NO_FLAG); + assert(ctx); + + path = test_get_path("compose/en_US.UTF-8/Compose"); + file = fopen(path, "r"); + + xkb_context_set_log_level(ctx, XKB_LOG_LEVEL_CRITICAL); + xkb_context_set_log_verbosity(ctx, 0); + + clock_gettime(CLOCK_MONOTONIC, &start); + for (int i = 0; i < BENCHMARK_ITERATIONS; i++) { + rewind(file); + table = xkb_compose_table_new_from_file(ctx, file, "", + XKB_COMPOSE_FORMAT_TEXT_V1, + XKB_COMPOSE_COMPILE_NO_FLAGS); + assert(table); + xkb_compose_table_unref(table); + } + clock_gettime(CLOCK_MONOTONIC, &stop); + + fclose(file); + free(path); + + elapsed.tv_sec = stop.tv_sec - start.tv_sec; + elapsed.tv_nsec = stop.tv_nsec - start.tv_nsec; + if (elapsed.tv_nsec < 0) { + elapsed.tv_nsec += 1000000000; + elapsed.tv_sec--; + } + + fprintf(stderr, "compiled %d compose tables in %ld.%09lds\n", + BENCHMARK_ITERATIONS, elapsed.tv_sec, elapsed.tv_nsec); + + xkb_context_unref(ctx); + return 0; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/bench/key-proc.c b/app/src/main/jni/libxkbcommon/xkbcommon/bench/key-proc.c new file mode 100644 index 0000000..255f033 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/bench/key-proc.c @@ -0,0 +1,95 @@ +/* + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include +#include + +#include "../test/test.h" + +#define BENCHMARK_ITERATIONS 20000000 + +static void +bench(struct xkb_state *state) +{ + int8_t keys[256] = { 0 }; + xkb_keycode_t keycode; + xkb_keysym_t keysym; + int i; + + for (i = 0; i < BENCHMARK_ITERATIONS; i++) { + keycode = (rand() % (255 - 9)) + 9; + if (keys[keycode]) { + xkb_state_update_key(state, keycode, XKB_KEY_UP); + keys[keycode] = 0; + keysym = xkb_state_key_get_one_sym(state, keycode); + (void) keysym; + } else { + xkb_state_update_key(state, keycode, XKB_KEY_DOWN); + keys[keycode] = 1; + } + } +} + +int +main(void) +{ + struct xkb_context *ctx; + struct xkb_keymap *keymap; + struct xkb_state *state; + struct timespec start, stop, elapsed; + + ctx = test_get_context(0); + assert(ctx); + + keymap = test_compile_rules(ctx, "evdev", "pc104", "us,ru,il,de", + ",,,neo", "grp:menu_toggle"); + assert(keymap); + + state = xkb_state_new(keymap); + assert(state); + + xkb_context_set_log_level(ctx, XKB_LOG_LEVEL_CRITICAL); + xkb_context_set_log_verbosity(ctx, 0); + + srand(time(NULL)); + + clock_gettime(CLOCK_MONOTONIC, &start); + bench(state); + clock_gettime(CLOCK_MONOTONIC, &stop); + + elapsed.tv_sec = stop.tv_sec - start.tv_sec; + elapsed.tv_nsec = stop.tv_nsec - start.tv_nsec; + if (elapsed.tv_nsec < 0) { + elapsed.tv_nsec += 1000000000; + elapsed.tv_sec--; + } + + fprintf(stderr, "ran %d iterations in %ld.%09lds\n", + BENCHMARK_ITERATIONS, elapsed.tv_sec, elapsed.tv_nsec); + + xkb_state_unref(state); + xkb_keymap_unref(keymap); + xkb_context_unref(ctx); + + return 0; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/bench/rules.c b/app/src/main/jni/libxkbcommon/xkbcommon/bench/rules.c new file mode 100644 index 0000000..d92ed07 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/bench/rules.c @@ -0,0 +1,71 @@ +/* + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include + +#include "../test/test.h" +#include "xkbcomp-priv.h" +#include "rules.h" + +#define BENCHMARK_ITERATIONS 20000 + +int +main(int argc, char *argv[]) +{ + struct xkb_context *ctx; + struct timespec start, stop, elapsed; + int i; + struct xkb_rule_names rmlvo = { + "evdev", "pc105", "us,il", ",", "ctrl:nocaps,grp:menu_toggle", + }; + struct xkb_component_names kccgst; + + ctx = test_get_context(0); + assert(ctx); + + xkb_context_set_log_level(ctx, XKB_LOG_LEVEL_CRITICAL); + xkb_context_set_log_verbosity(ctx, 0); + + clock_gettime(CLOCK_MONOTONIC, &start); + for (i = 0; i < BENCHMARK_ITERATIONS; i++) { + assert(xkb_components_from_rules(ctx, &rmlvo, &kccgst)); + free(kccgst.keycodes); + free(kccgst.types); + free(kccgst.compat); + free(kccgst.symbols); + } + clock_gettime(CLOCK_MONOTONIC, &stop); + + elapsed.tv_sec = stop.tv_sec - start.tv_sec; + elapsed.tv_nsec = stop.tv_nsec - start.tv_nsec; + if (elapsed.tv_nsec < 0) { + elapsed.tv_nsec += 1000000000; + elapsed.tv_sec--; + } + + fprintf(stderr, "processed %d rule files in %ld.%09lds\n", + BENCHMARK_ITERATIONS, elapsed.tv_sec, elapsed.tv_nsec); + + xkb_context_unref(ctx); + return 0; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/bench/rulescomp.c b/app/src/main/jni/libxkbcommon/xkbcommon/bench/rulescomp.c new file mode 100644 index 0000000..16f2bf5 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/bench/rulescomp.c @@ -0,0 +1,64 @@ +/* + * Copyright © 2009 Dan Nicholson + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include + +#include "../test/test.h" + +#define BENCHMARK_ITERATIONS 2500 + +int +main(int argc, char *argv[]) +{ + struct xkb_context *ctx; + struct xkb_keymap *keymap; + struct timespec start, stop, elapsed; + int i; + + ctx = test_get_context(0); + assert(ctx); + + xkb_context_set_log_level(ctx, XKB_LOG_LEVEL_CRITICAL); + xkb_context_set_log_verbosity(ctx, 0); + + clock_gettime(CLOCK_MONOTONIC, &start); + for (i = 0; i < BENCHMARK_ITERATIONS; i++) { + keymap = test_compile_rules(ctx, "evdev", "evdev", "us", "", ""); + assert(keymap); + xkb_keymap_unref(keymap); + } + clock_gettime(CLOCK_MONOTONIC, &stop); + + elapsed.tv_sec = stop.tv_sec - start.tv_sec; + elapsed.tv_nsec = stop.tv_nsec - start.tv_nsec; + if (elapsed.tv_nsec < 0) { + elapsed.tv_nsec += 1000000000; + elapsed.tv_sec--; + } + + fprintf(stderr, "compiled %d keymaps in %ld.%09lds\n", + BENCHMARK_ITERATIONS, elapsed.tv_sec, elapsed.tv_nsec); + + xkb_context_unref(ctx); + return 0; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/compile b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/compile new file mode 100755 index 0000000..531136b --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/compile @@ -0,0 +1,347 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2012-10-14.11; # UTC + +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# 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 2, 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/config.guess b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/config.guess new file mode 100755 index 0000000..b79252d --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/config.guess @@ -0,0 +1,1558 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2013 Free Software Foundation, Inc. + +timestamp='2013-06-10' + +# This file 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 . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# +# Please send patches with a ChangeLog entry to config-patches@gnu.org. + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2013 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case "${UNAME_SYSTEM}" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval $set_cc_for_build + cat <<-EOF > $dummy.c + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW64*:*) + echo ${UNAME_MACHINE}-pc-mingw64 + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + else + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + cris:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + crisv32:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + frv:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + hexagon:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + or1k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + or32:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-${LIBC} + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-${LIBC} + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-${LIBC} + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-${LIBC} + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux-${LIBC} + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-${LIBC} + exit ;; + x86_64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + eval $set_cc_for_build + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + fi + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; +esac + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/config.sub b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/config.sub new file mode 100755 index 0000000..9633db7 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/config.sub @@ -0,0 +1,1791 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2013 Free Software Foundation, Inc. + +timestamp='2013-08-10' + +# This file 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 . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches with a ChangeLog entry to config-patches@gnu.org. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2013 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | be32 | be64 \ + | bfin \ + | c4x | c8051 | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | epiphany \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 \ + | or1k | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pyramid \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | we32k \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pyramid-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i686-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -bitrig* | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + c8051-*) + os=-elf + ;; + hexagon-*) + os=-elf + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or1k-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/depcomp b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/depcomp new file mode 100755 index 0000000..4ebd5b3 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/depcomp @@ -0,0 +1,791 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2013-05-30.07; # UTC + +# Copyright (C) 1999-2013 Free Software Foundation, Inc. + +# 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 2, 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputting dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Avoid interferences from the environment. +gccflag= dashmflag= + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The second -e expression handles DOS-style file names with drive + # letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the "deleted header file" problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. +## Some versions of gcc put a space before the ':'. On the theory +## that the space means something, we add a space to the output as +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like '#:fec' to the end of the + # dependency line. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" + echo >> "$depfile" + # The second pass generates a dummy entry for each header file. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" + ;; + +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts '$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using '\' : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; + +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/'"$tab"'\1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/'"$tab"'/ + G + p +}' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for ':' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. + "$@" $dashmflag | + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/install-sh b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/install-sh new file mode 100755 index 0000000..377bb86 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/install-sh @@ -0,0 +1,527 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2011-11-20.07; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +nl=' +' +IFS=" "" $nl" + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit=${DOITPROG-} +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_glob='?' +initialize_posix_glob=' + test "$posix_glob" != "?" || { + if (set -f) 2>/dev/null; then + posix_glob= + else + posix_glob=: + fi + } +' + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +no_target_directory= + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) no_target_directory=true;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + eval "$initialize_posix_glob" + + oIFS=$IFS + IFS=/ + $posix_glob set -f + set fnord $dstdir + shift + $posix_glob set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + + eval "$initialize_posix_glob" && + $posix_glob set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + $posix_glob set +f && + + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/ltmain.sh b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/ltmain.sh new file mode 100644 index 0000000..a356aca --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/ltmain.sh @@ -0,0 +1,9661 @@ + +# libtool (GNU libtool) 2.4.2 +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, +# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool 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 2 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, +# or obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# Usage: $progname [OPTION]... [MODE-ARG]... +# +# Provide generalized library-building support services. +# +# --config show all configuration variables +# --debug enable verbose shell tracing +# -n, --dry-run display commands without modifying any files +# --features display basic configuration information and exit +# --mode=MODE use operation mode MODE +# --preserve-dup-deps don't remove duplicate dependency libraries +# --quiet, --silent don't print informational messages +# --no-quiet, --no-silent +# print informational messages (default) +# --no-warn don't display warning messages +# --tag=TAG use configuration variables from tag TAG +# -v, --verbose print more informational messages than default +# --no-verbose don't print the extra informational messages +# --version print version information +# -h, --help, --help-all print short, long, or detailed help message +# +# MODE must be one of the following: +# +# clean remove files from the build directory +# compile compile a source file into a libtool object +# execute automatically set library path, then run a program +# finish complete the installation of libtool libraries +# install install libraries or executables +# link create a library or an executable +# uninstall remove libraries from an installed directory +# +# MODE-ARGS vary depending on the MODE. When passed as first option, +# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. +# Try `$progname --help --mode=MODE' for a more detailed description of MODE. +# +# When reporting a bug, please describe a test case to reproduce it and +# include the following information: +# +# host-triplet: $host +# shell: $SHELL +# compiler: $LTCC +# compiler flags: $LTCFLAGS +# linker: $LD (gnu? $with_gnu_ld) +# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1 +# automake: $automake_version +# autoconf: $autoconf_version +# +# Report bugs to . +# GNU libtool home page: . +# General help using GNU software: . + +PROGRAM=libtool +PACKAGE=libtool +VERSION="2.4.2 Debian-2.4.2-1.7ubuntu1" +TIMESTAMP="" +package_revision=1.3337 + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# NLS nuisances: We save the old values to restore during execute mode. +lt_user_locale= +lt_safe_locale= +for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test \"\${$lt_var+set}\" = set; then + save_$lt_var=\$$lt_var + $lt_var=C + export $lt_var + lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" + lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" + fi" +done +LC_ALL=C +LANGUAGE=C +export LANGUAGE LC_ALL + +$lt_unset CDPATH + + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + + + +: ${CP="cp -f"} +test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} +: ${Xsed="$SED -e 1s/^X//"} + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +exit_status=$EXIT_SUCCESS + +# Make sure IFS has a sensible default +lt_nl=' +' +IFS=" $lt_nl" + +dirname="s,/[^/]*$,," +basename="s,^.*/,," + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} # func_dirname may be replaced by extended shell implementation + + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "${1}" | $SED "$basename"` +} # func_basename may be replaced by extended shell implementation + + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi + func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` +} # func_dirname_and_basename may be replaced by extended shell implementation + + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname may be replaced by extended shell implementation + + +# These SED scripts presuppose an absolute path with a trailing slash. +pathcar='s,^/\([^/]*\).*$,\1,' +pathcdr='s,^/[^/]*,,' +removedotparts=':dotsl + s@/\./@/@g + t dotsl + s,/\.$,/,' +collapseslashes='s@/\{1,\}@/@g' +finalslash='s,/*$,/,' + +# func_normal_abspath PATH +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +# value returned in "$func_normal_abspath_result" +func_normal_abspath () +{ + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` + while :; do + # Processed it all yet? + if test "$func_normal_abspath_tpath" = / ; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result" ; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + +# func_relative_path SRCDIR DSTDIR +# generates a relative path from SRCDIR to DSTDIR, with a trailing +# slash if non-empty, suitable for immediately appending a filename +# without needing to append a separator. +# value returned in "$func_relative_path_result" +func_relative_path () +{ + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=${func_dirname_result} + if test "x$func_relative_path_tlibdir" = x ; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test "x$func_stripname_result" != x ; then + func_relative_path_result=${func_relative_path_result}/${func_stripname_result} + fi + + # Normalisation. If bindir is libdir, return empty string, + # else relative path ending with a slash; either way, target + # file name can be directly appended. + if test ! -z "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result/" + func_relative_path_result=$func_stripname_result + fi +} + +# The name of this program: +func_dirname_and_basename "$progpath" +progname=$func_basename_result + +# Make sure we have an absolute path for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=$func_dirname_result + progdir=`cd "$progdir" && pwd` + progpath="$progdir/$progname" + ;; + *) + save_IFS="$IFS" + IFS=${PATH_SEPARATOR-:} + for progdir in $PATH; do + IFS="$save_IFS" + test -x "$progdir/$progname" && break + done + IFS="$save_IFS" + test -n "$progdir" || progdir=`pwd` + progpath="$progdir/$progname" + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed="${SED}"' -e 1s/^X//' +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' + +# Sed substitution that converts a w32 file name or path +# which contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-`\' parameter expansions in output of double_quote_subst that were +# `\'-ed in input to the same. If an odd number of `\' preceded a '$' +# in input to double_quote_subst, that '$' was protected from expansion. +# Since each input `\' is now two `\'s, look for any number of runs of +# four `\'s followed by two `\'s and then a '$'. `\' that '$'. +bs='\\' +bs2='\\\\' +bs4='\\\\\\\\' +dollar='\$' +sed_double_backslash="\ + s/$bs4/&\\ +/g + s/^$bs2$dollar/$bs&/ + s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g + s/\n//g" + +# Standard options: +opt_dry_run=false +opt_help=false +opt_quiet=false +opt_verbose=false +opt_warning=: + +# func_echo arg... +# Echo program name prefixed message, along with the current mode +# name if it has been set yet. +func_echo () +{ + $ECHO "$progname: ${opt_mode+$opt_mode: }$*" +} + +# func_verbose arg... +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $opt_verbose && func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +# func_error arg... +# Echo program name prefixed message to standard error. +func_error () +{ + $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 +} + +# func_warning arg... +# Echo program name prefixed warning message to standard error. +func_warning () +{ + $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 + + # bash bug again: + : +} + +# func_fatal_error arg... +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + +# func_fatal_help arg... +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + func_error ${1+"$@"} + func_fatal_error "$help" +} +help="Try \`$progname --help' for more information." ## default + + +# func_grep expression filename +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_mkdir_p directory-path +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + my_directory_path="$1" + my_dir_list= + + if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then + + # Protect directory names starting with `-' + case $my_directory_path in + -*) my_directory_path="./$my_directory_path" ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$my_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + my_dir_list="$my_directory_path:$my_dir_list" + + # If the last portion added has no slash in it, the list is done + case $my_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` + done + my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` + + save_mkdir_p_IFS="$IFS"; IFS=':' + for my_dir in $my_dir_list; do + IFS="$save_mkdir_p_IFS" + # mkdir can fail with a `File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$my_dir" 2>/dev/null || : + done + IFS="$save_mkdir_p_IFS" + + # Bail out if we (or some other process) failed to create a directory. + test -d "$my_directory_path" || \ + func_fatal_error "Failed to create \`$1'" + fi +} + + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$opt_dry_run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || \ + func_fatal_error "cannot create temporary directory \`$my_tmpdir'" + fi + + $ECHO "$my_tmpdir" +} + + +# func_quote_for_eval arg +# Aesthetically quote ARG to be evaled later. +# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT +# is double-quoted, suitable for a subsequent eval, whereas +# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters +# which are still active within double quotes backslashified. +func_quote_for_eval () +{ + case $1 in + *[\\\`\"\$]*) + func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; + *) + func_quote_for_eval_unquoted_result="$1" ;; + esac + + case $func_quote_for_eval_unquoted_result in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and and variable + # expansion for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" + ;; + *) + func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" + esac +} + + +# func_quote_for_expand arg +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + case $1 in + *[\\\`\"]*) + my_arg=`$ECHO "$1" | $SED \ + -e "$double_quote_subst" -e "$sed_double_backslash"` ;; + *) + my_arg="$1" ;; + esac + + case $my_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + my_arg="\"$my_arg\"" + ;; + esac + + func_quote_for_expand_result="$my_arg" +} + + +# func_show_eval cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$my_cmd" + my_status=$? + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + +# func_show_eval_locale cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$lt_user_locale + $my_cmd" + my_status=$? + eval "$lt_safe_locale" + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + +# func_tr_sh +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_version +# Echo version message to standard output and exit. +func_version () +{ + $opt_debug + + $SED -n '/(C)/!b go + :more + /\./!{ + N + s/\n# / / + b more + } + :go + /^# '$PROGRAM' (GNU /,/# warranty; / { + s/^# // + s/^# *$// + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ + p + }' < "$progpath" + exit $? +} + +# func_usage +# Echo short help message to standard output and exit. +func_usage () +{ + $opt_debug + + $SED -n '/^# Usage:/,/^# *.*--help/ { + s/^# // + s/^# *$// + s/\$progname/'$progname'/ + p + }' < "$progpath" + echo + $ECHO "run \`$progname --help | more' for full usage" + exit $? +} + +# func_help [NOEXIT] +# Echo long help message to standard output and exit, +# unless 'noexit' is passed as argument. +func_help () +{ + $opt_debug + + $SED -n '/^# Usage:/,/# Report bugs to/ { + :print + s/^# // + s/^# *$// + s*\$progname*'$progname'* + s*\$host*'"$host"'* + s*\$SHELL*'"$SHELL"'* + s*\$LTCC*'"$LTCC"'* + s*\$LTCFLAGS*'"$LTCFLAGS"'* + s*\$LD*'"$LD"'* + s/\$with_gnu_ld/'"$with_gnu_ld"'/ + s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ + s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ + p + d + } + /^# .* home page:/b print + /^# General help using/b print + ' < "$progpath" + ret=$? + if test -z "$1"; then + exit $ret + fi +} + +# func_missing_arg argname +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $opt_debug + + func_error "missing argument for $1." + exit_cmd=exit +} + + +# func_split_short_opt shortopt +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +func_split_short_opt () +{ + my_sed_short_opt='1s/^\(..\).*$/\1/;q' + my_sed_short_rest='1s/^..\(.*\)$/\1/;q' + + func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` + func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` +} # func_split_short_opt may be replaced by extended shell implementation + + +# func_split_long_opt longopt +# Set func_split_long_opt_name and func_split_long_opt_arg shell +# variables after splitting LONGOPT at the `=' sign. +func_split_long_opt () +{ + my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' + my_sed_long_arg='1s/^--[^=]*=//' + + func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` + func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` +} # func_split_long_opt may be replaced by extended shell implementation + +exit_cmd=: + + + + + +magic="%%%MAGIC variable%%%" +magic_exe="%%%MAGIC EXE variable%%%" + +# Global variables. +nonopt= +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "${1}=\$${1}\${2}" +} # func_append may be replaced by extended shell implementation + +# func_append_quoted var value +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +func_append_quoted () +{ + func_quote_for_eval "${2}" + eval "${1}=\$${1}\\ \$func_quote_for_eval_result" +} # func_append_quoted may be replaced by extended shell implementation + + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "${@}"` +} # func_arith may be replaced by extended shell implementation + + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` +} # func_len may be replaced by extended shell implementation + + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` +} # func_lo2o may be replaced by extended shell implementation + + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` +} # func_xform may be replaced by extended shell implementation + + +# func_fatal_configuration arg... +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func_error ${1+"$@"} + func_error "See the $PACKAGE documentation for more information." + func_fatal_error "Fatal configuration error." +} + + +# func_config +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + +# func_features +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test "$build_libtool_libs" = yes; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + +# func_enable_tag tagname +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname="$1" + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf="/$re_begincf/,/$re_endcf/p" + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + +# func_check_version_match +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# Shorthand for --mode=foo, only valid as the first argument +case $1 in +clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; +compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; +execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; +finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; +install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; +link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; +uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; +esac + + + +# Option defaults: +opt_debug=: +opt_dry_run=false +opt_config=false +opt_preserve_dup_deps=false +opt_features=false +opt_finish=false +opt_help=false +opt_help_all=false +opt_silent=: +opt_warning=: +opt_verbose=: +opt_silent=false +opt_verbose=false + + +# Parse options once, thoroughly. This comes as soon as possible in the +# script to make things like `--version' happen as quickly as we can. +{ + # this just eases exit handling + while test $# -gt 0; do + opt="$1" + shift + case $opt in + --debug|-x) opt_debug='set -x' + func_echo "enabling shell trace mode" + $opt_debug + ;; + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + --config) + opt_config=: +func_config + ;; + --dlopen|-dlopen) + optarg="$1" + opt_dlopen="${opt_dlopen+$opt_dlopen +}$optarg" + shift + ;; + --preserve-dup-deps) + opt_preserve_dup_deps=: + ;; + --features) + opt_features=: +func_features + ;; + --finish) + opt_finish=: +set dummy --mode finish ${1+"$@"}; shift + ;; + --help) + opt_help=: + ;; + --help-all) + opt_help_all=: +opt_help=': help-all' + ;; + --mode) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_mode="$optarg" +case $optarg in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $opt" + exit_cmd=exit + break + ;; +esac + shift + ;; + --no-silent|--no-quiet) + opt_silent=false +func_append preserve_args " $opt" + ;; + --no-warning|--no-warn) + opt_warning=false +func_append preserve_args " $opt" + ;; + --no-verbose) + opt_verbose=false +func_append preserve_args " $opt" + ;; + --silent|--quiet) + opt_silent=: +func_append preserve_args " $opt" + opt_verbose=false + ;; + --verbose|-v) + opt_verbose=: +func_append preserve_args " $opt" +opt_silent=false + ;; + --tag) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_tag="$optarg" +func_append preserve_args " $opt $optarg" +func_enable_tag "$optarg" + shift + ;; + + -\?|-h) func_usage ;; + --help) func_help ;; + --version) func_version ;; + + # Separate optargs to long options: + --*=*) + func_split_long_opt "$opt" + set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-n*|-v*) + func_split_short_opt "$opt" + set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognized option \`$opt'" ;; + *) set dummy "$opt" ${1+"$@"}; shift; break ;; + esac + done + + # Validate options: + + # save first non-option argument + if test "$#" -gt 0; then + nonopt="$opt" + shift + fi + + # preserve --debug + test "$opt_debug" = : || func_append preserve_args " --debug" + + case $host in + *cygwin* | *mingw* | *pw32* | *cegcc*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + func_fatal_configuration "not configured to build any kind of library" + fi + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test "$opt_mode" != execute; then + func_error "unrecognized option \`-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$progname --help --mode=$opt_mode' for more information." + } + + + # Bail if the options were screwed + $exit_cmd $EXIT_FAILURE +} + + + + +## ----------- ## +## Main. ## +## ----------- ## + +# func_lalib_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null \ + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if `file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case "$lalib_p_line" in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test "$lalib_p" = yes +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + func_lalib_p "$1" +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $opt_debug + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$save_ifs + eval cmd=\"$cmd\" + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# `FILE.' does not work on cygwin managed mounts. +func_source () +{ + $opt_debug + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case "$lt_sysroot:$1" in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result="=$func_stripname_result" + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $opt_debug + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with \`--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=${1} + if test "$build_libtool_libs" = yes; then + write_lobj=\'${2}\' + else + write_lobj=none + fi + + if test "$build_old_libs" = yes; then + write_oldobj=\'${3}\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$lt_sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $opt_debug + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result="" + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result" ; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $opt_debug + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $opt_debug + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $opt_debug + if test -z "$2" && test -n "$1" ; then + func_error "Could not determine host file name corresponding to" + func_error " \`$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result="$1" + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $opt_debug + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " \`$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result="$3" + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $opt_debug + case $4 in + $1 ) func_to_host_path_result="$3$func_to_host_path_result" + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via `$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $opt_debug + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $opt_debug + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result="$1" +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result="$func_convert_core_msys_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via `$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $opt_debug + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd="func_convert_path_${func_stripname_result}" + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $opt_debug + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result="$1" +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_msys_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_mode_compile arg... +func_mode_compile () +{ + $opt_debug + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify \`-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + func_append pie_flag " $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + func_append later " $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + func_append_quoted lastarg "$arg" + done + IFS="$save_ifs" + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + func_append base_compile " $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with \`-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj="$func_basename_result" + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from \`$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name \`$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname="$func_basename_result" + xdir="$func_dirname_result" + lobj=${xdir}$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + func_append removelist " $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + func_append removelist " $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test "$pic_mode" != no; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + func_append command " -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test "$suppress_opt" = yes; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + if test "$pic_mode" != yes; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test "$compiler_c_o" = yes; then + func_append command " -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + func_append command "$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test "$opt_mode" = compile && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a \`.o' file suitable for static linking + -static only build a \`.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode \`$opt_mode'" + ;; + esac + + echo + $ECHO "Try \`$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test "$opt_help" = :; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | sed -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + sed '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $opt_debug + # The first argument is the command name. + cmd="$nonopt" + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "\`$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "\`$file' was not linked with \`-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir="$func_dirname_result" + + if test -f "$dir/$objdir/$dlname"; then + func_append dir "/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir="$func_dirname_result" + ;; + + *) + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file="$progdir/$program" + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if test "X$opt_dry_run" = Xfalse; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + fi +} + +test "$opt_mode" = execute && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $opt_debug + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "\`$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument \`$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and \`=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || func_append admincmds " + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_silent && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test "$opt_mode" = finish && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $opt_debug + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac; then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + func_append install_prog "$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + func_append files " $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test "x$prev" = x-m && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + func_append install_prog " $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + func_append install_shared_prog " $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the \`$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir="$func_dirname_result" + destname="$func_basename_result" + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "\`$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "\`$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + func_append staticlibs " $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) func_append current_libdirs " $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) func_append future_libdirs " $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir="$func_dirname_result" + func_append dir "$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking \`$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname="$1" + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme="$stripme" + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme="" + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name="$func_basename_result" + instname="$dir/$name"i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && func_append staticlibs " $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to \`$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script \`$wrapper'" + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "\`$lib' has not been installed in \`$libdir'" + finalize=no + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + $opt_dry_run || { + if test "$finalize" = yes; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file="$func_basename_result" + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_silent || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink \`$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file="$outputname" + else + func_warning "cannot relink \`$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name="$func_basename_result" + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run \`$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test "$opt_mode" = install && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $opt_debug + my_outputname="$1" + my_originator="$2" + my_pic_p="${3-no}" + my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms="${my_outputname}S.c" + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${my_outputname}.nm" + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + func_verbose "generating symbol list for \`$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $opt_dry_run || { + $RM $export_symbols + eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from \`$dlprefile'" + func_basename "$dlprefile" + name="$func_basename_result" + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename="" + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname" ; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename="$func_basename_result" + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename" ; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[]; +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{\ + { \"$my_originator\", (void *) 0 }," + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + if test "X$my_pic_p" != Xno; then + pic_flag_for_symtable=" $pic_flag" + fi + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) func_append symtab_cflags " $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' + + # Transform the symbol file into the correct name. + symfileobj="$output_objdir/${my_outputname}S.$objext" + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for \`$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $opt_debug + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s,.*,import, + p + q + } + }'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $opt_debug + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $opt_debug + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive which possess that section. Heuristic: eliminate + # all those which have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $opt_debug + if func_cygming_gnu_implib_p "$1" ; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1" ; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result="" + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $opt_debug + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + if test "$lock_old_archive_extraction" = yes; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test "$lock_old_archive_extraction" = yes; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $opt_debug + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib="$func_basename_result" + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir="$my_gentop/$my_xlib_u" + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`basename "$darwin_archive"` + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result="$my_oldobjs" +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory in which it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +#else +# include +# include +# ifdef __CYGWIN__ +# include +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +/* declarations of non-ANSI functions */ +#if defined(__MINGW32__) +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined(__CYGWIN__) +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined (other platforms) ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined(_MSC_VER) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +# ifndef _INTPTR_T_DEFINED +# define _INTPTR_T_DEFINED +# define intptr_t int +# endif +#elif defined(__MINGW32__) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined(__CYGWIN__) +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined (other platforms) ... */ +#endif + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +#if defined(LT_DEBUGWRAPPER) +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp (str, pat) == 0) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + int len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + int orig_value_len = strlen (orig_value); + int add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + int len = strlen (new_value); + while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[len-1] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $opt_debug + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $opt_debug + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=no + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module="${wl}-single_module" + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir="$arg" + prev= + continue + ;; + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + func_append dlfiles " $arg" + else + func_append dlprefiles " $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + test -f "$arg" \ + || func_fatal_error "symbol file \`$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) func_append deplibs " $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# func_append moreargs " $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file \`$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) func_append rpath " $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) func_append xrpath " $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + weak) + func_append weak_libs " $arg" + prev= + continue + ;; + xcclinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "\`-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between \`-L' and \`$1'" + else + func_fatal_error "need path for \`-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of \`$dir'" + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + func_append deplibs " System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + func_append deplibs " $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot|--sysroot) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) func_append new_inherited_linker_flags " $arg" ;; + esac + continue + ;; + + -multi_module) + single_module="${wl}-multi_module" + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "\`-no-install' is ignored for $host" + func_warning "assuming \`-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-flto*|-fwhopr*|-fuse-linker-plugin) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + func_append compile_command " $arg" + func_append finalize_command " $arg" + func_append compiler_flags " $arg" + continue + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + *.$objext) + # A standard object. + func_append objs " $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + func_append deplibs " $arg" + func_append old_deplibs " $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + func_resolve_sysroot "$arg" + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + func_append dlfiles " $func_resolve_sysroot_result" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + func_append dlprefiles " $func_resolve_sysroot_result" + prev= + else + func_append deplibs " $func_resolve_sysroot_result" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the \`$prevarg' option requires an argument" + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname="$func_basename_result" + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + func_dirname "$output" "/" "" + output_objdir="$func_dirname_result$objdir" + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_preserve_dup_deps ; then + case "$libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append libs " $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; + esac + func_append pre_post_deps " $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test "$linkmode,$pass" = "lib,link"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs="$tmp_deplibs" + fi + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) + libs="$deplibs %DEPLIBS%" + test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" + ;; + esac + fi + if test "$linkmode,$pass" = "lib,dlpreopen"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + func_resolve_sysroot "$lib" + case $lib in + *.la) func_source "$func_resolve_sysroot_result" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + func_basename "$deplib" + deplib_base=$func_basename_result + case " $weak_libs " in + *" $deplib_base "*) ;; + *) func_append deplibs " $deplib" ;; + esac + done + done + libs="$dlprefiles" + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append compiler_flags " $deplib" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + func_warning "\`-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test "$linkmode" = lib; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + *.ltframework) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + *) + func_warning "\`-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + func_stripname '-R' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + echo + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." + else + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + ;; + esac + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + func_append newdlprefiles " $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append newdlfiles " $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + + if test "$found" = yes || test -f "$lib"; then : + else + func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" + fi + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "\`$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && func_append dlfiles " $dlopen" + test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + # It is a libtool convenience library, so add in its objects. + func_append convenience " $ladir/$objdir/$old_library" + func_append old_convenience " $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + func_fatal_error "\`$lib' is not a convenience library" + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + if test -n "$old_library" && + { test "$prefer_static_libs" = yes || + test "$prefer_static_libs,$installed" = "built,no"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib="$l" + done + fi + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + func_fatal_error "cannot -dlopen a convenience library: \`$lib'" + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + func_append dlprefiles " $lib $dependency_libs" + else + func_append newdlfiles " $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of \`$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir="$ladir" + fi + ;; + esac + func_basename "$lib" + laname="$func_basename_result" + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library \`$lib' was moved." + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$lt_sysroot$libdir" + absdir="$lt_sysroot$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + func_append notinst_path " $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + func_append notinst_path " $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir" && test "$linkmode" = prog; then + func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" + fi + case "$host" in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + func_append newdlprefiles " $dir/$linklib" + else + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + func_append newdlprefiles " $dir/$dlname" + else + func_append newdlprefiles " $dir/$linklib" + fi + ;; + esac + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + func_append newlib_search_path " $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { { test "$prefer_static_libs" = no || + test "$prefer_static_libs,$installed" = "built,yes"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath:" in + *"$absdir:"*) ;; + *) func_append temp_rpath "$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc*) + # No point in relinking DLLs because paths are not encoded + func_append notinst_deplibs " $lib" + need_relink=no + ;; + *) + if test "$installed" = no; then + func_append notinst_deplibs " $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule="" + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule="$dlpremoduletest" + break + fi + done + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then + echo + if test "$linkmode" = prog; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname="$1" + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc*) + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + func_basename "$soroot" + soname="$func_basename_result" + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from \`$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for \`$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$opt_mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we can not + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null ; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + elif test -n "$old_library"; then + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$absdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) func_append compile_shlibpath "$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && + test "$hardcode_minus_L" != yes && + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$opt_mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + $ECHO "*** Warning: This system can not link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) func_append xrpath " $temp_xrpath";; + esac;; + *) func_append temp_deplibs " $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + func_append newlib_search_path " $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $func_resolve_sysroot_result "*) + func_append specialdeplibs " $func_resolve_sysroot_result" ;; + esac + fi + func_append tmp_libs " $func_resolve_sysroot_result" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path="$deplib" ;; + *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result + func_dirname "$deplib" "" "." + dir=$func_dirname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of \`$dir'" + absdir="$dir" + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl" ; then + depdepl="$absdir/$objdir/$depdepl" + darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" + func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" + path= + fi + fi + ;; + *) + path="-L$absdir/$objdir" + ;; + esac + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "\`$deplib' seems to be moved" + + path="-L$absdir" + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test "$pass" = link; then + if test "$linkmode" = "prog"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) func_append lib_search_path " $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) func_append tmp_libs " $deplib" ;; + esac + ;; + *) func_append tmp_libs " $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + func_append tmp_libs " $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + fi + if test "$linkmode" = prog || test "$linkmode" = lib; then + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "\`-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "\`-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + func_append objs "$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test "$module" = no && \ + func_fatal_help "libtool library \`$output' must begin with \`lib'" + + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" + else + echo + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + func_append libobjs " $objs" + fi + fi + + test "$dlself" != no && \ + func_warning "\`-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test "$#" -gt 1 && \ + func_warning "ignoring multiple \`-rpath's for a libtool library" + + install_libdir="$1" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "\`-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + shift + IFS="$save_ifs" + + test -n "$7" && \ + func_fatal_help "too many parameters to \`-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$1" + number_minor="$2" + number_revision="$3" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + # correct linux to gnu/linux during the next big refactor + darwin|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|qnx|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_minor" + lt_irix_increment=no + ;; + *) + func_fatal_configuration "$modename: unknown library version type \`$version_type'" + ;; + esac + ;; + no) + current="$1" + revision="$2" + age="$3" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT \`$current' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION \`$revision' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE \`$age' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE \`$age' is greater than the current interface number \`$current'" + func_fatal_error "\`$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current" + ;; + + irix | nonstopux) + if test "X$lt_irix_increment" = "Xno"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) # correct to gnu/linux during the next big refactor + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + func_append verstring ":${current}.0" + ;; + + qnx) + major=".$current" + versuffix=".$current" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + + *) + func_fatal_configuration "unknown library version type \`$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + func_warning "undefined symbols not allowed in $host shared libraries" + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + + fi + + func_generate_dlsyms "$libname" "$libname" "yes" + func_append libobjs " $symfileobj" + test "X$libobjs" = "X " && libobjs= + + if test "$opt_mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + func_append removelist " $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + func_append oldlibs " $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + func_replace_sysroot "$libdir" + func_append temp_xrpath " -R$func_replace_sysroot_result" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) func_append dlfiles " $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) func_append dlprefiles " $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + func_append deplibs " System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + func_append deplibs " -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + func_append newdeplibs " $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` + done + fi + case $tmp_deplibs in + *[!\ \ ]*) + echo + if test "X$deplibs_check_method" = "Xnone"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + ;; + esac + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + deplibs="$new_libs" + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + # Remove ${wl} instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$opt_mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append dep_rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname="$1" + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + func_append linknames " $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols="$output_objdir/$libname.uexp" + func_append delfiles " $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + if test "x`$SED 1q $export_symbols`" != xEXPORTS; then + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols="$export_symbols" + export_symbols= + always_export_symbols=yes + fi + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd1 in $cmds; do + IFS="$save_ifs" + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test "$try_normal_branch" = yes \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=${output_objdir}/${output_la}.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + func_append delfiles " $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" + func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + func_append tmp_deplibs " $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test "$compiler_needs_object" = yes && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + func_append linker_flags " $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$opt_mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + func_basename "$output" + output_la=$func_basename_result + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then + output=${output_objdir}/${output_la}.lnkscript + func_verbose "creating GNU ld script: $output" + echo 'INPUT (' > $output + for obj in $save_libobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + echo ')' >> $output + func_append delfiles " $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then + output=${output_objdir}/${output_la}.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test "$compiler_needs_object" = yes; then + firstobj="$1 " + shift + fi + for obj + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + func_append delfiles " $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-${k}.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test "X$objlist" = X || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" + else + # All subsequent reloadable object files will link in + # the last one created. + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-${k}.$objext + objlist=" $obj" + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\${concat_cmds}$reload_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" + fi + func_append delfiles " $output" + + else + output= + fi + + if ${skipped_export-false}; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + fi + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + if ${skipped_export-false}; then + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + fi + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "\`-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object \`$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec and hope we can get by with + # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + else + gentop="$output_objdir/${obj}x" + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # If we're not building shared, we need to use non_pic_objs + test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "\`-release' is ignored for programs" + + test "$preload" = yes \ + && test "$dlopen_support" = unknown \ + && test "$dlopen_self" = unknown \ + && test "$dlopen_self_static" = unknown && \ + func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test "$tagname" = CXX ; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + func_append compile_command " ${wl}-bind_at_load" + func_append finalize_command " ${wl}-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + func_append compile_command " $compile_deplibs" + func_append finalize_command " $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) func_append dllsearchpath ":$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) func_append finalize_perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" "no" + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=yes + case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=no + ;; + *cygwin* | *mingw* ) + if test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + *) + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + esac + if test "$wrappers_required" = no; then + # Replace the output file specification. + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.${objext}"; then + func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' + fi + + exit $exit_status + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + func_append rpath "$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "\`$output' will be relinked during installation" + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host" ; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save $symfileobj" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + if test "$preload" = yes && test -f "$symfileobj"; then + func_append oldobjs " $symfileobj" + fi + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $addlibs + func_append oldobjs " $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append oldobjs " $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + echo "copying selected object files to avoid basename conflicts..." + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase="$func_basename_result" + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + func_append oldobjs " $gentop/$newobj" + ;; + *) func_append oldobjs " $obj" ;; + esac + done + fi + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name="$func_basename_result" + func_resolve_sysroot "$deplib" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -L$func_replace_sysroot_result" + ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -R$func_replace_sysroot_result" + ;; + *) func_append newdependency_libs " $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" + ;; + *) func_append newdlfiles " $lib" ;; + esac + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" + ;; + esac + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlfiles " $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlprefiles " $abs" + done + dlprefiles="$newdlprefiles" + fi + $RM $output + # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test "x$bindir" != x ; + then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +{ test "$opt_mode" = link || test "$opt_mode" = relink; } && + func_mode_link ${1+"$@"} + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $opt_debug + RM="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) func_append RM " $arg"; rmforce=yes ;; + -*) func_append RM " $arg" ;; + *) func_append files " $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + for file in $files; do + func_dirname "$file" "" "." + dir="$func_dirname_result" + if test "X$dir" = X.; then + odir="$objdir" + else + odir="$dir/$objdir" + fi + func_basename "$file" + name="$func_basename_result" + test "$opt_mode" = uninstall && odir="$dir" + + # Remember odir for removal later, being careful to avoid duplicates + if test "$opt_mode" = clean; then + case " $rmdirs " in + *" $odir "*) ;; + *) func_append rmdirs " $odir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + func_append rmfiles " $odir/$n" + done + test -n "$old_library" && func_append rmfiles " $odir/$old_library" + + case "$opt_mode" in + clean) + case " $library_names " in + *" $dlname "*) ;; + *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; + esac + test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && + test "$pic_object" != none; then + func_append rmfiles " $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && + test "$non_pic_object" != none; then + func_append rmfiles " $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$opt_mode" = clean ; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + func_append rmfiles " $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + func_append rmfiles " $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + func_append rmfiles " $odir/$name $odir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + func_append rmfiles " $odir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + func_append rmfiles " $odir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && + func_mode_uninstall ${1+"$@"} + +test -z "$opt_mode" && { + help="$generic_help" + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode \`$opt_mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: +# vi:sw=2 + diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/missing b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/missing new file mode 100755 index 0000000..db98974 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/missing @@ -0,0 +1,215 @@ +#! /bin/sh +# Common wrapper for a few potentially missing GNU programs. + +scriptversion=2013-10-28.13; # UTC + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. + +# 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 2, 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try '$0 --help' for more information" + exit 1 +fi + +case $1 in + + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; + + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man + +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" + exit 1 + ;; + +esac + +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi + +perl_URL=http://www.perl.org/ +flex_URL=http://flex.sourceforge.net/ +gnu_software_URL=http://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/output.0 b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/output.0 new file mode 100644 index 0000000..0722728 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/output.0 @@ -0,0 +1,21655 @@ +@%:@! /bin/sh +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.69 for libxkbcommon 0.5.0. +@%:@ +@%:@ Report bugs to . +@%:@ +@%:@ +@%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +@%:@ +@%:@ +@%:@ This configure script is free software; the Free Software Foundation +@%:@ gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in @%:@( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in @%:@( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: https://bugs.freedesktop.org/enter_bug.cgi?product=libxkbcommon +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIB@&t@OBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='libxkbcommon' +PACKAGE_TARNAME='libxkbcommon' +PACKAGE_VERSION='0.5.0' +PACKAGE_STRING='libxkbcommon 0.5.0' +PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=libxkbcommon' +PACKAGE_URL='http://xkbcommon.org' + +ac_unique_file="Makefile.am" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIB@&t@OBJS +ENABLE_X11_FALSE +ENABLE_X11_TRUE +XCB_XKB_LIBS +XCB_XKB_CFLAGS +XLOCALEDIR +XKBCONFIGROOT +RT_LIBS +HAVE_NO_UNDEFINED_FALSE +HAVE_NO_UNDEFINED_TRUE +BUILD_LINUX_TESTS_FALSE +BUILD_LINUX_TESTS_TRUE +YACC_INST +YFLAGS +YACC +HAVE_DOXYGEN_FALSE +HAVE_DOXYGEN_TRUE +DOXYGEN +ENABLE_DOCS_FALSE +ENABLE_DOCS_TRUE +XORG_MALLOC_DEBUG_ENV +MAN_SUBSTS +XORG_MAN_PAGE +ADMIN_MAN_DIR +DRIVER_MAN_DIR +MISC_MAN_DIR +FILE_MAN_DIR +LIB_MAN_DIR +APP_MAN_DIR +ADMIN_MAN_SUFFIX +DRIVER_MAN_SUFFIX +MISC_MAN_SUFFIX +FILE_MAN_SUFFIX +LIB_MAN_SUFFIX +APP_MAN_SUFFIX +INSTALL_CMD +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +CHANGELOG_CMD +STRICT_CFLAGS +CWARNFLAGS +BASE_CFLAGS +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +RANLIB +ac_ct_AR +AR +DLLTOOL +OBJDUMP +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +SED +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +LIBTOOL +EGREP +GREP +CPP +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +MAINT +MAINTAINER_MODE_FALSE +MAINTAINER_MODE_TRUE +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_maintainer_mode +enable_dependency_tracking +enable_shared +enable_static +with_pic +enable_fast_install +with_gnu_ld +with_sysroot +enable_libtool_lock +enable_selective_werror +enable_strict_compilation +enable_docs +with_doxygen +with_xkb_config_root +with_x_locale_root +with_default_rules +with_default_model +with_default_layout +with_default_variant +with_default_options +enable_x11 +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +XORG_MALLOC_DEBUG_ENV +DOXYGEN +YACC +YFLAGS +XCB_XKB_CFLAGS +XCB_XKB_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures libxkbcommon 0.5.0 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + @<:@@S|@ac_default_prefix@:>@ + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + @<:@PREFIX@:>@ + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root @<:@DATAROOTDIR/doc/libxkbcommon@:>@ + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of libxkbcommon 0.5.0:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --disable-maintainer-mode + disable make rules and dependencies not useful (and + sometimes confusing) to the casual installer + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --enable-shared@<:@=PKGS@:>@ build shared libraries @<:@default=yes@:>@ + --enable-static@<:@=PKGS@:>@ build static libraries @<:@default=yes@:>@ + --enable-fast-install@<:@=PKGS@:>@ + optimize for fast installation @<:@default=yes@:>@ + --disable-libtool-lock avoid locking (might break parallel builds) + --disable-selective-werror + Turn off selective compiler errors. (default: + enabled) + --enable-strict-compilation + Enable all warnings from compiler and make them + errors (default: disabled) + --enable-docs Enable building the documentation (default: yes) + --disable-x11 Disable support for creating keymaps with the X11 + protocol (default: enabled) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-pic@<:@=PKGS@:>@ try to use only PIC/non-PIC objects @<:@default=use + both@:>@ + --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ + --with-sysroot=DIR Search for dependent libraries within DIR + (or the compiler's sysroot if not specified). + --with-doxygen Use doxygen to regenerate documentation (default: + auto) + --with-xkb-config-root= + Set default XKB config root (default: + xkeyboard-config install path) + --with-x-locale-root= + Set X locale root (default: @S|@datadir/X11/locale) + --with-default-rules= + Default XKB ruleset (default: evdev) + --with-default-model= + Default XKB model (default: pc105) + --with-default-layout= + Default XKB layout (default: us) + --with-default-variant= + Default XKB variant (default: (none)) + --with-default-options= + Default XKB options (default: (none)) + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + XORG_MALLOC_DEBUG_ENV + Environment variables to enable memory checking in tests + DOXYGEN Path to doxygen command + YACC The `Yet Another Compiler Compiler' implementation to use. + Defaults to the first program found out of: `bison -y', `byacc', + `yacc'. + YFLAGS The list of arguments that will be passed by default to @S|@YACC. + This script will default YFLAGS to the empty string to avoid a + default value of `-d' given by some make applications. + XCB_XKB_CFLAGS + C compiler flags for XCB_XKB, overriding pkg-config + XCB_XKB_LIBS + linker flags for XCB_XKB, overriding pkg-config + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +libxkbcommon home page: . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +libxkbcommon configure 0.5.0 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +@%:@ ac_fn_c_try_compile LINENO +@%:@ -------------------------- +@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_compile + +@%:@ ac_fn_c_try_cpp LINENO +@%:@ ---------------------- +@%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_cpp + +@%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +@%:@ ------------------------------------------------------- +@%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using +@%:@ the include files in INCLUDES and setting the cache variable VAR +@%:@ accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +@%:@include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## ------------------------------------------------------------------------------ ## +## Report this to https://bugs.freedesktop.org/enter_bug.cgi?product=libxkbcommon ## +## ------------------------------------------------------------------------------ ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_header_mongrel + +@%:@ ac_fn_c_try_run LINENO +@%:@ ---------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. Assumes +@%:@ that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_run + +@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +@%:@ ------------------------------------------------------- +@%:@ Tests whether HEADER exists and can be compiled using the include files in +@%:@ INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +@%:@include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_header_compile + +@%:@ ac_fn_c_try_link LINENO +@%:@ ----------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_link + +@%:@ ac_fn_c_check_func LINENO FUNC VAR +@%:@ ---------------------------------- +@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_func + +@%:@ ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES +@%:@ --------------------------------------------- +@%:@ Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +@%:@ accordingly. +ac_fn_c_check_decl () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +$as_echo_n "checking whether $as_decl_name is declared... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +@%:@ifndef $as_decl_name +@%:@ifdef __cplusplus + (void) $as_decl_use; +@%:@else + (void) $as_decl_name; +@%:@endif +@%:@endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_decl +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by libxkbcommon $as_me 0.5.0, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in @%:@(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +ac_config_headers="$ac_config_headers src/config.h" + + +ac_aux_dir= +for ac_dir in build-aux "$srcdir"/build-aux; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in build-aux \"$srcdir\"/build-aux" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + + +# Initialize Automake +am__api_version='1.14' + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in @%:@(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +@%:@ Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='libxkbcommon' + VERSION='0.5.0' + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } + @%:@ Check whether --enable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then : + enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=yes +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +$as_echo "$USE_MAINTAINER_MODE" >&6; } + if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + + +# Get _GNU_SOURCE and friends +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +@%:@ Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" +if test "x$ac_cv_header_minix_config_h" = xyes; then : + MINIX=yes +else + MINIX= +fi + + + if test "$MINIX" = yes; then + +$as_echo "@%:@define _POSIX_SOURCE 1" >>confdefs.h + + +$as_echo "@%:@define _POSIX_1_SOURCE 2" >>confdefs.h + + +$as_echo "@%:@define _MINIX 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if ${ac_cv_safe_to_define___extensions__+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_safe_to_define___extensions__=yes +else + ac_cv_safe_to_define___extensions__=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } + test $ac_cv_safe_to_define___extensions__ = yes && + $as_echo "@%:@define __EXTENSIONS__ 1" >>confdefs.h + + $as_echo "@%:@define _ALL_SOURCE 1" >>confdefs.h + + $as_echo "@%:@define _GNU_SOURCE 1" >>confdefs.h + + $as_echo "@%:@define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + $as_echo "@%:@define _TANDEM_SOURCE 1" >>confdefs.h + + + +# Initialize libtool +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4.2' +macro_revision='1.3337' + + + + + + + + + + + + + +ltmain="$ac_aux_dir/ltmain.sh" + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case "$ECHO" in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +@%:@ Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 +$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 +$as_echo "$xsi_shell" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 +$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } +lt_shell_append=no +( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 +$as_echo "$lt_shell_append" >&6; } + + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test "$GCC" != yes; then + reload_cmds=false + fi + ;; + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. + if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +@%:@ Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 +$as_echo "${with_sysroot}" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + +@%:@ Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD="${LD-ld}_sol2" + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[012]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + + + +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + @%:@ Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + @%:@ Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +@%:@ Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for lt_pkg in $withval; do + IFS="$lt_save_ifs" + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + pic_mode=default +fi + + +test -z "$pic_mode" && pic_mode=default + + + + + + + + @%:@ Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +@%:@define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic@&t@ -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic@&t@ -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test x"$lt_cv_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='${wl}--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + link_all_deplibs=no + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test x"$lt_cv_prog_compiler__b" = xyes; then + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test "$lt_cv_irix_exported_symbol" = yes; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='${wl}-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test "$ld_shlibs" = no && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([A-Za-z]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test "$hardcode_action" = relink || + test "$inherit_rpath" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report which library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + + +# Add xorg-macros stuff + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 +$as_echo_n "checking for $CC option to accept ISO C99... " >&6; } +if ${ac_cv_prog_cc_c99+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +#include + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +#define debug(...) fprintf (stderr, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + your preprocessor is broken; +#endif +#if BIG_OK +#else + your preprocessor is broken; +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\0'; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static void +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str; + int number; + float fnumber; + + while (*format) + { + switch (*format++) + { + case 's': // string + str = va_arg (args_copy, const char *); + break; + case 'd': // int + number = va_arg (args_copy, int); + break; + case 'f': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); +} + +int +main () +{ + + // Check bool. + _Bool success = false; + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + test_varargs ("s, d' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' + || dynamic_array[ni.number - 1] != 543); + + ; + return 0; +} +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c99" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c99" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +$as_echo "$ac_cv_prog_cc_c99" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c99" != xno; then : + +fi + + + + + + +ac_fn_c_check_decl "$LINENO" "__clang__" "ac_cv_have_decl___clang__" "$ac_includes_default" +if test "x$ac_cv_have_decl___clang__" = xyes; then : + CLANGCC="yes" +else + CLANGCC="no" +fi + +ac_fn_c_check_decl "$LINENO" "__INTEL_COMPILER" "ac_cv_have_decl___INTEL_COMPILER" "$ac_includes_default" +if test "x$ac_cv_have_decl___INTEL_COMPILER" = xyes; then : + INTELCC="yes" +else + INTELCC="no" +fi + +ac_fn_c_check_decl "$LINENO" "__SUNPRO_C" "ac_cv_have_decl___SUNPRO_C" "$ac_includes_default" +if test "x$ac_cv_have_decl___SUNPRO_C" = xyes; then : + SUNCC="yes" +else + SUNCC="no" +fi + + + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi + + + + + +@%:@ Check whether --enable-selective-werror was given. +if test "${enable_selective_werror+set}" = set; then : + enableval=$enable_selective_werror; SELECTIVE_WERROR=$enableval +else + SELECTIVE_WERROR=yes +fi + + + + + +# -v is too short to test reliably with XORG_TESTSET_CFLAG +if test "x$SUNCC" = "xyes"; then + BASE_CFLAGS="-v" +else + BASE_CFLAGS="" +fi + +# This chunk of warnings were those that existed in the legacy CWARNFLAGS + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wall" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wall" >&5 +$as_echo_n "checking if $CC supports-Wall... " >&6; } + cacheid=xorg_cv_cc_flag__Wall + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wall" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wpointer-arith" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wpointer-arith" >&5 +$as_echo_n "checking if $CC supports-Wpointer-arith... " >&6; } + cacheid=xorg_cv_cc_flag__Wpointer_arith + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wpointer-arith" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmissing-declarations" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wmissing-declarations" >&5 +$as_echo_n "checking if $CC supports-Wmissing-declarations... " >&6; } + cacheid=xorg_cv_cc_flag__Wmissing_declarations + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmissing-declarations" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wformat=2" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wformat=2" >&5 +$as_echo_n "checking if $CC supports-Wformat=2... " >&6; } + cacheid=xorg_cv_cc_flag__Wformat_2 + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wformat=2" + found="yes" + fi + fi + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wformat" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wformat" >&5 +$as_echo_n "checking if $CC supports-Wformat... " >&6; } + cacheid=xorg_cv_cc_flag__Wformat + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wformat" + found="yes" + fi + fi + + + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wstrict-prototypes" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wstrict-prototypes" >&5 +$as_echo_n "checking if $CC supports-Wstrict-prototypes... " >&6; } + cacheid=xorg_cv_cc_flag__Wstrict_prototypes + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wstrict-prototypes" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmissing-prototypes" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wmissing-prototypes" >&5 +$as_echo_n "checking if $CC supports-Wmissing-prototypes... " >&6; } + cacheid=xorg_cv_cc_flag__Wmissing_prototypes + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmissing-prototypes" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wnested-externs" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wnested-externs" >&5 +$as_echo_n "checking if $CC supports-Wnested-externs... " >&6; } + cacheid=xorg_cv_cc_flag__Wnested_externs + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wnested-externs" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wbad-function-cast" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wbad-function-cast" >&5 +$as_echo_n "checking if $CC supports-Wbad-function-cast... " >&6; } + cacheid=xorg_cv_cc_flag__Wbad_function_cast + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wbad-function-cast" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wold-style-definition" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wold-style-definition" >&5 +$as_echo_n "checking if $CC supports-Wold-style-definition... " >&6; } + cacheid=xorg_cv_cc_flag__Wold_style_definition + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wold-style-definition" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wdeclaration-after-statement" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wdeclaration-after-statement" >&5 +$as_echo_n "checking if $CC supports-Wdeclaration-after-statement... " >&6; } + cacheid=xorg_cv_cc_flag__Wdeclaration_after_statement + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wdeclaration-after-statement" + found="yes" + fi + fi + + + + + +# This chunk adds additional warnings that could catch undesired effects. + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wunused" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wunused" >&5 +$as_echo_n "checking if $CC supports-Wunused... " >&6; } + cacheid=xorg_cv_cc_flag__Wunused + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wunused" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wuninitialized" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wuninitialized" >&5 +$as_echo_n "checking if $CC supports-Wuninitialized... " >&6; } + cacheid=xorg_cv_cc_flag__Wuninitialized + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wuninitialized" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wshadow" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wshadow" >&5 +$as_echo_n "checking if $CC supports-Wshadow... " >&6; } + cacheid=xorg_cv_cc_flag__Wshadow + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wshadow" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wcast-qual" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wcast-qual" >&5 +$as_echo_n "checking if $CC supports-Wcast-qual... " >&6; } + cacheid=xorg_cv_cc_flag__Wcast_qual + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wcast-qual" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmissing-noreturn" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wmissing-noreturn" >&5 +$as_echo_n "checking if $CC supports-Wmissing-noreturn... " >&6; } + cacheid=xorg_cv_cc_flag__Wmissing_noreturn + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmissing-noreturn" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmissing-format-attribute" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wmissing-format-attribute" >&5 +$as_echo_n "checking if $CC supports-Wmissing-format-attribute... " >&6; } + cacheid=xorg_cv_cc_flag__Wmissing_format_attribute + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmissing-format-attribute" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wredundant-decls" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wredundant-decls" >&5 +$as_echo_n "checking if $CC supports-Wredundant-decls... " >&6; } + cacheid=xorg_cv_cc_flag__Wredundant_decls + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wredundant-decls" + found="yes" + fi + fi + + + +# These are currently disabled because they are noisy. They will be enabled +# in the future once the codebase is sufficiently modernized to silence +# them. For now, I don't want them to drown out the other warnings. +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wlogical-op]) +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wparentheses]) +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-align]) + +# Turn some warnings into errors, so we don't accidently get successful builds +# when there are problems that should be fixed. + +if test "x$SELECTIVE_WERROR" = "xyes" ; then + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=implicit" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=implicit" >&5 +$as_echo_n "checking if $CC supports-Werror=implicit... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_implicit + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=implicit" + found="yes" + fi + fi + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED" >&5 +$as_echo_n "checking if $CC supports-errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED... " >&6; } + cacheid=xorg_cv_cc_flag__errwarn_E_NO_EXPLICIT_TYPE_GIVEN__errwarn_E_NO_IMPLICIT_DECL_ALLOWED + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=nonnull" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=nonnull" >&5 +$as_echo_n "checking if $CC supports-Werror=nonnull... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_nonnull + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=nonnull" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=init-self" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=init-self" >&5 +$as_echo_n "checking if $CC supports-Werror=init-self... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_init_self + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=init-self" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=main" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=main" >&5 +$as_echo_n "checking if $CC supports-Werror=main... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_main + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=main" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=missing-braces" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=missing-braces" >&5 +$as_echo_n "checking if $CC supports-Werror=missing-braces... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_missing_braces + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=missing-braces" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=sequence-point" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=sequence-point" >&5 +$as_echo_n "checking if $CC supports-Werror=sequence-point... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_sequence_point + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=sequence-point" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=return-type" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=return-type" >&5 +$as_echo_n "checking if $CC supports-Werror=return-type... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_return_type + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=return-type" + found="yes" + fi + fi + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -errwarn=E_FUNC_HAS_NO_RETURN_STMT" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-errwarn=E_FUNC_HAS_NO_RETURN_STMT" >&5 +$as_echo_n "checking if $CC supports-errwarn=E_FUNC_HAS_NO_RETURN_STMT... " >&6; } + cacheid=xorg_cv_cc_flag__errwarn_E_FUNC_HAS_NO_RETURN_STMT + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -errwarn=E_FUNC_HAS_NO_RETURN_STMT" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=trigraphs" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=trigraphs" >&5 +$as_echo_n "checking if $CC supports-Werror=trigraphs... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_trigraphs + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=trigraphs" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=array-bounds" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=array-bounds" >&5 +$as_echo_n "checking if $CC supports-Werror=array-bounds... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_array_bounds + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=array-bounds" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=write-strings" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=write-strings" >&5 +$as_echo_n "checking if $CC supports-Werror=write-strings... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_write_strings + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=write-strings" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=address" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=address" >&5 +$as_echo_n "checking if $CC supports-Werror=address... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_address + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=address" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=int-to-pointer-cast" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=int-to-pointer-cast" >&5 +$as_echo_n "checking if $CC supports-Werror=int-to-pointer-cast... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_int_to_pointer_cast + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=int-to-pointer-cast" + found="yes" + fi + fi + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -errwarn=E_BAD_PTR_INT_COMBINATION" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-errwarn=E_BAD_PTR_INT_COMBINATION" >&5 +$as_echo_n "checking if $CC supports-errwarn=E_BAD_PTR_INT_COMBINATION... " >&6; } + cacheid=xorg_cv_cc_flag__errwarn_E_BAD_PTR_INT_COMBINATION + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -errwarn=E_BAD_PTR_INT_COMBINATION" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=pointer-to-int-cast" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=pointer-to-int-cast" >&5 +$as_echo_n "checking if $CC supports-Werror=pointer-to-int-cast... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_pointer_to_int_cast + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=pointer-to-int-cast" + found="yes" + fi + fi + + # Also -errwarn=E_BAD_PTR_INT_COMBINATION +else +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You have chosen not to turn some select compiler warnings into errors. This should not be necessary. Please report why you needed to do so in a bug report at $PACKAGE_BUGREPORT" >&5 +$as_echo "$as_me: WARNING: You have chosen not to turn some select compiler warnings into errors. This should not be necessary. Please report why you needed to do so in a bug report at $PACKAGE_BUGREPORT" >&2;} + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wimplicit" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wimplicit" >&5 +$as_echo_n "checking if $CC supports-Wimplicit... " >&6; } + cacheid=xorg_cv_cc_flag__Wimplicit + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wimplicit" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wnonnull" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wnonnull" >&5 +$as_echo_n "checking if $CC supports-Wnonnull... " >&6; } + cacheid=xorg_cv_cc_flag__Wnonnull + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wnonnull" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Winit-self" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Winit-self" >&5 +$as_echo_n "checking if $CC supports-Winit-self... " >&6; } + cacheid=xorg_cv_cc_flag__Winit_self + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Winit-self" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmain" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wmain" >&5 +$as_echo_n "checking if $CC supports-Wmain... " >&6; } + cacheid=xorg_cv_cc_flag__Wmain + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmain" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmissing-braces" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wmissing-braces" >&5 +$as_echo_n "checking if $CC supports-Wmissing-braces... " >&6; } + cacheid=xorg_cv_cc_flag__Wmissing_braces + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmissing-braces" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wsequence-point" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wsequence-point" >&5 +$as_echo_n "checking if $CC supports-Wsequence-point... " >&6; } + cacheid=xorg_cv_cc_flag__Wsequence_point + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wsequence-point" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wreturn-type" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wreturn-type" >&5 +$as_echo_n "checking if $CC supports-Wreturn-type... " >&6; } + cacheid=xorg_cv_cc_flag__Wreturn_type + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wreturn-type" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wtrigraphs" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wtrigraphs" >&5 +$as_echo_n "checking if $CC supports-Wtrigraphs... " >&6; } + cacheid=xorg_cv_cc_flag__Wtrigraphs + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wtrigraphs" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Warray-bounds" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Warray-bounds" >&5 +$as_echo_n "checking if $CC supports-Warray-bounds... " >&6; } + cacheid=xorg_cv_cc_flag__Warray_bounds + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Warray-bounds" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wwrite-strings" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wwrite-strings" >&5 +$as_echo_n "checking if $CC supports-Wwrite-strings... " >&6; } + cacheid=xorg_cv_cc_flag__Wwrite_strings + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wwrite-strings" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Waddress" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Waddress" >&5 +$as_echo_n "checking if $CC supports-Waddress... " >&6; } + cacheid=xorg_cv_cc_flag__Waddress + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Waddress" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wint-to-pointer-cast" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wint-to-pointer-cast" >&5 +$as_echo_n "checking if $CC supports-Wint-to-pointer-cast... " >&6; } + cacheid=xorg_cv_cc_flag__Wint_to_pointer_cast + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wint-to-pointer-cast" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wpointer-to-int-cast" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wpointer-to-int-cast" >&5 +$as_echo_n "checking if $CC supports-Wpointer-to-int-cast... " >&6; } + cacheid=xorg_cv_cc_flag__Wpointer_to_int_cast + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wpointer-to-int-cast" + found="yes" + fi + fi + + +fi + + + + + + + + CWARNFLAGS="$BASE_CFLAGS" + if test "x$GCC" = xyes ; then + CWARNFLAGS="$CWARNFLAGS -fno-strict-aliasing" + fi + + + + + + + + +@%:@ Check whether --enable-strict-compilation was given. +if test "${enable_strict_compilation+set}" = set; then : + enableval=$enable_strict_compilation; STRICT_COMPILE=$enableval +else + STRICT_COMPILE=no +fi + + + + + + +STRICT_CFLAGS="" + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -pedantic" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-pedantic" >&5 +$as_echo_n "checking if $CC supports-pedantic... " >&6; } + cacheid=xorg_cv_cc_flag__pedantic + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + STRICT_CFLAGS="$STRICT_CFLAGS -pedantic" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror" >&5 +$as_echo_n "checking if $CC supports-Werror... " >&6; } + cacheid=xorg_cv_cc_flag__Werror + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + STRICT_CFLAGS="$STRICT_CFLAGS -Werror" + found="yes" + fi + fi + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -errwarn" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-errwarn" >&5 +$as_echo_n "checking if $CC supports-errwarn... " >&6; } + cacheid=xorg_cv_cc_flag__errwarn + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + STRICT_CFLAGS="$STRICT_CFLAGS -errwarn" + found="yes" + fi + fi + + + +# Earlier versions of gcc (eg: 4.2) support -Werror=attributes, but do not +# activate it with -Werror, so we add it here explicitly. + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=attributes" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=attributes" >&5 +$as_echo_n "checking if $CC supports-Werror=attributes... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_attributes + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + STRICT_CFLAGS="$STRICT_CFLAGS -Werror=attributes" + found="yes" + fi + fi + + + +if test "x$STRICT_COMPILE" = "xyes"; then + BASE_CFLAGS="$BASE_CFLAGS $STRICT_CFLAGS" + CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS" +fi + + + + + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_VERSION_MAJOR `echo $PACKAGE_VERSION | cut -d . -f 1` +_ACEOF + + PVM=`echo $PACKAGE_VERSION | cut -d . -f 2 | cut -d - -f 1` + if test "x$PVM" = "x"; then + PVM="0" + fi + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_VERSION_MINOR $PVM +_ACEOF + + PVP=`echo $PACKAGE_VERSION | cut -d . -f 3 | cut -d - -f 1` + if test "x$PVP" = "x"; then + PVP="0" + fi + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_VERSION_PATCHLEVEL $PVP +_ACEOF + + + +CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp && \ +mv \$(top_srcdir)/.changelog.tmp \$(top_srcdir)/ChangeLog) \ +|| (rm -f \$(top_srcdir)/.changelog.tmp; touch \$(top_srcdir)/ChangeLog; \ +echo 'git directory not found: installing possibly empty changelog.' >&2)" + + + + +macros_datadir=`$PKG_CONFIG --print-errors --variable=pkgdatadir xorg-macros` +INSTALL_CMD="(cp -f "$macros_datadir/INSTALL" \$(top_srcdir)/.INSTALL.tmp && \ +mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \ +|| (rm -f \$(top_srcdir)/.INSTALL.tmp; touch \$(top_srcdir)/INSTALL; \ +echo 'util-macros \"pkgdatadir\" from xorg-macros.pc not found: installing possibly empty INSTALL.' >&2)" + + + + + + +if test x$APP_MAN_SUFFIX = x ; then + APP_MAN_SUFFIX=1 +fi +if test x$APP_MAN_DIR = x ; then + APP_MAN_DIR='$(mandir)/man$(APP_MAN_SUFFIX)' +fi + +if test x$LIB_MAN_SUFFIX = x ; then + LIB_MAN_SUFFIX=3 +fi +if test x$LIB_MAN_DIR = x ; then + LIB_MAN_DIR='$(mandir)/man$(LIB_MAN_SUFFIX)' +fi + +if test x$FILE_MAN_SUFFIX = x ; then + case $host_os in + solaris*) FILE_MAN_SUFFIX=4 ;; + *) FILE_MAN_SUFFIX=5 ;; + esac +fi +if test x$FILE_MAN_DIR = x ; then + FILE_MAN_DIR='$(mandir)/man$(FILE_MAN_SUFFIX)' +fi + +if test x$MISC_MAN_SUFFIX = x ; then + case $host_os in + solaris*) MISC_MAN_SUFFIX=5 ;; + *) MISC_MAN_SUFFIX=7 ;; + esac +fi +if test x$MISC_MAN_DIR = x ; then + MISC_MAN_DIR='$(mandir)/man$(MISC_MAN_SUFFIX)' +fi + +if test x$DRIVER_MAN_SUFFIX = x ; then + case $host_os in + solaris*) DRIVER_MAN_SUFFIX=7 ;; + *) DRIVER_MAN_SUFFIX=4 ;; + esac +fi +if test x$DRIVER_MAN_DIR = x ; then + DRIVER_MAN_DIR='$(mandir)/man$(DRIVER_MAN_SUFFIX)' +fi + +if test x$ADMIN_MAN_SUFFIX = x ; then + case $host_os in + solaris*) ADMIN_MAN_SUFFIX=1m ;; + *) ADMIN_MAN_SUFFIX=8 ;; + esac +fi +if test x$ADMIN_MAN_DIR = x ; then + ADMIN_MAN_DIR='$(mandir)/man$(ADMIN_MAN_SUFFIX)' +fi + + + + + + + + + + + + + + + +XORG_MAN_PAGE="X Version 11" + +MAN_SUBSTS="\ + -e 's|__vendorversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \ + -e 's|__xorgversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \ + -e 's|__xservername__|Xorg|g' \ + -e 's|__xconfigfile__|xorg.conf|g' \ + -e 's|__projectroot__|\$(prefix)|g' \ + -e 's|__apploaddir__|\$(appdefaultdir)|g' \ + -e 's|__appmansuffix__|\$(APP_MAN_SUFFIX)|g' \ + -e 's|__drivermansuffix__|\$(DRIVER_MAN_SUFFIX)|g' \ + -e 's|__adminmansuffix__|\$(ADMIN_MAN_SUFFIX)|g' \ + -e 's|__libmansuffix__|\$(LIB_MAN_SUFFIX)|g' \ + -e 's|__miscmansuffix__|\$(MISC_MAN_SUFFIX)|g' \ + -e 's|__filemansuffix__|\$(FILE_MAN_SUFFIX)|g'" + + + +@%:@ Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=0;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + + + + + + + +# Check for different types of support on different platforms +case $host_os in + solaris*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for umem_alloc in -lumem" >&5 +$as_echo_n "checking for umem_alloc in -lumem... " >&6; } +if ${ac_cv_lib_umem_umem_alloc+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lumem $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char umem_alloc (); +int +main () +{ +return umem_alloc (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_umem_umem_alloc=yes +else + ac_cv_lib_umem_umem_alloc=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_umem_umem_alloc" >&5 +$as_echo "$ac_cv_lib_umem_umem_alloc" >&6; } +if test "x$ac_cv_lib_umem_umem_alloc" = xyes; then : + malloc_debug_env='LD_PRELOAD=libumem.so UMEM_DEBUG=default' +fi + + ;; + *-gnu*) # GNU libc - Value is used as a single byte bit pattern, + # both directly and inverted, so should not be 0 or 255. + malloc_debug_env='MALLOC_PERTURB_=15' + ;; + darwin*) + malloc_debug_env='MallocPreScribble=1 MallocScribble=1 DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib' + ;; + *bsd*) + malloc_debug_env='MallocPreScribble=1 MallocScribble=1' + ;; +esac + +# User supplied flags override default flags +if test "x$XORG_MALLOC_DEBUG_ENV" != "x"; then + malloc_debug_env="$XORG_MALLOC_DEBUG_ENV" +fi + +XORG_MALLOC_DEBUG_ENV=$malloc_debug_env + + + + +@%:@ Check whether --enable-docs was given. +if test "${enable_docs+set}" = set; then : + enableval=$enable_docs; build_docs=$enableval +else + build_docs=yes +fi + + + if test x$build_docs = xyes; then + ENABLE_DOCS_TRUE= + ENABLE_DOCS_FALSE='#' +else + ENABLE_DOCS_TRUE='#' + ENABLE_DOCS_FALSE= +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build documentation" >&5 +$as_echo_n "checking whether to build documentation... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $build_docs" >&5 +$as_echo "$build_docs" >&6; } + + + + + +@%:@ Check whether --with-doxygen was given. +if test "${with_doxygen+set}" = set; then : + withval=$with_doxygen; use_doxygen=$withval +else + use_doxygen=auto +fi + + + +if test "x$use_doxygen" = x"auto"; then + # Extract the first word of "doxygen", so it can be a program name with args. +set dummy doxygen; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_DOXYGEN+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $DOXYGEN in + [\\/]* | ?:[\\/]*) + ac_cv_path_DOXYGEN="$DOXYGEN" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_DOXYGEN="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DOXYGEN=$ac_cv_path_DOXYGEN +if test -n "$DOXYGEN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOXYGEN" >&5 +$as_echo "$DOXYGEN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$DOXYGEN" = "x"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: doxygen not found - documentation targets will be skipped" >&5 +$as_echo "$as_me: WARNING: doxygen not found - documentation targets will be skipped" >&2;} + have_doxygen=no + else + have_doxygen=yes + fi +elif test "x$use_doxygen" = x"yes" ; then + # Extract the first word of "doxygen", so it can be a program name with args. +set dummy doxygen; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_DOXYGEN+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $DOXYGEN in + [\\/]* | ?:[\\/]*) + ac_cv_path_DOXYGEN="$DOXYGEN" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_DOXYGEN="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DOXYGEN=$ac_cv_path_DOXYGEN +if test -n "$DOXYGEN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOXYGEN" >&5 +$as_echo "$DOXYGEN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$DOXYGEN" = "x"; then + as_fn_error $? "--with-doxygen=yes specified but doxygen not found in PATH" "$LINENO" 5 + fi + have_doxygen=yes +elif test "x$use_doxygen" = x"no" ; then + if test "x$DOXYGEN" != "x"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ignoring DOXYGEN environment variable since --with-doxygen=no was specified" >&5 +$as_echo "$as_me: WARNING: ignoring DOXYGEN environment variable since --with-doxygen=no was specified" >&2;} + fi + have_doxygen=no +else + as_fn_error $? "--with-doxygen expects 'yes' or 'no'" "$LINENO" 5 +fi + + if test "$have_doxygen" = yes; then + HAVE_DOXYGEN_TRUE= + HAVE_DOXYGEN_FALSE='#' +else + HAVE_DOXYGEN_TRUE='#' + HAVE_DOXYGEN_FALSE= +fi + + + +# Needed in older Automakes for subdir-objects + + +# Check for compiler features +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +$as_echo_n "checking for inline... " >&6; } +if ${ac_cv_c_inline+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_inline=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_inline" != no && break +done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +$as_echo "$ac_cv_c_inline" >&6; } + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + + +# Check for programs + + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi + +# Note: we use some yacc extensions, which work with either GNU bison +# (preferred) or byacc. Other yacc's may or may not work. +for ac_prog in 'bison -y' byacc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_YACC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$YACC"; then + ac_cv_prog_YACC="$YACC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_YACC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +YACC=$ac_cv_prog_YACC +if test -n "$YACC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 +$as_echo "$YACC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$YACC" && break +done +test -n "$YACC" || YACC="yacc" + +# Extract the first word of "$YACC", so it can be a program name with args. +set dummy $YACC; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_YACC_INST+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $YACC_INST in + [\\/]* | ?:[\\/]*) + ac_cv_path_YACC_INST="$YACC_INST" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_YACC_INST="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +YACC_INST=$ac_cv_path_YACC_INST +if test -n "$YACC_INST"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC_INST" >&5 +$as_echo "$YACC_INST" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +if test ! -f "src/xkbcomp/parser.c" -a "x$YACC_INST" = x; then : + + as_fn_error $? "yacc not found - unable to compile src/xkbcomp/parser.y" "$LINENO" 5 + +fi + +# Checks for library functions. +for ac_func in strcasecmp strncasecmp +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +if test "x$ac_cv_func_strcasecmp" = xno -o \ + "x$ac_cv_func_strncasecmp" = xno; then : + + as_fn_error $? "C library does not support strcasecmp/strncasecmp" "$LINENO" 5 + +fi + +for ac_func in eaccess euidaccess mmap +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +for ac_func in secure_getenv __secure_getenv +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +if test "x$ac_cv_func_secure_getenv" = xno -a \ + "x$ac_cv_func___secure_getenv" = xno; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C library does not support secure_getenv, using getenv instead" >&5 +$as_echo "$as_me: WARNING: C library does not support secure_getenv, using getenv instead" >&2;} + +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __builtin_expect" >&5 +$as_echo_n "checking for __builtin_expect... " >&6; } +if ${ax_cv_have___builtin_expect+:} false; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + __builtin_expect(0, 0) + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ax_cv_have___builtin_expect=yes +else + ax_cv_have___builtin_expect=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have___builtin_expect" >&5 +$as_echo "$ax_cv_have___builtin_expect" >&6; } + + if test yes = $ax_cv_have___builtin_expect; then : + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE___BUILTIN_EXPECT 1 +_ACEOF + +fi + + + + +# Some tests use Linux-specific headers +ac_fn_c_check_header_mongrel "$LINENO" "linux/input.h" "ac_cv_header_linux_input_h" "$ac_includes_default" +if test "x$ac_cv_header_linux_input_h" = xyes; then : + +fi + + + if test "x$ac_cv_header_linux_input_h" = xyes; then + BUILD_LINUX_TESTS_TRUE= + BUILD_LINUX_TESTS_FALSE='#' +else + BUILD_LINUX_TESTS_TRUE='#' + BUILD_LINUX_TESTS_FALSE= +fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -fvisibility=hidden" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-fvisibility=hidden" >&5 +$as_echo_n "checking if $CC supports-fvisibility=hidden... " >&6; } + cacheid=xorg_cv_cc_flag__fvisibility_hidden + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -fvisibility=hidden" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wextra -Wno-unused-parameter -Wno-missing-field-initializers" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wextra -Wno-unused-parameter -Wno-missing-field-initializers" >&5 +$as_echo_n "checking if $CC supports-Wextra -Wno-unused-parameter -Wno-missing-field-initializers... " >&6; } + cacheid=xorg_cv_cc_flag__Wextra__Wno_unused_parameter__Wno_missing_field_initializers + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wextra -Wno-unused-parameter -Wno-missing-field-initializers" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wdocumentation" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wdocumentation" >&5 +$as_echo_n "checking if $CC supports-Wdocumentation... " >&6; } + cacheid=xorg_cv_cc_flag__Wdocumentation + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wdocumentation" + found="yes" + fi + fi + + + +# OpenBSD does not have DT_NEEDED entries for libc by design +# so when these flags are passed to ld via libtool the checks will fail +case "$host_os" in +openbsd*) + ;; +*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,--no-undefined" >&5 +$as_echo_n "checking whether the linker accepts -Wl,--no-undefined... " >&6; } +if ${xorg_cv_linker_flags__Wl___no_undefined+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_save_FLAGS=$LDFLAGS + LDFLAGS="-Wl,--no-undefined" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + xorg_cv_linker_flags__Wl___no_undefined=yes +else + xorg_cv_linker_flags__Wl___no_undefined=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$ax_save_FLAGS +fi + +eval xorg_check_linker_flags=$xorg_cv_linker_flags__Wl___no_undefined +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_check_linker_flags" >&5 +$as_echo "$xorg_check_linker_flags" >&6; } +if test "x$xorg_check_linker_flags" = xyes; then + have_no_undefined=yes +else + : +fi + ;; +esac + + if test "x$have_no_undefined" = xyes; then + HAVE_NO_UNDEFINED_TRUE= + HAVE_NO_UNDEFINED_FALSE='#' +else + HAVE_NO_UNDEFINED_TRUE='#' + HAVE_NO_UNDEFINED_FALSE= +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5 +$as_echo_n "checking for clock_gettime in -lrt... " >&6; } +if ${ac_cv_lib_rt_clock_gettime+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lrt -lrt $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (); +int +main () +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_rt_clock_gettime=yes +else + ac_cv_lib_rt_clock_gettime=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5 +$as_echo "$ac_cv_lib_rt_clock_gettime" >&6; } +if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then : + RT_LIBS="-lrt" + +else + RT_LIBS="" + +fi + + +# Define a configuration option for the XKB config root +xkb_base=`$PKG_CONFIG --variable=xkb_base xkeyboard-config` +if test "x$xkb_base" = x; then : + + xkb_base="$datadir/X11/xkb" + +fi + +@%:@ Check whether --with-xkb_config_root was given. +if test "${with_xkb_config_root+set}" = set; then : + withval=$with_xkb_config_root; XKBCONFIGROOT="$withval" +else + XKBCONFIGROOT="$xkb_base" +fi + + + +# Define a configuration option for the X locale directory for compose + +@%:@ Check whether --with-x_locale_root was given. +if test "${with_x_locale_root+set}" = set; then : + withval=$with_x_locale_root; XLOCALEDIR="$withval" +else + XLOCALEDIR="$datadir/X11/locale" +fi + + + + +@%:@ Check whether --with-default_rules was given. +if test "${with_default_rules+set}" = set; then : + withval=$with_default_rules; DEFAULT_XKB_RULES="$withval" +else + DEFAULT_XKB_RULES="evdev" +fi + + +cat >>confdefs.h <<_ACEOF +@%:@define DEFAULT_XKB_RULES "$DEFAULT_XKB_RULES" +_ACEOF + + + +@%:@ Check whether --with-default_model was given. +if test "${with_default_model+set}" = set; then : + withval=$with_default_model; DEFAULT_XKB_MODEL="$withval" +else + DEFAULT_XKB_MODEL="pc105" +fi + + +cat >>confdefs.h <<_ACEOF +@%:@define DEFAULT_XKB_MODEL "$DEFAULT_XKB_MODEL" +_ACEOF + + + +@%:@ Check whether --with-default_layout was given. +if test "${with_default_layout+set}" = set; then : + withval=$with_default_layout; DEFAULT_XKB_LAYOUT="$withval" +else + DEFAULT_XKB_LAYOUT="us" +fi + + +cat >>confdefs.h <<_ACEOF +@%:@define DEFAULT_XKB_LAYOUT "$DEFAULT_XKB_LAYOUT" +_ACEOF + + + +@%:@ Check whether --with-default_variant was given. +if test "${with_default_variant+set}" = set; then : + withval=$with_default_variant; DEFAULT_XKB_VARIANT="$withval" +else + DEFAULT_XKB_VARIANT= +fi + +if test "x$DEFAULT_XKB_VARIANT" != x; then : + + +cat >>confdefs.h <<_ACEOF +@%:@define DEFAULT_XKB_VARIANT "$DEFAULT_XKB_VARIANT" +_ACEOF + + +fi + + +@%:@ Check whether --with-default_options was given. +if test "${with_default_options+set}" = set; then : + withval=$with_default_options; DEFAULT_XKB_OPTIONS="$withval" +else + DEFAULT_XKB_OPTIONS= +fi + +if test "x$DEFAULT_XKB_OPTIONS" != x; then : + + +cat >>confdefs.h <<_ACEOF +@%:@define DEFAULT_XKB_OPTIONS "$DEFAULT_XKB_OPTIONS" +_ACEOF + + +fi + +@%:@ Check whether --enable-x11 was given. +if test "${enable_x11+set}" = set; then : + enableval=$enable_x11; +else + enable_x11=yes +fi + +if test "x$enable_x11" = xyes; then : + + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XCB_XKB" >&5 +$as_echo_n "checking for XCB_XKB... " >&6; } + +if test -n "$XCB_XKB_CFLAGS"; then + pkg_cv_XCB_XKB_CFLAGS="$XCB_XKB_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xcb xcb-xkb >= 1.10\""; } >&5 + ($PKG_CONFIG --exists --print-errors "xcb xcb-xkb >= 1.10") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_XCB_XKB_CFLAGS=`$PKG_CONFIG --cflags "xcb xcb-xkb >= 1.10" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$XCB_XKB_LIBS"; then + pkg_cv_XCB_XKB_LIBS="$XCB_XKB_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xcb xcb-xkb >= 1.10\""; } >&5 + ($PKG_CONFIG --exists --print-errors "xcb xcb-xkb >= 1.10") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_XCB_XKB_LIBS=`$PKG_CONFIG --libs "xcb xcb-xkb >= 1.10" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + XCB_XKB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "xcb xcb-xkb >= 1.10" 2>&1` + else + XCB_XKB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "xcb xcb-xkb >= 1.10" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$XCB_XKB_PKG_ERRORS" >&5 + + as_fn_error $? "xkbcommon-x11 requires xcb-xkb >= 1.10 which was not found. \ +You can disable X11 support with --disable-x11." "$LINENO" 5 +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? "xkbcommon-x11 requires xcb-xkb >= 1.10 which was not found. \ +You can disable X11 support with --disable-x11." "$LINENO" 5 +else + XCB_XKB_CFLAGS=$pkg_cv_XCB_XKB_CFLAGS + XCB_XKB_LIBS=$pkg_cv_XCB_XKB_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +fi + +else + enable_x11=no +fi + if test "x$enable_x11" = xyes; then + ENABLE_X11_TRUE= + ENABLE_X11_FALSE='#' +else + ENABLE_X11_TRUE='#' + ENABLE_X11_FALSE= +fi + + +ac_config_files="$ac_config_files Makefile xkbcommon-uninstalled.pc xkbcommon.pc xkbcommon-x11.pc xkbcommon-x11-uninstalled.pc doc/Doxyfile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_DOCS_TRUE}" && test -z "${ENABLE_DOCS_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_DOCS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_DOXYGEN_TRUE}" && test -z "${HAVE_DOXYGEN_FALSE}"; then + as_fn_error $? "conditional \"HAVE_DOXYGEN\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${BUILD_LINUX_TESTS_TRUE}" && test -z "${BUILD_LINUX_TESTS_FALSE}"; then + as_fn_error $? "conditional \"BUILD_LINUX_TESTS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_NO_UNDEFINED_TRUE}" && test -z "${HAVE_NO_UNDEFINED_FALSE}"; then + as_fn_error $? "conditional \"HAVE_NO_UNDEFINED\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_X11_TRUE}" && test -z "${ENABLE_X11_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_X11\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in @%:@( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by libxkbcommon $as_me 0.5.0, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to . +libxkbcommon home page: ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +libxkbcommon config.status 0.5.0 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +OBJDUMP \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +DLLTOOL \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +nm_file_list_spec \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +sys_lib_dlsearch_path_spec; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' +xsi_shell='$xsi_shell' +lt_shell_append='$lt_shell_append' + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile' + + + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "xkbcommon-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES xkbcommon-uninstalled.pc" ;; + "xkbcommon.pc") CONFIG_FILES="$CONFIG_FILES xkbcommon.pc" ;; + "xkbcommon-x11.pc") CONFIG_FILES="$CONFIG_FILES xkbcommon-x11.pc" ;; + "xkbcommon-x11-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES xkbcommon-x11-uninstalled.pc" ;; + "doc/Doxyfile") CONFIG_FILES="$CONFIG_FILES doc/Doxyfile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool 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 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +# The names of the tagged configurations supported by this script. +available_tags="" + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and in which our libraries should be installed. +lt_sysroot=$lt_sysroot + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain="$ac_aux_dir/ltmain.sh" + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + if test x"$xsi_shell" = xyes; then + sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ +func_dirname ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_basename ()$/,/^} # func_basename /c\ +func_basename ()\ +{\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ +func_dirname_and_basename ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ +func_stripname ()\ +{\ +\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ +\ # positional parameters, so assign one to ordinary parameter first.\ +\ func_stripname_result=${3}\ +\ func_stripname_result=${func_stripname_result#"${1}"}\ +\ func_stripname_result=${func_stripname_result%"${2}"}\ +} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ +func_split_long_opt ()\ +{\ +\ func_split_long_opt_name=${1%%=*}\ +\ func_split_long_opt_arg=${1#*=}\ +} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ +func_split_short_opt ()\ +{\ +\ func_split_short_opt_arg=${1#??}\ +\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ +} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ +func_lo2o ()\ +{\ +\ case ${1} in\ +\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ +\ *) func_lo2o_result=${1} ;;\ +\ esac\ +} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_xform ()$/,/^} # func_xform /c\ +func_xform ()\ +{\ + func_xform_result=${1%.*}.lo\ +} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_arith ()$/,/^} # func_arith /c\ +func_arith ()\ +{\ + func_arith_result=$(( $* ))\ +} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_len ()$/,/^} # func_len /c\ +func_len ()\ +{\ + func_len_result=${#1}\ +} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + +fi + +if test x"$lt_shell_append" = xyes; then + sed -e '/^func_append ()$/,/^} # func_append /c\ +func_append ()\ +{\ + eval "${1}+=\\${2}"\ +} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ +func_append_quoted ()\ +{\ +\ func_quote_for_eval "${2}"\ +\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ +} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 +$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} +fi + + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: + $PACKAGE_NAME $VERSION + + libxkbcommon: yes + libxkbcommon-x11: ${enable_x11} + documentation: ${build_docs} + + default XKB rules: ${DEFAULT_XKB_RULES} + default XKB model: ${DEFAULT_XKB_MODEL} + default XKB layout: ${DEFAULT_XKB_LAYOUT} + default XKB variant: ${DEFAULT_XKB_VARIANT} + default XKB options: ${DEFAULT_XKB_OPTIONS} + + prefix: ${prefix} + includedir: ${includedir} + lib dir: ${libdir} + XKB config root: ${XKBCONFIGROOT} + X11 locale root: ${XLOCALEDIR} +" >&5 +$as_echo " + $PACKAGE_NAME $VERSION + + libxkbcommon: yes + libxkbcommon-x11: ${enable_x11} + documentation: ${build_docs} + + default XKB rules: ${DEFAULT_XKB_RULES} + default XKB model: ${DEFAULT_XKB_MODEL} + default XKB layout: ${DEFAULT_XKB_LAYOUT} + default XKB variant: ${DEFAULT_XKB_VARIANT} + default XKB options: ${DEFAULT_XKB_OPTIONS} + + prefix: ${prefix} + includedir: ${includedir} + lib dir: ${libdir} + XKB config root: ${XKBCONFIGROOT} + X11 locale root: ${XLOCALEDIR} +" >&6; } diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/output.1 b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/output.1 new file mode 100644 index 0000000..0722728 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/output.1 @@ -0,0 +1,21655 @@ +@%:@! /bin/sh +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.69 for libxkbcommon 0.5.0. +@%:@ +@%:@ Report bugs to . +@%:@ +@%:@ +@%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +@%:@ +@%:@ +@%:@ This configure script is free software; the Free Software Foundation +@%:@ gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in @%:@( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in @%:@( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: https://bugs.freedesktop.org/enter_bug.cgi?product=libxkbcommon +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIB@&t@OBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='libxkbcommon' +PACKAGE_TARNAME='libxkbcommon' +PACKAGE_VERSION='0.5.0' +PACKAGE_STRING='libxkbcommon 0.5.0' +PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=libxkbcommon' +PACKAGE_URL='http://xkbcommon.org' + +ac_unique_file="Makefile.am" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIB@&t@OBJS +ENABLE_X11_FALSE +ENABLE_X11_TRUE +XCB_XKB_LIBS +XCB_XKB_CFLAGS +XLOCALEDIR +XKBCONFIGROOT +RT_LIBS +HAVE_NO_UNDEFINED_FALSE +HAVE_NO_UNDEFINED_TRUE +BUILD_LINUX_TESTS_FALSE +BUILD_LINUX_TESTS_TRUE +YACC_INST +YFLAGS +YACC +HAVE_DOXYGEN_FALSE +HAVE_DOXYGEN_TRUE +DOXYGEN +ENABLE_DOCS_FALSE +ENABLE_DOCS_TRUE +XORG_MALLOC_DEBUG_ENV +MAN_SUBSTS +XORG_MAN_PAGE +ADMIN_MAN_DIR +DRIVER_MAN_DIR +MISC_MAN_DIR +FILE_MAN_DIR +LIB_MAN_DIR +APP_MAN_DIR +ADMIN_MAN_SUFFIX +DRIVER_MAN_SUFFIX +MISC_MAN_SUFFIX +FILE_MAN_SUFFIX +LIB_MAN_SUFFIX +APP_MAN_SUFFIX +INSTALL_CMD +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +CHANGELOG_CMD +STRICT_CFLAGS +CWARNFLAGS +BASE_CFLAGS +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +RANLIB +ac_ct_AR +AR +DLLTOOL +OBJDUMP +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +SED +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +LIBTOOL +EGREP +GREP +CPP +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +MAINT +MAINTAINER_MODE_FALSE +MAINTAINER_MODE_TRUE +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_maintainer_mode +enable_dependency_tracking +enable_shared +enable_static +with_pic +enable_fast_install +with_gnu_ld +with_sysroot +enable_libtool_lock +enable_selective_werror +enable_strict_compilation +enable_docs +with_doxygen +with_xkb_config_root +with_x_locale_root +with_default_rules +with_default_model +with_default_layout +with_default_variant +with_default_options +enable_x11 +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +XORG_MALLOC_DEBUG_ENV +DOXYGEN +YACC +YFLAGS +XCB_XKB_CFLAGS +XCB_XKB_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures libxkbcommon 0.5.0 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + @<:@@S|@ac_default_prefix@:>@ + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + @<:@PREFIX@:>@ + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root @<:@DATAROOTDIR/doc/libxkbcommon@:>@ + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of libxkbcommon 0.5.0:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --disable-maintainer-mode + disable make rules and dependencies not useful (and + sometimes confusing) to the casual installer + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --enable-shared@<:@=PKGS@:>@ build shared libraries @<:@default=yes@:>@ + --enable-static@<:@=PKGS@:>@ build static libraries @<:@default=yes@:>@ + --enable-fast-install@<:@=PKGS@:>@ + optimize for fast installation @<:@default=yes@:>@ + --disable-libtool-lock avoid locking (might break parallel builds) + --disable-selective-werror + Turn off selective compiler errors. (default: + enabled) + --enable-strict-compilation + Enable all warnings from compiler and make them + errors (default: disabled) + --enable-docs Enable building the documentation (default: yes) + --disable-x11 Disable support for creating keymaps with the X11 + protocol (default: enabled) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-pic@<:@=PKGS@:>@ try to use only PIC/non-PIC objects @<:@default=use + both@:>@ + --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ + --with-sysroot=DIR Search for dependent libraries within DIR + (or the compiler's sysroot if not specified). + --with-doxygen Use doxygen to regenerate documentation (default: + auto) + --with-xkb-config-root= + Set default XKB config root (default: + xkeyboard-config install path) + --with-x-locale-root= + Set X locale root (default: @S|@datadir/X11/locale) + --with-default-rules= + Default XKB ruleset (default: evdev) + --with-default-model= + Default XKB model (default: pc105) + --with-default-layout= + Default XKB layout (default: us) + --with-default-variant= + Default XKB variant (default: (none)) + --with-default-options= + Default XKB options (default: (none)) + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + XORG_MALLOC_DEBUG_ENV + Environment variables to enable memory checking in tests + DOXYGEN Path to doxygen command + YACC The `Yet Another Compiler Compiler' implementation to use. + Defaults to the first program found out of: `bison -y', `byacc', + `yacc'. + YFLAGS The list of arguments that will be passed by default to @S|@YACC. + This script will default YFLAGS to the empty string to avoid a + default value of `-d' given by some make applications. + XCB_XKB_CFLAGS + C compiler flags for XCB_XKB, overriding pkg-config + XCB_XKB_LIBS + linker flags for XCB_XKB, overriding pkg-config + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +libxkbcommon home page: . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +libxkbcommon configure 0.5.0 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +@%:@ ac_fn_c_try_compile LINENO +@%:@ -------------------------- +@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_compile + +@%:@ ac_fn_c_try_cpp LINENO +@%:@ ---------------------- +@%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_cpp + +@%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +@%:@ ------------------------------------------------------- +@%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using +@%:@ the include files in INCLUDES and setting the cache variable VAR +@%:@ accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +@%:@include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## ------------------------------------------------------------------------------ ## +## Report this to https://bugs.freedesktop.org/enter_bug.cgi?product=libxkbcommon ## +## ------------------------------------------------------------------------------ ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_header_mongrel + +@%:@ ac_fn_c_try_run LINENO +@%:@ ---------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. Assumes +@%:@ that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_run + +@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +@%:@ ------------------------------------------------------- +@%:@ Tests whether HEADER exists and can be compiled using the include files in +@%:@ INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +@%:@include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_header_compile + +@%:@ ac_fn_c_try_link LINENO +@%:@ ----------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_link + +@%:@ ac_fn_c_check_func LINENO FUNC VAR +@%:@ ---------------------------------- +@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_func + +@%:@ ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES +@%:@ --------------------------------------------- +@%:@ Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +@%:@ accordingly. +ac_fn_c_check_decl () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +$as_echo_n "checking whether $as_decl_name is declared... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +@%:@ifndef $as_decl_name +@%:@ifdef __cplusplus + (void) $as_decl_use; +@%:@else + (void) $as_decl_name; +@%:@endif +@%:@endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_decl +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by libxkbcommon $as_me 0.5.0, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in @%:@(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +ac_config_headers="$ac_config_headers src/config.h" + + +ac_aux_dir= +for ac_dir in build-aux "$srcdir"/build-aux; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in build-aux \"$srcdir\"/build-aux" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + + +# Initialize Automake +am__api_version='1.14' + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in @%:@(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +@%:@ Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='libxkbcommon' + VERSION='0.5.0' + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } + @%:@ Check whether --enable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then : + enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=yes +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +$as_echo "$USE_MAINTAINER_MODE" >&6; } + if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + + +# Get _GNU_SOURCE and friends +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +@%:@ Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" +if test "x$ac_cv_header_minix_config_h" = xyes; then : + MINIX=yes +else + MINIX= +fi + + + if test "$MINIX" = yes; then + +$as_echo "@%:@define _POSIX_SOURCE 1" >>confdefs.h + + +$as_echo "@%:@define _POSIX_1_SOURCE 2" >>confdefs.h + + +$as_echo "@%:@define _MINIX 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if ${ac_cv_safe_to_define___extensions__+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_safe_to_define___extensions__=yes +else + ac_cv_safe_to_define___extensions__=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } + test $ac_cv_safe_to_define___extensions__ = yes && + $as_echo "@%:@define __EXTENSIONS__ 1" >>confdefs.h + + $as_echo "@%:@define _ALL_SOURCE 1" >>confdefs.h + + $as_echo "@%:@define _GNU_SOURCE 1" >>confdefs.h + + $as_echo "@%:@define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + $as_echo "@%:@define _TANDEM_SOURCE 1" >>confdefs.h + + + +# Initialize libtool +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4.2' +macro_revision='1.3337' + + + + + + + + + + + + + +ltmain="$ac_aux_dir/ltmain.sh" + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case "$ECHO" in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +@%:@ Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 +$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 +$as_echo "$xsi_shell" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 +$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } +lt_shell_append=no +( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 +$as_echo "$lt_shell_append" >&6; } + + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test "$GCC" != yes; then + reload_cmds=false + fi + ;; + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. + if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +@%:@ Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 +$as_echo "${with_sysroot}" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + +@%:@ Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD="${LD-ld}_sol2" + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[012]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + + + +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + @%:@ Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + @%:@ Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +@%:@ Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for lt_pkg in $withval; do + IFS="$lt_save_ifs" + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + pic_mode=default +fi + + +test -z "$pic_mode" && pic_mode=default + + + + + + + + @%:@ Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +@%:@define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic@&t@ -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic@&t@ -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test x"$lt_cv_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='${wl}--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + link_all_deplibs=no + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test x"$lt_cv_prog_compiler__b" = xyes; then + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test "$lt_cv_irix_exported_symbol" = yes; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='${wl}-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test "$ld_shlibs" = no && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([A-Za-z]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test "$hardcode_action" = relink || + test "$inherit_rpath" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report which library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + + +# Add xorg-macros stuff + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 +$as_echo_n "checking for $CC option to accept ISO C99... " >&6; } +if ${ac_cv_prog_cc_c99+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +#include + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +#define debug(...) fprintf (stderr, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + your preprocessor is broken; +#endif +#if BIG_OK +#else + your preprocessor is broken; +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\0'; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static void +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str; + int number; + float fnumber; + + while (*format) + { + switch (*format++) + { + case 's': // string + str = va_arg (args_copy, const char *); + break; + case 'd': // int + number = va_arg (args_copy, int); + break; + case 'f': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); +} + +int +main () +{ + + // Check bool. + _Bool success = false; + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + test_varargs ("s, d' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' + || dynamic_array[ni.number - 1] != 543); + + ; + return 0; +} +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c99" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c99" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +$as_echo "$ac_cv_prog_cc_c99" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c99" != xno; then : + +fi + + + + + + +ac_fn_c_check_decl "$LINENO" "__clang__" "ac_cv_have_decl___clang__" "$ac_includes_default" +if test "x$ac_cv_have_decl___clang__" = xyes; then : + CLANGCC="yes" +else + CLANGCC="no" +fi + +ac_fn_c_check_decl "$LINENO" "__INTEL_COMPILER" "ac_cv_have_decl___INTEL_COMPILER" "$ac_includes_default" +if test "x$ac_cv_have_decl___INTEL_COMPILER" = xyes; then : + INTELCC="yes" +else + INTELCC="no" +fi + +ac_fn_c_check_decl "$LINENO" "__SUNPRO_C" "ac_cv_have_decl___SUNPRO_C" "$ac_includes_default" +if test "x$ac_cv_have_decl___SUNPRO_C" = xyes; then : + SUNCC="yes" +else + SUNCC="no" +fi + + + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi + + + + + +@%:@ Check whether --enable-selective-werror was given. +if test "${enable_selective_werror+set}" = set; then : + enableval=$enable_selective_werror; SELECTIVE_WERROR=$enableval +else + SELECTIVE_WERROR=yes +fi + + + + + +# -v is too short to test reliably with XORG_TESTSET_CFLAG +if test "x$SUNCC" = "xyes"; then + BASE_CFLAGS="-v" +else + BASE_CFLAGS="" +fi + +# This chunk of warnings were those that existed in the legacy CWARNFLAGS + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wall" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wall" >&5 +$as_echo_n "checking if $CC supports-Wall... " >&6; } + cacheid=xorg_cv_cc_flag__Wall + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wall" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wpointer-arith" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wpointer-arith" >&5 +$as_echo_n "checking if $CC supports-Wpointer-arith... " >&6; } + cacheid=xorg_cv_cc_flag__Wpointer_arith + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wpointer-arith" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmissing-declarations" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wmissing-declarations" >&5 +$as_echo_n "checking if $CC supports-Wmissing-declarations... " >&6; } + cacheid=xorg_cv_cc_flag__Wmissing_declarations + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmissing-declarations" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wformat=2" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wformat=2" >&5 +$as_echo_n "checking if $CC supports-Wformat=2... " >&6; } + cacheid=xorg_cv_cc_flag__Wformat_2 + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wformat=2" + found="yes" + fi + fi + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wformat" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wformat" >&5 +$as_echo_n "checking if $CC supports-Wformat... " >&6; } + cacheid=xorg_cv_cc_flag__Wformat + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wformat" + found="yes" + fi + fi + + + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wstrict-prototypes" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wstrict-prototypes" >&5 +$as_echo_n "checking if $CC supports-Wstrict-prototypes... " >&6; } + cacheid=xorg_cv_cc_flag__Wstrict_prototypes + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wstrict-prototypes" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmissing-prototypes" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wmissing-prototypes" >&5 +$as_echo_n "checking if $CC supports-Wmissing-prototypes... " >&6; } + cacheid=xorg_cv_cc_flag__Wmissing_prototypes + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmissing-prototypes" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wnested-externs" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wnested-externs" >&5 +$as_echo_n "checking if $CC supports-Wnested-externs... " >&6; } + cacheid=xorg_cv_cc_flag__Wnested_externs + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wnested-externs" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wbad-function-cast" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wbad-function-cast" >&5 +$as_echo_n "checking if $CC supports-Wbad-function-cast... " >&6; } + cacheid=xorg_cv_cc_flag__Wbad_function_cast + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wbad-function-cast" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wold-style-definition" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wold-style-definition" >&5 +$as_echo_n "checking if $CC supports-Wold-style-definition... " >&6; } + cacheid=xorg_cv_cc_flag__Wold_style_definition + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wold-style-definition" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wdeclaration-after-statement" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wdeclaration-after-statement" >&5 +$as_echo_n "checking if $CC supports-Wdeclaration-after-statement... " >&6; } + cacheid=xorg_cv_cc_flag__Wdeclaration_after_statement + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wdeclaration-after-statement" + found="yes" + fi + fi + + + + + +# This chunk adds additional warnings that could catch undesired effects. + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wunused" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wunused" >&5 +$as_echo_n "checking if $CC supports-Wunused... " >&6; } + cacheid=xorg_cv_cc_flag__Wunused + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wunused" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wuninitialized" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wuninitialized" >&5 +$as_echo_n "checking if $CC supports-Wuninitialized... " >&6; } + cacheid=xorg_cv_cc_flag__Wuninitialized + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wuninitialized" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wshadow" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wshadow" >&5 +$as_echo_n "checking if $CC supports-Wshadow... " >&6; } + cacheid=xorg_cv_cc_flag__Wshadow + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wshadow" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wcast-qual" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wcast-qual" >&5 +$as_echo_n "checking if $CC supports-Wcast-qual... " >&6; } + cacheid=xorg_cv_cc_flag__Wcast_qual + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wcast-qual" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmissing-noreturn" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wmissing-noreturn" >&5 +$as_echo_n "checking if $CC supports-Wmissing-noreturn... " >&6; } + cacheid=xorg_cv_cc_flag__Wmissing_noreturn + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmissing-noreturn" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmissing-format-attribute" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wmissing-format-attribute" >&5 +$as_echo_n "checking if $CC supports-Wmissing-format-attribute... " >&6; } + cacheid=xorg_cv_cc_flag__Wmissing_format_attribute + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmissing-format-attribute" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wredundant-decls" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wredundant-decls" >&5 +$as_echo_n "checking if $CC supports-Wredundant-decls... " >&6; } + cacheid=xorg_cv_cc_flag__Wredundant_decls + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wredundant-decls" + found="yes" + fi + fi + + + +# These are currently disabled because they are noisy. They will be enabled +# in the future once the codebase is sufficiently modernized to silence +# them. For now, I don't want them to drown out the other warnings. +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wlogical-op]) +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wparentheses]) +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-align]) + +# Turn some warnings into errors, so we don't accidently get successful builds +# when there are problems that should be fixed. + +if test "x$SELECTIVE_WERROR" = "xyes" ; then + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=implicit" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=implicit" >&5 +$as_echo_n "checking if $CC supports-Werror=implicit... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_implicit + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=implicit" + found="yes" + fi + fi + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED" >&5 +$as_echo_n "checking if $CC supports-errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED... " >&6; } + cacheid=xorg_cv_cc_flag__errwarn_E_NO_EXPLICIT_TYPE_GIVEN__errwarn_E_NO_IMPLICIT_DECL_ALLOWED + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=nonnull" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=nonnull" >&5 +$as_echo_n "checking if $CC supports-Werror=nonnull... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_nonnull + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=nonnull" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=init-self" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=init-self" >&5 +$as_echo_n "checking if $CC supports-Werror=init-self... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_init_self + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=init-self" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=main" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=main" >&5 +$as_echo_n "checking if $CC supports-Werror=main... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_main + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=main" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=missing-braces" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=missing-braces" >&5 +$as_echo_n "checking if $CC supports-Werror=missing-braces... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_missing_braces + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=missing-braces" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=sequence-point" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=sequence-point" >&5 +$as_echo_n "checking if $CC supports-Werror=sequence-point... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_sequence_point + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=sequence-point" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=return-type" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=return-type" >&5 +$as_echo_n "checking if $CC supports-Werror=return-type... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_return_type + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=return-type" + found="yes" + fi + fi + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -errwarn=E_FUNC_HAS_NO_RETURN_STMT" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-errwarn=E_FUNC_HAS_NO_RETURN_STMT" >&5 +$as_echo_n "checking if $CC supports-errwarn=E_FUNC_HAS_NO_RETURN_STMT... " >&6; } + cacheid=xorg_cv_cc_flag__errwarn_E_FUNC_HAS_NO_RETURN_STMT + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -errwarn=E_FUNC_HAS_NO_RETURN_STMT" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=trigraphs" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=trigraphs" >&5 +$as_echo_n "checking if $CC supports-Werror=trigraphs... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_trigraphs + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=trigraphs" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=array-bounds" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=array-bounds" >&5 +$as_echo_n "checking if $CC supports-Werror=array-bounds... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_array_bounds + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=array-bounds" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=write-strings" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=write-strings" >&5 +$as_echo_n "checking if $CC supports-Werror=write-strings... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_write_strings + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=write-strings" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=address" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=address" >&5 +$as_echo_n "checking if $CC supports-Werror=address... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_address + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=address" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=int-to-pointer-cast" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=int-to-pointer-cast" >&5 +$as_echo_n "checking if $CC supports-Werror=int-to-pointer-cast... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_int_to_pointer_cast + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=int-to-pointer-cast" + found="yes" + fi + fi + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -errwarn=E_BAD_PTR_INT_COMBINATION" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-errwarn=E_BAD_PTR_INT_COMBINATION" >&5 +$as_echo_n "checking if $CC supports-errwarn=E_BAD_PTR_INT_COMBINATION... " >&6; } + cacheid=xorg_cv_cc_flag__errwarn_E_BAD_PTR_INT_COMBINATION + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -errwarn=E_BAD_PTR_INT_COMBINATION" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=pointer-to-int-cast" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=pointer-to-int-cast" >&5 +$as_echo_n "checking if $CC supports-Werror=pointer-to-int-cast... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_pointer_to_int_cast + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=pointer-to-int-cast" + found="yes" + fi + fi + + # Also -errwarn=E_BAD_PTR_INT_COMBINATION +else +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You have chosen not to turn some select compiler warnings into errors. This should not be necessary. Please report why you needed to do so in a bug report at $PACKAGE_BUGREPORT" >&5 +$as_echo "$as_me: WARNING: You have chosen not to turn some select compiler warnings into errors. This should not be necessary. Please report why you needed to do so in a bug report at $PACKAGE_BUGREPORT" >&2;} + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wimplicit" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wimplicit" >&5 +$as_echo_n "checking if $CC supports-Wimplicit... " >&6; } + cacheid=xorg_cv_cc_flag__Wimplicit + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wimplicit" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wnonnull" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wnonnull" >&5 +$as_echo_n "checking if $CC supports-Wnonnull... " >&6; } + cacheid=xorg_cv_cc_flag__Wnonnull + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wnonnull" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Winit-self" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Winit-self" >&5 +$as_echo_n "checking if $CC supports-Winit-self... " >&6; } + cacheid=xorg_cv_cc_flag__Winit_self + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Winit-self" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmain" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wmain" >&5 +$as_echo_n "checking if $CC supports-Wmain... " >&6; } + cacheid=xorg_cv_cc_flag__Wmain + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmain" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmissing-braces" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wmissing-braces" >&5 +$as_echo_n "checking if $CC supports-Wmissing-braces... " >&6; } + cacheid=xorg_cv_cc_flag__Wmissing_braces + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmissing-braces" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wsequence-point" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wsequence-point" >&5 +$as_echo_n "checking if $CC supports-Wsequence-point... " >&6; } + cacheid=xorg_cv_cc_flag__Wsequence_point + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wsequence-point" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wreturn-type" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wreturn-type" >&5 +$as_echo_n "checking if $CC supports-Wreturn-type... " >&6; } + cacheid=xorg_cv_cc_flag__Wreturn_type + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wreturn-type" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wtrigraphs" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wtrigraphs" >&5 +$as_echo_n "checking if $CC supports-Wtrigraphs... " >&6; } + cacheid=xorg_cv_cc_flag__Wtrigraphs + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wtrigraphs" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Warray-bounds" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Warray-bounds" >&5 +$as_echo_n "checking if $CC supports-Warray-bounds... " >&6; } + cacheid=xorg_cv_cc_flag__Warray_bounds + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Warray-bounds" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wwrite-strings" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wwrite-strings" >&5 +$as_echo_n "checking if $CC supports-Wwrite-strings... " >&6; } + cacheid=xorg_cv_cc_flag__Wwrite_strings + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wwrite-strings" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Waddress" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Waddress" >&5 +$as_echo_n "checking if $CC supports-Waddress... " >&6; } + cacheid=xorg_cv_cc_flag__Waddress + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Waddress" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wint-to-pointer-cast" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wint-to-pointer-cast" >&5 +$as_echo_n "checking if $CC supports-Wint-to-pointer-cast... " >&6; } + cacheid=xorg_cv_cc_flag__Wint_to_pointer_cast + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wint-to-pointer-cast" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wpointer-to-int-cast" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wpointer-to-int-cast" >&5 +$as_echo_n "checking if $CC supports-Wpointer-to-int-cast... " >&6; } + cacheid=xorg_cv_cc_flag__Wpointer_to_int_cast + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wpointer-to-int-cast" + found="yes" + fi + fi + + +fi + + + + + + + + CWARNFLAGS="$BASE_CFLAGS" + if test "x$GCC" = xyes ; then + CWARNFLAGS="$CWARNFLAGS -fno-strict-aliasing" + fi + + + + + + + + +@%:@ Check whether --enable-strict-compilation was given. +if test "${enable_strict_compilation+set}" = set; then : + enableval=$enable_strict_compilation; STRICT_COMPILE=$enableval +else + STRICT_COMPILE=no +fi + + + + + + +STRICT_CFLAGS="" + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -pedantic" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-pedantic" >&5 +$as_echo_n "checking if $CC supports-pedantic... " >&6; } + cacheid=xorg_cv_cc_flag__pedantic + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + STRICT_CFLAGS="$STRICT_CFLAGS -pedantic" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror" >&5 +$as_echo_n "checking if $CC supports-Werror... " >&6; } + cacheid=xorg_cv_cc_flag__Werror + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + STRICT_CFLAGS="$STRICT_CFLAGS -Werror" + found="yes" + fi + fi + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -errwarn" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-errwarn" >&5 +$as_echo_n "checking if $CC supports-errwarn... " >&6; } + cacheid=xorg_cv_cc_flag__errwarn + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + STRICT_CFLAGS="$STRICT_CFLAGS -errwarn" + found="yes" + fi + fi + + + +# Earlier versions of gcc (eg: 4.2) support -Werror=attributes, but do not +# activate it with -Werror, so we add it here explicitly. + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=attributes" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=attributes" >&5 +$as_echo_n "checking if $CC supports-Werror=attributes... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_attributes + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + STRICT_CFLAGS="$STRICT_CFLAGS -Werror=attributes" + found="yes" + fi + fi + + + +if test "x$STRICT_COMPILE" = "xyes"; then + BASE_CFLAGS="$BASE_CFLAGS $STRICT_CFLAGS" + CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS" +fi + + + + + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_VERSION_MAJOR `echo $PACKAGE_VERSION | cut -d . -f 1` +_ACEOF + + PVM=`echo $PACKAGE_VERSION | cut -d . -f 2 | cut -d - -f 1` + if test "x$PVM" = "x"; then + PVM="0" + fi + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_VERSION_MINOR $PVM +_ACEOF + + PVP=`echo $PACKAGE_VERSION | cut -d . -f 3 | cut -d - -f 1` + if test "x$PVP" = "x"; then + PVP="0" + fi + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_VERSION_PATCHLEVEL $PVP +_ACEOF + + + +CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp && \ +mv \$(top_srcdir)/.changelog.tmp \$(top_srcdir)/ChangeLog) \ +|| (rm -f \$(top_srcdir)/.changelog.tmp; touch \$(top_srcdir)/ChangeLog; \ +echo 'git directory not found: installing possibly empty changelog.' >&2)" + + + + +macros_datadir=`$PKG_CONFIG --print-errors --variable=pkgdatadir xorg-macros` +INSTALL_CMD="(cp -f "$macros_datadir/INSTALL" \$(top_srcdir)/.INSTALL.tmp && \ +mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \ +|| (rm -f \$(top_srcdir)/.INSTALL.tmp; touch \$(top_srcdir)/INSTALL; \ +echo 'util-macros \"pkgdatadir\" from xorg-macros.pc not found: installing possibly empty INSTALL.' >&2)" + + + + + + +if test x$APP_MAN_SUFFIX = x ; then + APP_MAN_SUFFIX=1 +fi +if test x$APP_MAN_DIR = x ; then + APP_MAN_DIR='$(mandir)/man$(APP_MAN_SUFFIX)' +fi + +if test x$LIB_MAN_SUFFIX = x ; then + LIB_MAN_SUFFIX=3 +fi +if test x$LIB_MAN_DIR = x ; then + LIB_MAN_DIR='$(mandir)/man$(LIB_MAN_SUFFIX)' +fi + +if test x$FILE_MAN_SUFFIX = x ; then + case $host_os in + solaris*) FILE_MAN_SUFFIX=4 ;; + *) FILE_MAN_SUFFIX=5 ;; + esac +fi +if test x$FILE_MAN_DIR = x ; then + FILE_MAN_DIR='$(mandir)/man$(FILE_MAN_SUFFIX)' +fi + +if test x$MISC_MAN_SUFFIX = x ; then + case $host_os in + solaris*) MISC_MAN_SUFFIX=5 ;; + *) MISC_MAN_SUFFIX=7 ;; + esac +fi +if test x$MISC_MAN_DIR = x ; then + MISC_MAN_DIR='$(mandir)/man$(MISC_MAN_SUFFIX)' +fi + +if test x$DRIVER_MAN_SUFFIX = x ; then + case $host_os in + solaris*) DRIVER_MAN_SUFFIX=7 ;; + *) DRIVER_MAN_SUFFIX=4 ;; + esac +fi +if test x$DRIVER_MAN_DIR = x ; then + DRIVER_MAN_DIR='$(mandir)/man$(DRIVER_MAN_SUFFIX)' +fi + +if test x$ADMIN_MAN_SUFFIX = x ; then + case $host_os in + solaris*) ADMIN_MAN_SUFFIX=1m ;; + *) ADMIN_MAN_SUFFIX=8 ;; + esac +fi +if test x$ADMIN_MAN_DIR = x ; then + ADMIN_MAN_DIR='$(mandir)/man$(ADMIN_MAN_SUFFIX)' +fi + + + + + + + + + + + + + + + +XORG_MAN_PAGE="X Version 11" + +MAN_SUBSTS="\ + -e 's|__vendorversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \ + -e 's|__xorgversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \ + -e 's|__xservername__|Xorg|g' \ + -e 's|__xconfigfile__|xorg.conf|g' \ + -e 's|__projectroot__|\$(prefix)|g' \ + -e 's|__apploaddir__|\$(appdefaultdir)|g' \ + -e 's|__appmansuffix__|\$(APP_MAN_SUFFIX)|g' \ + -e 's|__drivermansuffix__|\$(DRIVER_MAN_SUFFIX)|g' \ + -e 's|__adminmansuffix__|\$(ADMIN_MAN_SUFFIX)|g' \ + -e 's|__libmansuffix__|\$(LIB_MAN_SUFFIX)|g' \ + -e 's|__miscmansuffix__|\$(MISC_MAN_SUFFIX)|g' \ + -e 's|__filemansuffix__|\$(FILE_MAN_SUFFIX)|g'" + + + +@%:@ Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=0;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + + + + + + + +# Check for different types of support on different platforms +case $host_os in + solaris*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for umem_alloc in -lumem" >&5 +$as_echo_n "checking for umem_alloc in -lumem... " >&6; } +if ${ac_cv_lib_umem_umem_alloc+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lumem $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char umem_alloc (); +int +main () +{ +return umem_alloc (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_umem_umem_alloc=yes +else + ac_cv_lib_umem_umem_alloc=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_umem_umem_alloc" >&5 +$as_echo "$ac_cv_lib_umem_umem_alloc" >&6; } +if test "x$ac_cv_lib_umem_umem_alloc" = xyes; then : + malloc_debug_env='LD_PRELOAD=libumem.so UMEM_DEBUG=default' +fi + + ;; + *-gnu*) # GNU libc - Value is used as a single byte bit pattern, + # both directly and inverted, so should not be 0 or 255. + malloc_debug_env='MALLOC_PERTURB_=15' + ;; + darwin*) + malloc_debug_env='MallocPreScribble=1 MallocScribble=1 DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib' + ;; + *bsd*) + malloc_debug_env='MallocPreScribble=1 MallocScribble=1' + ;; +esac + +# User supplied flags override default flags +if test "x$XORG_MALLOC_DEBUG_ENV" != "x"; then + malloc_debug_env="$XORG_MALLOC_DEBUG_ENV" +fi + +XORG_MALLOC_DEBUG_ENV=$malloc_debug_env + + + + +@%:@ Check whether --enable-docs was given. +if test "${enable_docs+set}" = set; then : + enableval=$enable_docs; build_docs=$enableval +else + build_docs=yes +fi + + + if test x$build_docs = xyes; then + ENABLE_DOCS_TRUE= + ENABLE_DOCS_FALSE='#' +else + ENABLE_DOCS_TRUE='#' + ENABLE_DOCS_FALSE= +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build documentation" >&5 +$as_echo_n "checking whether to build documentation... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $build_docs" >&5 +$as_echo "$build_docs" >&6; } + + + + + +@%:@ Check whether --with-doxygen was given. +if test "${with_doxygen+set}" = set; then : + withval=$with_doxygen; use_doxygen=$withval +else + use_doxygen=auto +fi + + + +if test "x$use_doxygen" = x"auto"; then + # Extract the first word of "doxygen", so it can be a program name with args. +set dummy doxygen; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_DOXYGEN+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $DOXYGEN in + [\\/]* | ?:[\\/]*) + ac_cv_path_DOXYGEN="$DOXYGEN" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_DOXYGEN="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DOXYGEN=$ac_cv_path_DOXYGEN +if test -n "$DOXYGEN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOXYGEN" >&5 +$as_echo "$DOXYGEN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$DOXYGEN" = "x"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: doxygen not found - documentation targets will be skipped" >&5 +$as_echo "$as_me: WARNING: doxygen not found - documentation targets will be skipped" >&2;} + have_doxygen=no + else + have_doxygen=yes + fi +elif test "x$use_doxygen" = x"yes" ; then + # Extract the first word of "doxygen", so it can be a program name with args. +set dummy doxygen; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_DOXYGEN+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $DOXYGEN in + [\\/]* | ?:[\\/]*) + ac_cv_path_DOXYGEN="$DOXYGEN" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_DOXYGEN="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DOXYGEN=$ac_cv_path_DOXYGEN +if test -n "$DOXYGEN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOXYGEN" >&5 +$as_echo "$DOXYGEN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$DOXYGEN" = "x"; then + as_fn_error $? "--with-doxygen=yes specified but doxygen not found in PATH" "$LINENO" 5 + fi + have_doxygen=yes +elif test "x$use_doxygen" = x"no" ; then + if test "x$DOXYGEN" != "x"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ignoring DOXYGEN environment variable since --with-doxygen=no was specified" >&5 +$as_echo "$as_me: WARNING: ignoring DOXYGEN environment variable since --with-doxygen=no was specified" >&2;} + fi + have_doxygen=no +else + as_fn_error $? "--with-doxygen expects 'yes' or 'no'" "$LINENO" 5 +fi + + if test "$have_doxygen" = yes; then + HAVE_DOXYGEN_TRUE= + HAVE_DOXYGEN_FALSE='#' +else + HAVE_DOXYGEN_TRUE='#' + HAVE_DOXYGEN_FALSE= +fi + + + +# Needed in older Automakes for subdir-objects + + +# Check for compiler features +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +$as_echo_n "checking for inline... " >&6; } +if ${ac_cv_c_inline+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_inline=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_inline" != no && break +done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +$as_echo "$ac_cv_c_inline" >&6; } + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + + +# Check for programs + + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi + +# Note: we use some yacc extensions, which work with either GNU bison +# (preferred) or byacc. Other yacc's may or may not work. +for ac_prog in 'bison -y' byacc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_YACC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$YACC"; then + ac_cv_prog_YACC="$YACC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_YACC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +YACC=$ac_cv_prog_YACC +if test -n "$YACC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 +$as_echo "$YACC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$YACC" && break +done +test -n "$YACC" || YACC="yacc" + +# Extract the first word of "$YACC", so it can be a program name with args. +set dummy $YACC; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_YACC_INST+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $YACC_INST in + [\\/]* | ?:[\\/]*) + ac_cv_path_YACC_INST="$YACC_INST" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_YACC_INST="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +YACC_INST=$ac_cv_path_YACC_INST +if test -n "$YACC_INST"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC_INST" >&5 +$as_echo "$YACC_INST" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +if test ! -f "src/xkbcomp/parser.c" -a "x$YACC_INST" = x; then : + + as_fn_error $? "yacc not found - unable to compile src/xkbcomp/parser.y" "$LINENO" 5 + +fi + +# Checks for library functions. +for ac_func in strcasecmp strncasecmp +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +if test "x$ac_cv_func_strcasecmp" = xno -o \ + "x$ac_cv_func_strncasecmp" = xno; then : + + as_fn_error $? "C library does not support strcasecmp/strncasecmp" "$LINENO" 5 + +fi + +for ac_func in eaccess euidaccess mmap +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +for ac_func in secure_getenv __secure_getenv +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +if test "x$ac_cv_func_secure_getenv" = xno -a \ + "x$ac_cv_func___secure_getenv" = xno; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C library does not support secure_getenv, using getenv instead" >&5 +$as_echo "$as_me: WARNING: C library does not support secure_getenv, using getenv instead" >&2;} + +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __builtin_expect" >&5 +$as_echo_n "checking for __builtin_expect... " >&6; } +if ${ax_cv_have___builtin_expect+:} false; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + __builtin_expect(0, 0) + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ax_cv_have___builtin_expect=yes +else + ax_cv_have___builtin_expect=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have___builtin_expect" >&5 +$as_echo "$ax_cv_have___builtin_expect" >&6; } + + if test yes = $ax_cv_have___builtin_expect; then : + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE___BUILTIN_EXPECT 1 +_ACEOF + +fi + + + + +# Some tests use Linux-specific headers +ac_fn_c_check_header_mongrel "$LINENO" "linux/input.h" "ac_cv_header_linux_input_h" "$ac_includes_default" +if test "x$ac_cv_header_linux_input_h" = xyes; then : + +fi + + + if test "x$ac_cv_header_linux_input_h" = xyes; then + BUILD_LINUX_TESTS_TRUE= + BUILD_LINUX_TESTS_FALSE='#' +else + BUILD_LINUX_TESTS_TRUE='#' + BUILD_LINUX_TESTS_FALSE= +fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -fvisibility=hidden" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-fvisibility=hidden" >&5 +$as_echo_n "checking if $CC supports-fvisibility=hidden... " >&6; } + cacheid=xorg_cv_cc_flag__fvisibility_hidden + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -fvisibility=hidden" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wextra -Wno-unused-parameter -Wno-missing-field-initializers" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wextra -Wno-unused-parameter -Wno-missing-field-initializers" >&5 +$as_echo_n "checking if $CC supports-Wextra -Wno-unused-parameter -Wno-missing-field-initializers... " >&6; } + cacheid=xorg_cv_cc_flag__Wextra__Wno_unused_parameter__Wno_missing_field_initializers + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wextra -Wno-unused-parameter -Wno-missing-field-initializers" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wdocumentation" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wdocumentation" >&5 +$as_echo_n "checking if $CC supports-Wdocumentation... " >&6; } + cacheid=xorg_cv_cc_flag__Wdocumentation + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wdocumentation" + found="yes" + fi + fi + + + +# OpenBSD does not have DT_NEEDED entries for libc by design +# so when these flags are passed to ld via libtool the checks will fail +case "$host_os" in +openbsd*) + ;; +*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,--no-undefined" >&5 +$as_echo_n "checking whether the linker accepts -Wl,--no-undefined... " >&6; } +if ${xorg_cv_linker_flags__Wl___no_undefined+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_save_FLAGS=$LDFLAGS + LDFLAGS="-Wl,--no-undefined" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + xorg_cv_linker_flags__Wl___no_undefined=yes +else + xorg_cv_linker_flags__Wl___no_undefined=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$ax_save_FLAGS +fi + +eval xorg_check_linker_flags=$xorg_cv_linker_flags__Wl___no_undefined +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_check_linker_flags" >&5 +$as_echo "$xorg_check_linker_flags" >&6; } +if test "x$xorg_check_linker_flags" = xyes; then + have_no_undefined=yes +else + : +fi + ;; +esac + + if test "x$have_no_undefined" = xyes; then + HAVE_NO_UNDEFINED_TRUE= + HAVE_NO_UNDEFINED_FALSE='#' +else + HAVE_NO_UNDEFINED_TRUE='#' + HAVE_NO_UNDEFINED_FALSE= +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5 +$as_echo_n "checking for clock_gettime in -lrt... " >&6; } +if ${ac_cv_lib_rt_clock_gettime+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lrt -lrt $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (); +int +main () +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_rt_clock_gettime=yes +else + ac_cv_lib_rt_clock_gettime=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5 +$as_echo "$ac_cv_lib_rt_clock_gettime" >&6; } +if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then : + RT_LIBS="-lrt" + +else + RT_LIBS="" + +fi + + +# Define a configuration option for the XKB config root +xkb_base=`$PKG_CONFIG --variable=xkb_base xkeyboard-config` +if test "x$xkb_base" = x; then : + + xkb_base="$datadir/X11/xkb" + +fi + +@%:@ Check whether --with-xkb_config_root was given. +if test "${with_xkb_config_root+set}" = set; then : + withval=$with_xkb_config_root; XKBCONFIGROOT="$withval" +else + XKBCONFIGROOT="$xkb_base" +fi + + + +# Define a configuration option for the X locale directory for compose + +@%:@ Check whether --with-x_locale_root was given. +if test "${with_x_locale_root+set}" = set; then : + withval=$with_x_locale_root; XLOCALEDIR="$withval" +else + XLOCALEDIR="$datadir/X11/locale" +fi + + + + +@%:@ Check whether --with-default_rules was given. +if test "${with_default_rules+set}" = set; then : + withval=$with_default_rules; DEFAULT_XKB_RULES="$withval" +else + DEFAULT_XKB_RULES="evdev" +fi + + +cat >>confdefs.h <<_ACEOF +@%:@define DEFAULT_XKB_RULES "$DEFAULT_XKB_RULES" +_ACEOF + + + +@%:@ Check whether --with-default_model was given. +if test "${with_default_model+set}" = set; then : + withval=$with_default_model; DEFAULT_XKB_MODEL="$withval" +else + DEFAULT_XKB_MODEL="pc105" +fi + + +cat >>confdefs.h <<_ACEOF +@%:@define DEFAULT_XKB_MODEL "$DEFAULT_XKB_MODEL" +_ACEOF + + + +@%:@ Check whether --with-default_layout was given. +if test "${with_default_layout+set}" = set; then : + withval=$with_default_layout; DEFAULT_XKB_LAYOUT="$withval" +else + DEFAULT_XKB_LAYOUT="us" +fi + + +cat >>confdefs.h <<_ACEOF +@%:@define DEFAULT_XKB_LAYOUT "$DEFAULT_XKB_LAYOUT" +_ACEOF + + + +@%:@ Check whether --with-default_variant was given. +if test "${with_default_variant+set}" = set; then : + withval=$with_default_variant; DEFAULT_XKB_VARIANT="$withval" +else + DEFAULT_XKB_VARIANT= +fi + +if test "x$DEFAULT_XKB_VARIANT" != x; then : + + +cat >>confdefs.h <<_ACEOF +@%:@define DEFAULT_XKB_VARIANT "$DEFAULT_XKB_VARIANT" +_ACEOF + + +fi + + +@%:@ Check whether --with-default_options was given. +if test "${with_default_options+set}" = set; then : + withval=$with_default_options; DEFAULT_XKB_OPTIONS="$withval" +else + DEFAULT_XKB_OPTIONS= +fi + +if test "x$DEFAULT_XKB_OPTIONS" != x; then : + + +cat >>confdefs.h <<_ACEOF +@%:@define DEFAULT_XKB_OPTIONS "$DEFAULT_XKB_OPTIONS" +_ACEOF + + +fi + +@%:@ Check whether --enable-x11 was given. +if test "${enable_x11+set}" = set; then : + enableval=$enable_x11; +else + enable_x11=yes +fi + +if test "x$enable_x11" = xyes; then : + + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XCB_XKB" >&5 +$as_echo_n "checking for XCB_XKB... " >&6; } + +if test -n "$XCB_XKB_CFLAGS"; then + pkg_cv_XCB_XKB_CFLAGS="$XCB_XKB_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xcb xcb-xkb >= 1.10\""; } >&5 + ($PKG_CONFIG --exists --print-errors "xcb xcb-xkb >= 1.10") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_XCB_XKB_CFLAGS=`$PKG_CONFIG --cflags "xcb xcb-xkb >= 1.10" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$XCB_XKB_LIBS"; then + pkg_cv_XCB_XKB_LIBS="$XCB_XKB_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xcb xcb-xkb >= 1.10\""; } >&5 + ($PKG_CONFIG --exists --print-errors "xcb xcb-xkb >= 1.10") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_XCB_XKB_LIBS=`$PKG_CONFIG --libs "xcb xcb-xkb >= 1.10" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + XCB_XKB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "xcb xcb-xkb >= 1.10" 2>&1` + else + XCB_XKB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "xcb xcb-xkb >= 1.10" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$XCB_XKB_PKG_ERRORS" >&5 + + as_fn_error $? "xkbcommon-x11 requires xcb-xkb >= 1.10 which was not found. \ +You can disable X11 support with --disable-x11." "$LINENO" 5 +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? "xkbcommon-x11 requires xcb-xkb >= 1.10 which was not found. \ +You can disable X11 support with --disable-x11." "$LINENO" 5 +else + XCB_XKB_CFLAGS=$pkg_cv_XCB_XKB_CFLAGS + XCB_XKB_LIBS=$pkg_cv_XCB_XKB_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +fi + +else + enable_x11=no +fi + if test "x$enable_x11" = xyes; then + ENABLE_X11_TRUE= + ENABLE_X11_FALSE='#' +else + ENABLE_X11_TRUE='#' + ENABLE_X11_FALSE= +fi + + +ac_config_files="$ac_config_files Makefile xkbcommon-uninstalled.pc xkbcommon.pc xkbcommon-x11.pc xkbcommon-x11-uninstalled.pc doc/Doxyfile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_DOCS_TRUE}" && test -z "${ENABLE_DOCS_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_DOCS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_DOXYGEN_TRUE}" && test -z "${HAVE_DOXYGEN_FALSE}"; then + as_fn_error $? "conditional \"HAVE_DOXYGEN\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${BUILD_LINUX_TESTS_TRUE}" && test -z "${BUILD_LINUX_TESTS_FALSE}"; then + as_fn_error $? "conditional \"BUILD_LINUX_TESTS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_NO_UNDEFINED_TRUE}" && test -z "${HAVE_NO_UNDEFINED_FALSE}"; then + as_fn_error $? "conditional \"HAVE_NO_UNDEFINED\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_X11_TRUE}" && test -z "${ENABLE_X11_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_X11\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in @%:@( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by libxkbcommon $as_me 0.5.0, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to . +libxkbcommon home page: ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +libxkbcommon config.status 0.5.0 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +OBJDUMP \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +DLLTOOL \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +nm_file_list_spec \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +sys_lib_dlsearch_path_spec; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' +xsi_shell='$xsi_shell' +lt_shell_append='$lt_shell_append' + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile' + + + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "xkbcommon-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES xkbcommon-uninstalled.pc" ;; + "xkbcommon.pc") CONFIG_FILES="$CONFIG_FILES xkbcommon.pc" ;; + "xkbcommon-x11.pc") CONFIG_FILES="$CONFIG_FILES xkbcommon-x11.pc" ;; + "xkbcommon-x11-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES xkbcommon-x11-uninstalled.pc" ;; + "doc/Doxyfile") CONFIG_FILES="$CONFIG_FILES doc/Doxyfile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool 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 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +# The names of the tagged configurations supported by this script. +available_tags="" + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and in which our libraries should be installed. +lt_sysroot=$lt_sysroot + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain="$ac_aux_dir/ltmain.sh" + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + if test x"$xsi_shell" = xyes; then + sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ +func_dirname ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_basename ()$/,/^} # func_basename /c\ +func_basename ()\ +{\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ +func_dirname_and_basename ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ +func_stripname ()\ +{\ +\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ +\ # positional parameters, so assign one to ordinary parameter first.\ +\ func_stripname_result=${3}\ +\ func_stripname_result=${func_stripname_result#"${1}"}\ +\ func_stripname_result=${func_stripname_result%"${2}"}\ +} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ +func_split_long_opt ()\ +{\ +\ func_split_long_opt_name=${1%%=*}\ +\ func_split_long_opt_arg=${1#*=}\ +} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ +func_split_short_opt ()\ +{\ +\ func_split_short_opt_arg=${1#??}\ +\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ +} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ +func_lo2o ()\ +{\ +\ case ${1} in\ +\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ +\ *) func_lo2o_result=${1} ;;\ +\ esac\ +} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_xform ()$/,/^} # func_xform /c\ +func_xform ()\ +{\ + func_xform_result=${1%.*}.lo\ +} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_arith ()$/,/^} # func_arith /c\ +func_arith ()\ +{\ + func_arith_result=$(( $* ))\ +} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_len ()$/,/^} # func_len /c\ +func_len ()\ +{\ + func_len_result=${#1}\ +} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + +fi + +if test x"$lt_shell_append" = xyes; then + sed -e '/^func_append ()$/,/^} # func_append /c\ +func_append ()\ +{\ + eval "${1}+=\\${2}"\ +} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ +func_append_quoted ()\ +{\ +\ func_quote_for_eval "${2}"\ +\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ +} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 +$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} +fi + + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: + $PACKAGE_NAME $VERSION + + libxkbcommon: yes + libxkbcommon-x11: ${enable_x11} + documentation: ${build_docs} + + default XKB rules: ${DEFAULT_XKB_RULES} + default XKB model: ${DEFAULT_XKB_MODEL} + default XKB layout: ${DEFAULT_XKB_LAYOUT} + default XKB variant: ${DEFAULT_XKB_VARIANT} + default XKB options: ${DEFAULT_XKB_OPTIONS} + + prefix: ${prefix} + includedir: ${includedir} + lib dir: ${libdir} + XKB config root: ${XKBCONFIGROOT} + X11 locale root: ${XLOCALEDIR} +" >&5 +$as_echo " + $PACKAGE_NAME $VERSION + + libxkbcommon: yes + libxkbcommon-x11: ${enable_x11} + documentation: ${build_docs} + + default XKB rules: ${DEFAULT_XKB_RULES} + default XKB model: ${DEFAULT_XKB_MODEL} + default XKB layout: ${DEFAULT_XKB_LAYOUT} + default XKB variant: ${DEFAULT_XKB_VARIANT} + default XKB options: ${DEFAULT_XKB_OPTIONS} + + prefix: ${prefix} + includedir: ${includedir} + lib dir: ${libdir} + XKB config root: ${XKBCONFIGROOT} + X11 locale root: ${XLOCALEDIR} +" >&6; } diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/output.2 b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/output.2 new file mode 100644 index 0000000..0722728 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/output.2 @@ -0,0 +1,21655 @@ +@%:@! /bin/sh +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.69 for libxkbcommon 0.5.0. +@%:@ +@%:@ Report bugs to . +@%:@ +@%:@ +@%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +@%:@ +@%:@ +@%:@ This configure script is free software; the Free Software Foundation +@%:@ gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in @%:@( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in @%:@( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: https://bugs.freedesktop.org/enter_bug.cgi?product=libxkbcommon +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIB@&t@OBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='libxkbcommon' +PACKAGE_TARNAME='libxkbcommon' +PACKAGE_VERSION='0.5.0' +PACKAGE_STRING='libxkbcommon 0.5.0' +PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=libxkbcommon' +PACKAGE_URL='http://xkbcommon.org' + +ac_unique_file="Makefile.am" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIB@&t@OBJS +ENABLE_X11_FALSE +ENABLE_X11_TRUE +XCB_XKB_LIBS +XCB_XKB_CFLAGS +XLOCALEDIR +XKBCONFIGROOT +RT_LIBS +HAVE_NO_UNDEFINED_FALSE +HAVE_NO_UNDEFINED_TRUE +BUILD_LINUX_TESTS_FALSE +BUILD_LINUX_TESTS_TRUE +YACC_INST +YFLAGS +YACC +HAVE_DOXYGEN_FALSE +HAVE_DOXYGEN_TRUE +DOXYGEN +ENABLE_DOCS_FALSE +ENABLE_DOCS_TRUE +XORG_MALLOC_DEBUG_ENV +MAN_SUBSTS +XORG_MAN_PAGE +ADMIN_MAN_DIR +DRIVER_MAN_DIR +MISC_MAN_DIR +FILE_MAN_DIR +LIB_MAN_DIR +APP_MAN_DIR +ADMIN_MAN_SUFFIX +DRIVER_MAN_SUFFIX +MISC_MAN_SUFFIX +FILE_MAN_SUFFIX +LIB_MAN_SUFFIX +APP_MAN_SUFFIX +INSTALL_CMD +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +CHANGELOG_CMD +STRICT_CFLAGS +CWARNFLAGS +BASE_CFLAGS +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +RANLIB +ac_ct_AR +AR +DLLTOOL +OBJDUMP +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +SED +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +LIBTOOL +EGREP +GREP +CPP +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +MAINT +MAINTAINER_MODE_FALSE +MAINTAINER_MODE_TRUE +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_maintainer_mode +enable_dependency_tracking +enable_shared +enable_static +with_pic +enable_fast_install +with_gnu_ld +with_sysroot +enable_libtool_lock +enable_selective_werror +enable_strict_compilation +enable_docs +with_doxygen +with_xkb_config_root +with_x_locale_root +with_default_rules +with_default_model +with_default_layout +with_default_variant +with_default_options +enable_x11 +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +XORG_MALLOC_DEBUG_ENV +DOXYGEN +YACC +YFLAGS +XCB_XKB_CFLAGS +XCB_XKB_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures libxkbcommon 0.5.0 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + @<:@@S|@ac_default_prefix@:>@ + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + @<:@PREFIX@:>@ + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root @<:@DATAROOTDIR/doc/libxkbcommon@:>@ + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of libxkbcommon 0.5.0:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --disable-maintainer-mode + disable make rules and dependencies not useful (and + sometimes confusing) to the casual installer + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --enable-shared@<:@=PKGS@:>@ build shared libraries @<:@default=yes@:>@ + --enable-static@<:@=PKGS@:>@ build static libraries @<:@default=yes@:>@ + --enable-fast-install@<:@=PKGS@:>@ + optimize for fast installation @<:@default=yes@:>@ + --disable-libtool-lock avoid locking (might break parallel builds) + --disable-selective-werror + Turn off selective compiler errors. (default: + enabled) + --enable-strict-compilation + Enable all warnings from compiler and make them + errors (default: disabled) + --enable-docs Enable building the documentation (default: yes) + --disable-x11 Disable support for creating keymaps with the X11 + protocol (default: enabled) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-pic@<:@=PKGS@:>@ try to use only PIC/non-PIC objects @<:@default=use + both@:>@ + --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ + --with-sysroot=DIR Search for dependent libraries within DIR + (or the compiler's sysroot if not specified). + --with-doxygen Use doxygen to regenerate documentation (default: + auto) + --with-xkb-config-root= + Set default XKB config root (default: + xkeyboard-config install path) + --with-x-locale-root= + Set X locale root (default: @S|@datadir/X11/locale) + --with-default-rules= + Default XKB ruleset (default: evdev) + --with-default-model= + Default XKB model (default: pc105) + --with-default-layout= + Default XKB layout (default: us) + --with-default-variant= + Default XKB variant (default: (none)) + --with-default-options= + Default XKB options (default: (none)) + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + XORG_MALLOC_DEBUG_ENV + Environment variables to enable memory checking in tests + DOXYGEN Path to doxygen command + YACC The `Yet Another Compiler Compiler' implementation to use. + Defaults to the first program found out of: `bison -y', `byacc', + `yacc'. + YFLAGS The list of arguments that will be passed by default to @S|@YACC. + This script will default YFLAGS to the empty string to avoid a + default value of `-d' given by some make applications. + XCB_XKB_CFLAGS + C compiler flags for XCB_XKB, overriding pkg-config + XCB_XKB_LIBS + linker flags for XCB_XKB, overriding pkg-config + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +libxkbcommon home page: . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +libxkbcommon configure 0.5.0 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +@%:@ ac_fn_c_try_compile LINENO +@%:@ -------------------------- +@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_compile + +@%:@ ac_fn_c_try_cpp LINENO +@%:@ ---------------------- +@%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_cpp + +@%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +@%:@ ------------------------------------------------------- +@%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using +@%:@ the include files in INCLUDES and setting the cache variable VAR +@%:@ accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +@%:@include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## ------------------------------------------------------------------------------ ## +## Report this to https://bugs.freedesktop.org/enter_bug.cgi?product=libxkbcommon ## +## ------------------------------------------------------------------------------ ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_header_mongrel + +@%:@ ac_fn_c_try_run LINENO +@%:@ ---------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. Assumes +@%:@ that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_run + +@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +@%:@ ------------------------------------------------------- +@%:@ Tests whether HEADER exists and can be compiled using the include files in +@%:@ INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +@%:@include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_header_compile + +@%:@ ac_fn_c_try_link LINENO +@%:@ ----------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_link + +@%:@ ac_fn_c_check_func LINENO FUNC VAR +@%:@ ---------------------------------- +@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_func + +@%:@ ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES +@%:@ --------------------------------------------- +@%:@ Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +@%:@ accordingly. +ac_fn_c_check_decl () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +$as_echo_n "checking whether $as_decl_name is declared... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +@%:@ifndef $as_decl_name +@%:@ifdef __cplusplus + (void) $as_decl_use; +@%:@else + (void) $as_decl_name; +@%:@endif +@%:@endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_decl +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by libxkbcommon $as_me 0.5.0, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in @%:@(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +ac_config_headers="$ac_config_headers src/config.h" + + +ac_aux_dir= +for ac_dir in build-aux "$srcdir"/build-aux; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in build-aux \"$srcdir\"/build-aux" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + + +# Initialize Automake +am__api_version='1.14' + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in @%:@(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +@%:@ Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='libxkbcommon' + VERSION='0.5.0' + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } + @%:@ Check whether --enable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then : + enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=yes +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +$as_echo "$USE_MAINTAINER_MODE" >&6; } + if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + + +# Get _GNU_SOURCE and friends +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +@%:@ Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" +if test "x$ac_cv_header_minix_config_h" = xyes; then : + MINIX=yes +else + MINIX= +fi + + + if test "$MINIX" = yes; then + +$as_echo "@%:@define _POSIX_SOURCE 1" >>confdefs.h + + +$as_echo "@%:@define _POSIX_1_SOURCE 2" >>confdefs.h + + +$as_echo "@%:@define _MINIX 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if ${ac_cv_safe_to_define___extensions__+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_safe_to_define___extensions__=yes +else + ac_cv_safe_to_define___extensions__=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } + test $ac_cv_safe_to_define___extensions__ = yes && + $as_echo "@%:@define __EXTENSIONS__ 1" >>confdefs.h + + $as_echo "@%:@define _ALL_SOURCE 1" >>confdefs.h + + $as_echo "@%:@define _GNU_SOURCE 1" >>confdefs.h + + $as_echo "@%:@define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + $as_echo "@%:@define _TANDEM_SOURCE 1" >>confdefs.h + + + +# Initialize libtool +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4.2' +macro_revision='1.3337' + + + + + + + + + + + + + +ltmain="$ac_aux_dir/ltmain.sh" + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case "$ECHO" in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +@%:@ Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 +$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 +$as_echo "$xsi_shell" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 +$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } +lt_shell_append=no +( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 +$as_echo "$lt_shell_append" >&6; } + + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test "$GCC" != yes; then + reload_cmds=false + fi + ;; + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. + if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +@%:@ Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 +$as_echo "${with_sysroot}" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + +@%:@ Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD="${LD-ld}_sol2" + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[012]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + + + +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + @%:@ Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + @%:@ Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +@%:@ Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for lt_pkg in $withval; do + IFS="$lt_save_ifs" + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + pic_mode=default +fi + + +test -z "$pic_mode" && pic_mode=default + + + + + + + + @%:@ Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +@%:@define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic@&t@ -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic@&t@ -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test x"$lt_cv_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='${wl}--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + link_all_deplibs=no + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test x"$lt_cv_prog_compiler__b" = xyes; then + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test "$lt_cv_irix_exported_symbol" = yes; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='${wl}-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test "$ld_shlibs" = no && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([A-Za-z]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test "$hardcode_action" = relink || + test "$inherit_rpath" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report which library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + + +# Add xorg-macros stuff + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 +$as_echo_n "checking for $CC option to accept ISO C99... " >&6; } +if ${ac_cv_prog_cc_c99+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +#include + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +#define debug(...) fprintf (stderr, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + your preprocessor is broken; +#endif +#if BIG_OK +#else + your preprocessor is broken; +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\0'; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static void +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str; + int number; + float fnumber; + + while (*format) + { + switch (*format++) + { + case 's': // string + str = va_arg (args_copy, const char *); + break; + case 'd': // int + number = va_arg (args_copy, int); + break; + case 'f': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); +} + +int +main () +{ + + // Check bool. + _Bool success = false; + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + test_varargs ("s, d' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' + || dynamic_array[ni.number - 1] != 543); + + ; + return 0; +} +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c99" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c99" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +$as_echo "$ac_cv_prog_cc_c99" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c99" != xno; then : + +fi + + + + + + +ac_fn_c_check_decl "$LINENO" "__clang__" "ac_cv_have_decl___clang__" "$ac_includes_default" +if test "x$ac_cv_have_decl___clang__" = xyes; then : + CLANGCC="yes" +else + CLANGCC="no" +fi + +ac_fn_c_check_decl "$LINENO" "__INTEL_COMPILER" "ac_cv_have_decl___INTEL_COMPILER" "$ac_includes_default" +if test "x$ac_cv_have_decl___INTEL_COMPILER" = xyes; then : + INTELCC="yes" +else + INTELCC="no" +fi + +ac_fn_c_check_decl "$LINENO" "__SUNPRO_C" "ac_cv_have_decl___SUNPRO_C" "$ac_includes_default" +if test "x$ac_cv_have_decl___SUNPRO_C" = xyes; then : + SUNCC="yes" +else + SUNCC="no" +fi + + + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi + + + + + +@%:@ Check whether --enable-selective-werror was given. +if test "${enable_selective_werror+set}" = set; then : + enableval=$enable_selective_werror; SELECTIVE_WERROR=$enableval +else + SELECTIVE_WERROR=yes +fi + + + + + +# -v is too short to test reliably with XORG_TESTSET_CFLAG +if test "x$SUNCC" = "xyes"; then + BASE_CFLAGS="-v" +else + BASE_CFLAGS="" +fi + +# This chunk of warnings were those that existed in the legacy CWARNFLAGS + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wall" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wall" >&5 +$as_echo_n "checking if $CC supports-Wall... " >&6; } + cacheid=xorg_cv_cc_flag__Wall + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wall" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wpointer-arith" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wpointer-arith" >&5 +$as_echo_n "checking if $CC supports-Wpointer-arith... " >&6; } + cacheid=xorg_cv_cc_flag__Wpointer_arith + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wpointer-arith" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmissing-declarations" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wmissing-declarations" >&5 +$as_echo_n "checking if $CC supports-Wmissing-declarations... " >&6; } + cacheid=xorg_cv_cc_flag__Wmissing_declarations + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmissing-declarations" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wformat=2" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wformat=2" >&5 +$as_echo_n "checking if $CC supports-Wformat=2... " >&6; } + cacheid=xorg_cv_cc_flag__Wformat_2 + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wformat=2" + found="yes" + fi + fi + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wformat" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wformat" >&5 +$as_echo_n "checking if $CC supports-Wformat... " >&6; } + cacheid=xorg_cv_cc_flag__Wformat + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wformat" + found="yes" + fi + fi + + + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wstrict-prototypes" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wstrict-prototypes" >&5 +$as_echo_n "checking if $CC supports-Wstrict-prototypes... " >&6; } + cacheid=xorg_cv_cc_flag__Wstrict_prototypes + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wstrict-prototypes" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmissing-prototypes" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wmissing-prototypes" >&5 +$as_echo_n "checking if $CC supports-Wmissing-prototypes... " >&6; } + cacheid=xorg_cv_cc_flag__Wmissing_prototypes + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmissing-prototypes" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wnested-externs" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wnested-externs" >&5 +$as_echo_n "checking if $CC supports-Wnested-externs... " >&6; } + cacheid=xorg_cv_cc_flag__Wnested_externs + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wnested-externs" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wbad-function-cast" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wbad-function-cast" >&5 +$as_echo_n "checking if $CC supports-Wbad-function-cast... " >&6; } + cacheid=xorg_cv_cc_flag__Wbad_function_cast + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wbad-function-cast" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wold-style-definition" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wold-style-definition" >&5 +$as_echo_n "checking if $CC supports-Wold-style-definition... " >&6; } + cacheid=xorg_cv_cc_flag__Wold_style_definition + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wold-style-definition" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wdeclaration-after-statement" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wdeclaration-after-statement" >&5 +$as_echo_n "checking if $CC supports-Wdeclaration-after-statement... " >&6; } + cacheid=xorg_cv_cc_flag__Wdeclaration_after_statement + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wdeclaration-after-statement" + found="yes" + fi + fi + + + + + +# This chunk adds additional warnings that could catch undesired effects. + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wunused" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wunused" >&5 +$as_echo_n "checking if $CC supports-Wunused... " >&6; } + cacheid=xorg_cv_cc_flag__Wunused + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wunused" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wuninitialized" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wuninitialized" >&5 +$as_echo_n "checking if $CC supports-Wuninitialized... " >&6; } + cacheid=xorg_cv_cc_flag__Wuninitialized + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wuninitialized" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wshadow" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wshadow" >&5 +$as_echo_n "checking if $CC supports-Wshadow... " >&6; } + cacheid=xorg_cv_cc_flag__Wshadow + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wshadow" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wcast-qual" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wcast-qual" >&5 +$as_echo_n "checking if $CC supports-Wcast-qual... " >&6; } + cacheid=xorg_cv_cc_flag__Wcast_qual + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wcast-qual" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmissing-noreturn" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wmissing-noreturn" >&5 +$as_echo_n "checking if $CC supports-Wmissing-noreturn... " >&6; } + cacheid=xorg_cv_cc_flag__Wmissing_noreturn + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmissing-noreturn" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmissing-format-attribute" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wmissing-format-attribute" >&5 +$as_echo_n "checking if $CC supports-Wmissing-format-attribute... " >&6; } + cacheid=xorg_cv_cc_flag__Wmissing_format_attribute + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmissing-format-attribute" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wredundant-decls" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wredundant-decls" >&5 +$as_echo_n "checking if $CC supports-Wredundant-decls... " >&6; } + cacheid=xorg_cv_cc_flag__Wredundant_decls + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wredundant-decls" + found="yes" + fi + fi + + + +# These are currently disabled because they are noisy. They will be enabled +# in the future once the codebase is sufficiently modernized to silence +# them. For now, I don't want them to drown out the other warnings. +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wlogical-op]) +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wparentheses]) +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-align]) + +# Turn some warnings into errors, so we don't accidently get successful builds +# when there are problems that should be fixed. + +if test "x$SELECTIVE_WERROR" = "xyes" ; then + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=implicit" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=implicit" >&5 +$as_echo_n "checking if $CC supports-Werror=implicit... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_implicit + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=implicit" + found="yes" + fi + fi + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED" >&5 +$as_echo_n "checking if $CC supports-errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED... " >&6; } + cacheid=xorg_cv_cc_flag__errwarn_E_NO_EXPLICIT_TYPE_GIVEN__errwarn_E_NO_IMPLICIT_DECL_ALLOWED + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=nonnull" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=nonnull" >&5 +$as_echo_n "checking if $CC supports-Werror=nonnull... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_nonnull + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=nonnull" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=init-self" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=init-self" >&5 +$as_echo_n "checking if $CC supports-Werror=init-self... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_init_self + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=init-self" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=main" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=main" >&5 +$as_echo_n "checking if $CC supports-Werror=main... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_main + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=main" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=missing-braces" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=missing-braces" >&5 +$as_echo_n "checking if $CC supports-Werror=missing-braces... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_missing_braces + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=missing-braces" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=sequence-point" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=sequence-point" >&5 +$as_echo_n "checking if $CC supports-Werror=sequence-point... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_sequence_point + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=sequence-point" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=return-type" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=return-type" >&5 +$as_echo_n "checking if $CC supports-Werror=return-type... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_return_type + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=return-type" + found="yes" + fi + fi + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -errwarn=E_FUNC_HAS_NO_RETURN_STMT" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-errwarn=E_FUNC_HAS_NO_RETURN_STMT" >&5 +$as_echo_n "checking if $CC supports-errwarn=E_FUNC_HAS_NO_RETURN_STMT... " >&6; } + cacheid=xorg_cv_cc_flag__errwarn_E_FUNC_HAS_NO_RETURN_STMT + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -errwarn=E_FUNC_HAS_NO_RETURN_STMT" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=trigraphs" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=trigraphs" >&5 +$as_echo_n "checking if $CC supports-Werror=trigraphs... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_trigraphs + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=trigraphs" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=array-bounds" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=array-bounds" >&5 +$as_echo_n "checking if $CC supports-Werror=array-bounds... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_array_bounds + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=array-bounds" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=write-strings" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=write-strings" >&5 +$as_echo_n "checking if $CC supports-Werror=write-strings... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_write_strings + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=write-strings" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=address" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=address" >&5 +$as_echo_n "checking if $CC supports-Werror=address... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_address + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=address" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=int-to-pointer-cast" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=int-to-pointer-cast" >&5 +$as_echo_n "checking if $CC supports-Werror=int-to-pointer-cast... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_int_to_pointer_cast + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=int-to-pointer-cast" + found="yes" + fi + fi + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -errwarn=E_BAD_PTR_INT_COMBINATION" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-errwarn=E_BAD_PTR_INT_COMBINATION" >&5 +$as_echo_n "checking if $CC supports-errwarn=E_BAD_PTR_INT_COMBINATION... " >&6; } + cacheid=xorg_cv_cc_flag__errwarn_E_BAD_PTR_INT_COMBINATION + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -errwarn=E_BAD_PTR_INT_COMBINATION" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=pointer-to-int-cast" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=pointer-to-int-cast" >&5 +$as_echo_n "checking if $CC supports-Werror=pointer-to-int-cast... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_pointer_to_int_cast + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Werror=pointer-to-int-cast" + found="yes" + fi + fi + + # Also -errwarn=E_BAD_PTR_INT_COMBINATION +else +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You have chosen not to turn some select compiler warnings into errors. This should not be necessary. Please report why you needed to do so in a bug report at $PACKAGE_BUGREPORT" >&5 +$as_echo "$as_me: WARNING: You have chosen not to turn some select compiler warnings into errors. This should not be necessary. Please report why you needed to do so in a bug report at $PACKAGE_BUGREPORT" >&2;} + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wimplicit" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wimplicit" >&5 +$as_echo_n "checking if $CC supports-Wimplicit... " >&6; } + cacheid=xorg_cv_cc_flag__Wimplicit + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wimplicit" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wnonnull" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wnonnull" >&5 +$as_echo_n "checking if $CC supports-Wnonnull... " >&6; } + cacheid=xorg_cv_cc_flag__Wnonnull + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wnonnull" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Winit-self" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Winit-self" >&5 +$as_echo_n "checking if $CC supports-Winit-self... " >&6; } + cacheid=xorg_cv_cc_flag__Winit_self + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Winit-self" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmain" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wmain" >&5 +$as_echo_n "checking if $CC supports-Wmain... " >&6; } + cacheid=xorg_cv_cc_flag__Wmain + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmain" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wmissing-braces" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wmissing-braces" >&5 +$as_echo_n "checking if $CC supports-Wmissing-braces... " >&6; } + cacheid=xorg_cv_cc_flag__Wmissing_braces + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wmissing-braces" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wsequence-point" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wsequence-point" >&5 +$as_echo_n "checking if $CC supports-Wsequence-point... " >&6; } + cacheid=xorg_cv_cc_flag__Wsequence_point + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wsequence-point" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wreturn-type" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wreturn-type" >&5 +$as_echo_n "checking if $CC supports-Wreturn-type... " >&6; } + cacheid=xorg_cv_cc_flag__Wreturn_type + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wreturn-type" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wtrigraphs" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wtrigraphs" >&5 +$as_echo_n "checking if $CC supports-Wtrigraphs... " >&6; } + cacheid=xorg_cv_cc_flag__Wtrigraphs + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wtrigraphs" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Warray-bounds" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Warray-bounds" >&5 +$as_echo_n "checking if $CC supports-Warray-bounds... " >&6; } + cacheid=xorg_cv_cc_flag__Warray_bounds + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Warray-bounds" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wwrite-strings" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wwrite-strings" >&5 +$as_echo_n "checking if $CC supports-Wwrite-strings... " >&6; } + cacheid=xorg_cv_cc_flag__Wwrite_strings + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wwrite-strings" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Waddress" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Waddress" >&5 +$as_echo_n "checking if $CC supports-Waddress... " >&6; } + cacheid=xorg_cv_cc_flag__Waddress + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Waddress" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wint-to-pointer-cast" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wint-to-pointer-cast" >&5 +$as_echo_n "checking if $CC supports-Wint-to-pointer-cast... " >&6; } + cacheid=xorg_cv_cc_flag__Wint_to_pointer_cast + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wint-to-pointer-cast" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wpointer-to-int-cast" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wpointer-to-int-cast" >&5 +$as_echo_n "checking if $CC supports-Wpointer-to-int-cast... " >&6; } + cacheid=xorg_cv_cc_flag__Wpointer_to_int_cast + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wpointer-to-int-cast" + found="yes" + fi + fi + + +fi + + + + + + + + CWARNFLAGS="$BASE_CFLAGS" + if test "x$GCC" = xyes ; then + CWARNFLAGS="$CWARNFLAGS -fno-strict-aliasing" + fi + + + + + + + + +@%:@ Check whether --enable-strict-compilation was given. +if test "${enable_strict_compilation+set}" = set; then : + enableval=$enable_strict_compilation; STRICT_COMPILE=$enableval +else + STRICT_COMPILE=no +fi + + + + + + +STRICT_CFLAGS="" + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -pedantic" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-pedantic" >&5 +$as_echo_n "checking if $CC supports-pedantic... " >&6; } + cacheid=xorg_cv_cc_flag__pedantic + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + STRICT_CFLAGS="$STRICT_CFLAGS -pedantic" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror" >&5 +$as_echo_n "checking if $CC supports-Werror... " >&6; } + cacheid=xorg_cv_cc_flag__Werror + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + STRICT_CFLAGS="$STRICT_CFLAGS -Werror" + found="yes" + fi + fi + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -errwarn" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-errwarn" >&5 +$as_echo_n "checking if $CC supports-errwarn... " >&6; } + cacheid=xorg_cv_cc_flag__errwarn + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + STRICT_CFLAGS="$STRICT_CFLAGS -errwarn" + found="yes" + fi + fi + + + +# Earlier versions of gcc (eg: 4.2) support -Werror=attributes, but do not +# activate it with -Werror, so we add it here explicitly. + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Werror=attributes" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Werror=attributes" >&5 +$as_echo_n "checking if $CC supports-Werror=attributes... " >&6; } + cacheid=xorg_cv_cc_flag__Werror_attributes + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + STRICT_CFLAGS="$STRICT_CFLAGS -Werror=attributes" + found="yes" + fi + fi + + + +if test "x$STRICT_COMPILE" = "xyes"; then + BASE_CFLAGS="$BASE_CFLAGS $STRICT_CFLAGS" + CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS" +fi + + + + + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_VERSION_MAJOR `echo $PACKAGE_VERSION | cut -d . -f 1` +_ACEOF + + PVM=`echo $PACKAGE_VERSION | cut -d . -f 2 | cut -d - -f 1` + if test "x$PVM" = "x"; then + PVM="0" + fi + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_VERSION_MINOR $PVM +_ACEOF + + PVP=`echo $PACKAGE_VERSION | cut -d . -f 3 | cut -d - -f 1` + if test "x$PVP" = "x"; then + PVP="0" + fi + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_VERSION_PATCHLEVEL $PVP +_ACEOF + + + +CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp && \ +mv \$(top_srcdir)/.changelog.tmp \$(top_srcdir)/ChangeLog) \ +|| (rm -f \$(top_srcdir)/.changelog.tmp; touch \$(top_srcdir)/ChangeLog; \ +echo 'git directory not found: installing possibly empty changelog.' >&2)" + + + + +macros_datadir=`$PKG_CONFIG --print-errors --variable=pkgdatadir xorg-macros` +INSTALL_CMD="(cp -f "$macros_datadir/INSTALL" \$(top_srcdir)/.INSTALL.tmp && \ +mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \ +|| (rm -f \$(top_srcdir)/.INSTALL.tmp; touch \$(top_srcdir)/INSTALL; \ +echo 'util-macros \"pkgdatadir\" from xorg-macros.pc not found: installing possibly empty INSTALL.' >&2)" + + + + + + +if test x$APP_MAN_SUFFIX = x ; then + APP_MAN_SUFFIX=1 +fi +if test x$APP_MAN_DIR = x ; then + APP_MAN_DIR='$(mandir)/man$(APP_MAN_SUFFIX)' +fi + +if test x$LIB_MAN_SUFFIX = x ; then + LIB_MAN_SUFFIX=3 +fi +if test x$LIB_MAN_DIR = x ; then + LIB_MAN_DIR='$(mandir)/man$(LIB_MAN_SUFFIX)' +fi + +if test x$FILE_MAN_SUFFIX = x ; then + case $host_os in + solaris*) FILE_MAN_SUFFIX=4 ;; + *) FILE_MAN_SUFFIX=5 ;; + esac +fi +if test x$FILE_MAN_DIR = x ; then + FILE_MAN_DIR='$(mandir)/man$(FILE_MAN_SUFFIX)' +fi + +if test x$MISC_MAN_SUFFIX = x ; then + case $host_os in + solaris*) MISC_MAN_SUFFIX=5 ;; + *) MISC_MAN_SUFFIX=7 ;; + esac +fi +if test x$MISC_MAN_DIR = x ; then + MISC_MAN_DIR='$(mandir)/man$(MISC_MAN_SUFFIX)' +fi + +if test x$DRIVER_MAN_SUFFIX = x ; then + case $host_os in + solaris*) DRIVER_MAN_SUFFIX=7 ;; + *) DRIVER_MAN_SUFFIX=4 ;; + esac +fi +if test x$DRIVER_MAN_DIR = x ; then + DRIVER_MAN_DIR='$(mandir)/man$(DRIVER_MAN_SUFFIX)' +fi + +if test x$ADMIN_MAN_SUFFIX = x ; then + case $host_os in + solaris*) ADMIN_MAN_SUFFIX=1m ;; + *) ADMIN_MAN_SUFFIX=8 ;; + esac +fi +if test x$ADMIN_MAN_DIR = x ; then + ADMIN_MAN_DIR='$(mandir)/man$(ADMIN_MAN_SUFFIX)' +fi + + + + + + + + + + + + + + + +XORG_MAN_PAGE="X Version 11" + +MAN_SUBSTS="\ + -e 's|__vendorversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \ + -e 's|__xorgversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \ + -e 's|__xservername__|Xorg|g' \ + -e 's|__xconfigfile__|xorg.conf|g' \ + -e 's|__projectroot__|\$(prefix)|g' \ + -e 's|__apploaddir__|\$(appdefaultdir)|g' \ + -e 's|__appmansuffix__|\$(APP_MAN_SUFFIX)|g' \ + -e 's|__drivermansuffix__|\$(DRIVER_MAN_SUFFIX)|g' \ + -e 's|__adminmansuffix__|\$(ADMIN_MAN_SUFFIX)|g' \ + -e 's|__libmansuffix__|\$(LIB_MAN_SUFFIX)|g' \ + -e 's|__miscmansuffix__|\$(MISC_MAN_SUFFIX)|g' \ + -e 's|__filemansuffix__|\$(FILE_MAN_SUFFIX)|g'" + + + +@%:@ Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=0;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + + + + + + + +# Check for different types of support on different platforms +case $host_os in + solaris*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for umem_alloc in -lumem" >&5 +$as_echo_n "checking for umem_alloc in -lumem... " >&6; } +if ${ac_cv_lib_umem_umem_alloc+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lumem $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char umem_alloc (); +int +main () +{ +return umem_alloc (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_umem_umem_alloc=yes +else + ac_cv_lib_umem_umem_alloc=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_umem_umem_alloc" >&5 +$as_echo "$ac_cv_lib_umem_umem_alloc" >&6; } +if test "x$ac_cv_lib_umem_umem_alloc" = xyes; then : + malloc_debug_env='LD_PRELOAD=libumem.so UMEM_DEBUG=default' +fi + + ;; + *-gnu*) # GNU libc - Value is used as a single byte bit pattern, + # both directly and inverted, so should not be 0 or 255. + malloc_debug_env='MALLOC_PERTURB_=15' + ;; + darwin*) + malloc_debug_env='MallocPreScribble=1 MallocScribble=1 DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib' + ;; + *bsd*) + malloc_debug_env='MallocPreScribble=1 MallocScribble=1' + ;; +esac + +# User supplied flags override default flags +if test "x$XORG_MALLOC_DEBUG_ENV" != "x"; then + malloc_debug_env="$XORG_MALLOC_DEBUG_ENV" +fi + +XORG_MALLOC_DEBUG_ENV=$malloc_debug_env + + + + +@%:@ Check whether --enable-docs was given. +if test "${enable_docs+set}" = set; then : + enableval=$enable_docs; build_docs=$enableval +else + build_docs=yes +fi + + + if test x$build_docs = xyes; then + ENABLE_DOCS_TRUE= + ENABLE_DOCS_FALSE='#' +else + ENABLE_DOCS_TRUE='#' + ENABLE_DOCS_FALSE= +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build documentation" >&5 +$as_echo_n "checking whether to build documentation... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $build_docs" >&5 +$as_echo "$build_docs" >&6; } + + + + + +@%:@ Check whether --with-doxygen was given. +if test "${with_doxygen+set}" = set; then : + withval=$with_doxygen; use_doxygen=$withval +else + use_doxygen=auto +fi + + + +if test "x$use_doxygen" = x"auto"; then + # Extract the first word of "doxygen", so it can be a program name with args. +set dummy doxygen; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_DOXYGEN+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $DOXYGEN in + [\\/]* | ?:[\\/]*) + ac_cv_path_DOXYGEN="$DOXYGEN" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_DOXYGEN="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DOXYGEN=$ac_cv_path_DOXYGEN +if test -n "$DOXYGEN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOXYGEN" >&5 +$as_echo "$DOXYGEN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$DOXYGEN" = "x"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: doxygen not found - documentation targets will be skipped" >&5 +$as_echo "$as_me: WARNING: doxygen not found - documentation targets will be skipped" >&2;} + have_doxygen=no + else + have_doxygen=yes + fi +elif test "x$use_doxygen" = x"yes" ; then + # Extract the first word of "doxygen", so it can be a program name with args. +set dummy doxygen; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_DOXYGEN+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $DOXYGEN in + [\\/]* | ?:[\\/]*) + ac_cv_path_DOXYGEN="$DOXYGEN" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_DOXYGEN="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DOXYGEN=$ac_cv_path_DOXYGEN +if test -n "$DOXYGEN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOXYGEN" >&5 +$as_echo "$DOXYGEN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$DOXYGEN" = "x"; then + as_fn_error $? "--with-doxygen=yes specified but doxygen not found in PATH" "$LINENO" 5 + fi + have_doxygen=yes +elif test "x$use_doxygen" = x"no" ; then + if test "x$DOXYGEN" != "x"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ignoring DOXYGEN environment variable since --with-doxygen=no was specified" >&5 +$as_echo "$as_me: WARNING: ignoring DOXYGEN environment variable since --with-doxygen=no was specified" >&2;} + fi + have_doxygen=no +else + as_fn_error $? "--with-doxygen expects 'yes' or 'no'" "$LINENO" 5 +fi + + if test "$have_doxygen" = yes; then + HAVE_DOXYGEN_TRUE= + HAVE_DOXYGEN_FALSE='#' +else + HAVE_DOXYGEN_TRUE='#' + HAVE_DOXYGEN_FALSE= +fi + + + +# Needed in older Automakes for subdir-objects + + +# Check for compiler features +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +$as_echo_n "checking for inline... " >&6; } +if ${ac_cv_c_inline+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_inline=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_inline" != no && break +done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +$as_echo "$ac_cv_c_inline" >&6; } + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + + +# Check for programs + + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi + +# Note: we use some yacc extensions, which work with either GNU bison +# (preferred) or byacc. Other yacc's may or may not work. +for ac_prog in 'bison -y' byacc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_YACC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$YACC"; then + ac_cv_prog_YACC="$YACC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_YACC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +YACC=$ac_cv_prog_YACC +if test -n "$YACC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 +$as_echo "$YACC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$YACC" && break +done +test -n "$YACC" || YACC="yacc" + +# Extract the first word of "$YACC", so it can be a program name with args. +set dummy $YACC; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_YACC_INST+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $YACC_INST in + [\\/]* | ?:[\\/]*) + ac_cv_path_YACC_INST="$YACC_INST" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_YACC_INST="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +YACC_INST=$ac_cv_path_YACC_INST +if test -n "$YACC_INST"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC_INST" >&5 +$as_echo "$YACC_INST" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +if test ! -f "src/xkbcomp/parser.c" -a "x$YACC_INST" = x; then : + + as_fn_error $? "yacc not found - unable to compile src/xkbcomp/parser.y" "$LINENO" 5 + +fi + +# Checks for library functions. +for ac_func in strcasecmp strncasecmp +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +if test "x$ac_cv_func_strcasecmp" = xno -o \ + "x$ac_cv_func_strncasecmp" = xno; then : + + as_fn_error $? "C library does not support strcasecmp/strncasecmp" "$LINENO" 5 + +fi + +for ac_func in eaccess euidaccess mmap +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +for ac_func in secure_getenv __secure_getenv +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +if test "x$ac_cv_func_secure_getenv" = xno -a \ + "x$ac_cv_func___secure_getenv" = xno; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C library does not support secure_getenv, using getenv instead" >&5 +$as_echo "$as_me: WARNING: C library does not support secure_getenv, using getenv instead" >&2;} + +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __builtin_expect" >&5 +$as_echo_n "checking for __builtin_expect... " >&6; } +if ${ax_cv_have___builtin_expect+:} false; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + __builtin_expect(0, 0) + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ax_cv_have___builtin_expect=yes +else + ax_cv_have___builtin_expect=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have___builtin_expect" >&5 +$as_echo "$ax_cv_have___builtin_expect" >&6; } + + if test yes = $ax_cv_have___builtin_expect; then : + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE___BUILTIN_EXPECT 1 +_ACEOF + +fi + + + + +# Some tests use Linux-specific headers +ac_fn_c_check_header_mongrel "$LINENO" "linux/input.h" "ac_cv_header_linux_input_h" "$ac_includes_default" +if test "x$ac_cv_header_linux_input_h" = xyes; then : + +fi + + + if test "x$ac_cv_header_linux_input_h" = xyes; then + BUILD_LINUX_TESTS_TRUE= + BUILD_LINUX_TESTS_FALSE='#' +else + BUILD_LINUX_TESTS_TRUE='#' + BUILD_LINUX_TESTS_FALSE= +fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -fvisibility=hidden" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-fvisibility=hidden" >&5 +$as_echo_n "checking if $CC supports-fvisibility=hidden... " >&6; } + cacheid=xorg_cv_cc_flag__fvisibility_hidden + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -fvisibility=hidden" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wextra -Wno-unused-parameter -Wno-missing-field-initializers" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wextra -Wno-unused-parameter -Wno-missing-field-initializers" >&5 +$as_echo_n "checking if $CC supports-Wextra -Wno-unused-parameter -Wno-missing-field-initializers... " >&6; } + cacheid=xorg_cv_cc_flag__Wextra__Wno_unused_parameter__Wno_missing_field_initializers + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wextra -Wno-unused-parameter -Wno-missing-field-initializers" + found="yes" + fi + fi + + + + + + + + + + + + + + + +xorg_testset_save_CFLAGS="$CFLAGS" + +if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5 +$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; } +if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unknown_warning_option=yes +else + xorg_cv_cc_flag_unknown_warning_option=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5 +$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; } + xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then + if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5 +$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; } +if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + xorg_cv_cc_flag_unused_command_line_argument=yes +else + xorg_cv_cc_flag_unused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5 +$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; } + xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument + CFLAGS="$xorg_testset_save_CFLAGS" +fi + +found="no" + + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + CFLAGS="$CFLAGS -Werror=unused-command-line-argument" + fi + + CFLAGS="$CFLAGS -Wdocumentation" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports-Wdocumentation" >&5 +$as_echo_n "checking if $CC supports-Wdocumentation... " >&6; } + cacheid=xorg_cv_cc_flag__Wdocumentation + if eval \${$cacheid+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int i; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval $cacheid=yes +else + eval $cacheid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + + CFLAGS="$xorg_testset_save_CFLAGS" + + eval supported=\$$cacheid + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5 +$as_echo "$supported" >&6; } + if test "$supported" = "yes" ; then + BASE_CFLAGS="$BASE_CFLAGS -Wdocumentation" + found="yes" + fi + fi + + + +# OpenBSD does not have DT_NEEDED entries for libc by design +# so when these flags are passed to ld via libtool the checks will fail +case "$host_os" in +openbsd*) + ;; +*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,--no-undefined" >&5 +$as_echo_n "checking whether the linker accepts -Wl,--no-undefined... " >&6; } +if ${xorg_cv_linker_flags__Wl___no_undefined+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_save_FLAGS=$LDFLAGS + LDFLAGS="-Wl,--no-undefined" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + xorg_cv_linker_flags__Wl___no_undefined=yes +else + xorg_cv_linker_flags__Wl___no_undefined=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$ax_save_FLAGS +fi + +eval xorg_check_linker_flags=$xorg_cv_linker_flags__Wl___no_undefined +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_check_linker_flags" >&5 +$as_echo "$xorg_check_linker_flags" >&6; } +if test "x$xorg_check_linker_flags" = xyes; then + have_no_undefined=yes +else + : +fi + ;; +esac + + if test "x$have_no_undefined" = xyes; then + HAVE_NO_UNDEFINED_TRUE= + HAVE_NO_UNDEFINED_FALSE='#' +else + HAVE_NO_UNDEFINED_TRUE='#' + HAVE_NO_UNDEFINED_FALSE= +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5 +$as_echo_n "checking for clock_gettime in -lrt... " >&6; } +if ${ac_cv_lib_rt_clock_gettime+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lrt -lrt $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (); +int +main () +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_rt_clock_gettime=yes +else + ac_cv_lib_rt_clock_gettime=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5 +$as_echo "$ac_cv_lib_rt_clock_gettime" >&6; } +if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then : + RT_LIBS="-lrt" + +else + RT_LIBS="" + +fi + + +# Define a configuration option for the XKB config root +xkb_base=`$PKG_CONFIG --variable=xkb_base xkeyboard-config` +if test "x$xkb_base" = x; then : + + xkb_base="$datadir/X11/xkb" + +fi + +@%:@ Check whether --with-xkb_config_root was given. +if test "${with_xkb_config_root+set}" = set; then : + withval=$with_xkb_config_root; XKBCONFIGROOT="$withval" +else + XKBCONFIGROOT="$xkb_base" +fi + + + +# Define a configuration option for the X locale directory for compose + +@%:@ Check whether --with-x_locale_root was given. +if test "${with_x_locale_root+set}" = set; then : + withval=$with_x_locale_root; XLOCALEDIR="$withval" +else + XLOCALEDIR="$datadir/X11/locale" +fi + + + + +@%:@ Check whether --with-default_rules was given. +if test "${with_default_rules+set}" = set; then : + withval=$with_default_rules; DEFAULT_XKB_RULES="$withval" +else + DEFAULT_XKB_RULES="evdev" +fi + + +cat >>confdefs.h <<_ACEOF +@%:@define DEFAULT_XKB_RULES "$DEFAULT_XKB_RULES" +_ACEOF + + + +@%:@ Check whether --with-default_model was given. +if test "${with_default_model+set}" = set; then : + withval=$with_default_model; DEFAULT_XKB_MODEL="$withval" +else + DEFAULT_XKB_MODEL="pc105" +fi + + +cat >>confdefs.h <<_ACEOF +@%:@define DEFAULT_XKB_MODEL "$DEFAULT_XKB_MODEL" +_ACEOF + + + +@%:@ Check whether --with-default_layout was given. +if test "${with_default_layout+set}" = set; then : + withval=$with_default_layout; DEFAULT_XKB_LAYOUT="$withval" +else + DEFAULT_XKB_LAYOUT="us" +fi + + +cat >>confdefs.h <<_ACEOF +@%:@define DEFAULT_XKB_LAYOUT "$DEFAULT_XKB_LAYOUT" +_ACEOF + + + +@%:@ Check whether --with-default_variant was given. +if test "${with_default_variant+set}" = set; then : + withval=$with_default_variant; DEFAULT_XKB_VARIANT="$withval" +else + DEFAULT_XKB_VARIANT= +fi + +if test "x$DEFAULT_XKB_VARIANT" != x; then : + + +cat >>confdefs.h <<_ACEOF +@%:@define DEFAULT_XKB_VARIANT "$DEFAULT_XKB_VARIANT" +_ACEOF + + +fi + + +@%:@ Check whether --with-default_options was given. +if test "${with_default_options+set}" = set; then : + withval=$with_default_options; DEFAULT_XKB_OPTIONS="$withval" +else + DEFAULT_XKB_OPTIONS= +fi + +if test "x$DEFAULT_XKB_OPTIONS" != x; then : + + +cat >>confdefs.h <<_ACEOF +@%:@define DEFAULT_XKB_OPTIONS "$DEFAULT_XKB_OPTIONS" +_ACEOF + + +fi + +@%:@ Check whether --enable-x11 was given. +if test "${enable_x11+set}" = set; then : + enableval=$enable_x11; +else + enable_x11=yes +fi + +if test "x$enable_x11" = xyes; then : + + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XCB_XKB" >&5 +$as_echo_n "checking for XCB_XKB... " >&6; } + +if test -n "$XCB_XKB_CFLAGS"; then + pkg_cv_XCB_XKB_CFLAGS="$XCB_XKB_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xcb xcb-xkb >= 1.10\""; } >&5 + ($PKG_CONFIG --exists --print-errors "xcb xcb-xkb >= 1.10") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_XCB_XKB_CFLAGS=`$PKG_CONFIG --cflags "xcb xcb-xkb >= 1.10" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$XCB_XKB_LIBS"; then + pkg_cv_XCB_XKB_LIBS="$XCB_XKB_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xcb xcb-xkb >= 1.10\""; } >&5 + ($PKG_CONFIG --exists --print-errors "xcb xcb-xkb >= 1.10") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_XCB_XKB_LIBS=`$PKG_CONFIG --libs "xcb xcb-xkb >= 1.10" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + XCB_XKB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "xcb xcb-xkb >= 1.10" 2>&1` + else + XCB_XKB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "xcb xcb-xkb >= 1.10" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$XCB_XKB_PKG_ERRORS" >&5 + + as_fn_error $? "xkbcommon-x11 requires xcb-xkb >= 1.10 which was not found. \ +You can disable X11 support with --disable-x11." "$LINENO" 5 +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? "xkbcommon-x11 requires xcb-xkb >= 1.10 which was not found. \ +You can disable X11 support with --disable-x11." "$LINENO" 5 +else + XCB_XKB_CFLAGS=$pkg_cv_XCB_XKB_CFLAGS + XCB_XKB_LIBS=$pkg_cv_XCB_XKB_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +fi + +else + enable_x11=no +fi + if test "x$enable_x11" = xyes; then + ENABLE_X11_TRUE= + ENABLE_X11_FALSE='#' +else + ENABLE_X11_TRUE='#' + ENABLE_X11_FALSE= +fi + + +ac_config_files="$ac_config_files Makefile xkbcommon-uninstalled.pc xkbcommon.pc xkbcommon-x11.pc xkbcommon-x11-uninstalled.pc doc/Doxyfile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_DOCS_TRUE}" && test -z "${ENABLE_DOCS_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_DOCS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_DOXYGEN_TRUE}" && test -z "${HAVE_DOXYGEN_FALSE}"; then + as_fn_error $? "conditional \"HAVE_DOXYGEN\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${BUILD_LINUX_TESTS_TRUE}" && test -z "${BUILD_LINUX_TESTS_FALSE}"; then + as_fn_error $? "conditional \"BUILD_LINUX_TESTS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_NO_UNDEFINED_TRUE}" && test -z "${HAVE_NO_UNDEFINED_FALSE}"; then + as_fn_error $? "conditional \"HAVE_NO_UNDEFINED\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_X11_TRUE}" && test -z "${ENABLE_X11_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_X11\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in @%:@( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by libxkbcommon $as_me 0.5.0, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to . +libxkbcommon home page: ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +libxkbcommon config.status 0.5.0 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +OBJDUMP \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +DLLTOOL \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +nm_file_list_spec \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +sys_lib_dlsearch_path_spec; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' +xsi_shell='$xsi_shell' +lt_shell_append='$lt_shell_append' + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile' + + + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "xkbcommon-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES xkbcommon-uninstalled.pc" ;; + "xkbcommon.pc") CONFIG_FILES="$CONFIG_FILES xkbcommon.pc" ;; + "xkbcommon-x11.pc") CONFIG_FILES="$CONFIG_FILES xkbcommon-x11.pc" ;; + "xkbcommon-x11-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES xkbcommon-x11-uninstalled.pc" ;; + "doc/Doxyfile") CONFIG_FILES="$CONFIG_FILES doc/Doxyfile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool 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 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +# The names of the tagged configurations supported by this script. +available_tags="" + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and in which our libraries should be installed. +lt_sysroot=$lt_sysroot + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain="$ac_aux_dir/ltmain.sh" + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + if test x"$xsi_shell" = xyes; then + sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ +func_dirname ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_basename ()$/,/^} # func_basename /c\ +func_basename ()\ +{\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ +func_dirname_and_basename ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ +func_stripname ()\ +{\ +\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ +\ # positional parameters, so assign one to ordinary parameter first.\ +\ func_stripname_result=${3}\ +\ func_stripname_result=${func_stripname_result#"${1}"}\ +\ func_stripname_result=${func_stripname_result%"${2}"}\ +} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ +func_split_long_opt ()\ +{\ +\ func_split_long_opt_name=${1%%=*}\ +\ func_split_long_opt_arg=${1#*=}\ +} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ +func_split_short_opt ()\ +{\ +\ func_split_short_opt_arg=${1#??}\ +\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ +} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ +func_lo2o ()\ +{\ +\ case ${1} in\ +\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ +\ *) func_lo2o_result=${1} ;;\ +\ esac\ +} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_xform ()$/,/^} # func_xform /c\ +func_xform ()\ +{\ + func_xform_result=${1%.*}.lo\ +} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_arith ()$/,/^} # func_arith /c\ +func_arith ()\ +{\ + func_arith_result=$(( $* ))\ +} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_len ()$/,/^} # func_len /c\ +func_len ()\ +{\ + func_len_result=${#1}\ +} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + +fi + +if test x"$lt_shell_append" = xyes; then + sed -e '/^func_append ()$/,/^} # func_append /c\ +func_append ()\ +{\ + eval "${1}+=\\${2}"\ +} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ +func_append_quoted ()\ +{\ +\ func_quote_for_eval "${2}"\ +\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ +} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 +$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} +fi + + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: + $PACKAGE_NAME $VERSION + + libxkbcommon: yes + libxkbcommon-x11: ${enable_x11} + documentation: ${build_docs} + + default XKB rules: ${DEFAULT_XKB_RULES} + default XKB model: ${DEFAULT_XKB_MODEL} + default XKB layout: ${DEFAULT_XKB_LAYOUT} + default XKB variant: ${DEFAULT_XKB_VARIANT} + default XKB options: ${DEFAULT_XKB_OPTIONS} + + prefix: ${prefix} + includedir: ${includedir} + lib dir: ${libdir} + XKB config root: ${XKBCONFIGROOT} + X11 locale root: ${XLOCALEDIR} +" >&5 +$as_echo " + $PACKAGE_NAME $VERSION + + libxkbcommon: yes + libxkbcommon-x11: ${enable_x11} + documentation: ${build_docs} + + default XKB rules: ${DEFAULT_XKB_RULES} + default XKB model: ${DEFAULT_XKB_MODEL} + default XKB layout: ${DEFAULT_XKB_LAYOUT} + default XKB variant: ${DEFAULT_XKB_VARIANT} + default XKB options: ${DEFAULT_XKB_OPTIONS} + + prefix: ${prefix} + includedir: ${includedir} + lib dir: ${libdir} + XKB config root: ${XKBCONFIGROOT} + X11 locale root: ${XLOCALEDIR} +" >&6; } diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/requests b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/requests new file mode 100644 index 0000000..9aa7e0d --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/requests @@ -0,0 +1,606 @@ +# This file was generated by Autom4te Thu Apr 10 10:06:43 UTC 2014. +# It contains the lists of macros which have been traced. +# It can be safely removed. + +@request = ( + bless( [ + '0', + 1, + [ + '/usr/share/autoconf' + ], + [ + '/usr/share/autoconf/autoconf/autoconf.m4f', + '-', + '/usr/share/aclocal-1.14/internal/ac-config-macro-dirs.m4', + '/usr/share/aclocal/argz.m4', + '/usr/share/aclocal/libtool.m4', + '/usr/share/aclocal/ltdl.m4', + '/usr/share/aclocal/ltoptions.m4', + '/usr/share/aclocal/ltsugar.m4', + '/usr/share/aclocal/ltversion.m4', + '/usr/share/aclocal/lt~obsolete.m4', + '/usr/share/aclocal/pkg.m4', + '/usr/share/aclocal/xorg-macros.m4', + '/usr/share/aclocal-1.14/amversion.m4', + '/usr/share/aclocal-1.14/auxdir.m4', + '/usr/share/aclocal-1.14/cond.m4', + '/usr/share/aclocal-1.14/depend.m4', + '/usr/share/aclocal-1.14/depout.m4', + '/usr/share/aclocal-1.14/init.m4', + '/usr/share/aclocal-1.14/install-sh.m4', + '/usr/share/aclocal-1.14/lead-dot.m4', + '/usr/share/aclocal-1.14/maintainer.m4', + '/usr/share/aclocal-1.14/make.m4', + '/usr/share/aclocal-1.14/missing.m4', + '/usr/share/aclocal-1.14/options.m4', + '/usr/share/aclocal-1.14/prog-cc-c-o.m4', + '/usr/share/aclocal-1.14/runlog.m4', + '/usr/share/aclocal-1.14/sanity.m4', + '/usr/share/aclocal-1.14/silent.m4', + '/usr/share/aclocal-1.14/strip.m4', + '/usr/share/aclocal-1.14/substnot.m4', + '/usr/share/aclocal-1.14/tar.m4', + 'm4/ax_gcc_builtin.m4', + 'configure.ac' + ], + { + 'PKG_CHECK_MODULES' => 1, + 'AC_LTDL_DLLIB' => 1, + '_AM_PROG_TAR' => 1, + 'AC_LTDL_OBJDIR' => 1, + 'XORG_DEFAULT_OPTIONS' => 1, + '_LT_AC_LANG_F77_CONFIG' => 1, + 'AM_PROG_LIBTOOL' => 1, + '_LT_PREPARE_SED_QUOTE_VARS' => 1, + '_AC_PROG_LIBTOOL' => 1, + 'AM_PROG_NM' => 1, + 'XORG_INSTALL' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AC_PROG_NM' => 1, + 'XORG_TESTSET_CFLAG' => 1, + 'AC_WITH_LTDL' => 1, + 'AC_LIBTOOL_LANG_C_CONFIG' => 1, + 'AM_ENABLE_STATIC' => 1, + 'AX_GCC_BUILTIN' => 1, + 'XORG_ENABLE_DEVEL_DOCS' => 1, + '_LT_AC_TRY_DLOPEN_SELF' => 1, + 'AC_LIBTOOL_GCJ' => 1, + 'AC_PROG_EGREP' => 1, + '_LT_AC_LANG_F77' => 1, + '_LT_AC_PROG_CXXCPP' => 1, + '_LT_LINKER_OPTION' => 1, + 'gl_FUNC_ARGZ' => 1, + 'AM_PROG_CC_C_O' => 1, + '_LT_PATH_TOOL_PREFIX' => 1, + 'LT_LANG' => 1, + 'LT_AC_PROG_RC' => 1, + '_LT_AC_PROG_ECHO_BACKSLASH' => 1, + '_LT_AC_LANG_GCJ_CONFIG' => 1, + '_LT_COMPILER_BOILERPLATE' => 1, + 'gl_PREREQ_ARGZ' => 1, + 'XORG_MANPAGE_SECTIONS' => 1, + 'XORG_WITH_PS2PDF' => 1, + 'AM_DEP_TRACK' => 1, + 'PKG_CHECK_EXISTS' => 1, + 'AC_LIBTOOL_FC' => 1, + 'LTDL_CONVENIENCE' => 1, + '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, + 'AC_CHECK_LIBM' => 1, + 'XORG_CWARNFLAGS' => 1, + 'XORG_LINT_LIBRARY' => 1, + '_m4_warn' => 1, + '_PKG_SHORT_ERRORS_SUPPORTED' => 1, + 'AC_LIBTOOL_PROG_COMPILER_PIC' => 1, + 'AM_DISABLE_SHARED' => 1, + '_AM_MANGLE_OPTION' => 1, + '_LT_AC_CHECK_DLFCN' => 1, + 'AC_LIBTOOL_PICMODE' => 1, + 'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1, + 'AC_LTDL_SYSSEARCHPATH' => 1, + 'AC_PATH_MAGIC' => 1, + 'AC_LIBTOOL_WIN32_DLL' => 1, + '_LT_AC_LANG_RC_CONFIG' => 1, + '_LT_AC_SYS_COMPILER' => 1, + 'AC_LTDL_SYMBOL_USCORE' => 1, + '_LT_AC_TAGVAR' => 1, + '_LT_PROG_ECHO_BACKSLASH' => 1, + 'LT_FUNC_DLSYM_USCORE' => 1, + 'XORG_PROG_RAWCPP' => 1, + '_AM_AUTOCONF_VERSION' => 1, + 'AM_ENABLE_SHARED' => 1, + 'XORG_COMPILER_FLAGS' => 1, + 'AC_DISABLE_FAST_INSTALL' => 1, + 'XORG_CHECK_LINKER_FLAGS' => 1, + 'AC_DEPLIBS_CHECK_METHOD' => 1, + 'AM_DISABLE_STATIC' => 1, + 'AM_MISSING_HAS_RUN' => 1, + 'AC_LTDL_ENABLE_INSTALL' => 1, + '_LT_AC_TAGCONFIG' => 1, + 'AC_PROG_LD_GNU' => 1, + 'include' => 1, + 'LT_SYS_MODULE_EXT' => 1, + 'AM_PROG_LD' => 1, + 'LT_AC_PROG_SED' => 1, + 'AC_LIB_LTDL' => 1, + 'AM_RUN_LOG' => 1, + 'LT_INIT' => 1, + '_LT_AC_LANG_CXX' => 1, + 'AC_LIBTOOL_CXX' => 1, + 'AC_DEFUN_ONCE' => 1, + 'AC_LIBTOOL_DLOPEN_SELF' => 1, + 'LT_PROG_GCJ' => 1, + 'LT_SYS_MODULE_PATH' => 1, + 'AC_LIBTOOL_RC' => 1, + '_LT_CC_BASENAME' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + '_LT_AC_SHELL_INIT' => 1, + '_AM_DEPENDENCIES' => 1, + 'AC_LIBTOOL_SYS_LIB_STRIP' => 1, + '_AM_SET_OPTION' => 1, + '_AM_SUBST_NOTMAKE' => 1, + 'LT_PATH_NM' => 1, + 'XORG_CHECK_MALLOC_ZERO' => 1, + 'AC_LIBLTDL_CONVENIENCE' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + 'AC_DEFUN' => 1, + 'AM_PROG_INSTALL_STRIP' => 1, + '_LT_AC_LOCK' => 1, + 'XORG_ENABLE_DOCS' => 1, + 'XORG_ENABLE_SPECS' => 1, + 'AC_LIBTOOL_COMPILER_OPTION' => 1, + 'm4_pattern_forbid' => 1, + '_LTDL_SETUP' => 1, + 'AM_SUBST_NOTMAKE' => 1, + 'AC_LIBTOOL_DLOPEN' => 1, + 'AC_DISABLE_STATIC' => 1, + 'LT_PROG_RC' => 1, + '_LT_AC_SYS_LIBPATH_AIX' => 1, + 'AC_ENABLE_FAST_INSTALL' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'XORG_WITH_XMLTO' => 1, + '_LT_LINKER_BOILERPLATE' => 1, + 'LTSUGAR_VERSION' => 1, + '_LT_PROG_F77' => 1, + 'AC_CONFIG_MACRO_DIR' => 1, + 'LTVERSION_VERSION' => 1, + 'XORG_LD_WRAP' => 1, + 'LT_WITH_LTDL' => 1, + 'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1, + 'XORG_MEMORY_CHECK_FLAGS' => 1, + 'LT_SUPPORTED_TAG' => 1, + 'LT_AC_PROG_EGREP' => 1, + 'AC_LTDL_DLSYM_USCORE' => 1, + '_AM_PROG_CC_C_O' => 1, + '_LT_PROG_LTMAIN' => 1, + 'XORG_CHECK_SGML_DOCTOOLS' => 1, + '_AM_IF_OPTION' => 1, + 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, + '_AM_CONFIG_MACRO_DIRS' => 1, + 'AC_LIBTOOL_LANG_CXX_CONFIG' => 1, + '_LT_PROG_CXX' => 1, + 'AC_LTDL_SHLIBPATH' => 1, + 'AC_LIBTOOL_CONFIG' => 1, + 'XORG_WITH_DOXYGEN' => 1, + 'LT_SYS_DLOPEN_DEPLIBS' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1, + 'AC_LIBTOOL_POSTDEP_PREDEP' => 1, + 'm4_pattern_allow' => 1, + 'LTDL_INSTALLABLE' => 1, + 'AC_LTDL_SHLIBEXT' => 1, + '_LT_AC_LANG_CXX_CONFIG' => 1, + 'AU_DEFUN' => 1, + 'AC_LIBTOOL_OBJDIR' => 1, + 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1, + 'AC_LIBTOOL_SETUP' => 1, + 'AC_LIBTOOL_F77' => 1, + 'AC_ENABLE_SHARED' => 1, + 'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1, + 'AM_SILENT_RULES' => 1, + '_LT_AC_LANG_C_CONFIG' => 1, + 'AC_DISABLE_SHARED' => 1, + 'AC_LIBLTDL_INSTALLABLE' => 1, + 'AC_PROG_LD' => 1, + 'XORG_ENABLE_INTEGRATION_TESTS' => 1, + 'PKG_PROG_PKG_CONFIG' => 1, + 'XORG_WITH_GROFF' => 1, + '_LT_COMPILER_OPTION' => 1, + 'LT_SYS_DLSEARCH_PATH' => 1, + 'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1, + 'XORG_RELEASE_VERSION' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'LT_SYS_SYMBOL_USCORE' => 1, + 'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1, + 'XORG_CHECK_LINUXDOC' => 1, + 'XORG_STRICT_OPTION' => 1, + 'XORG_WITH_FOP' => 1, + 'XORG_WITH_LINT' => 1, + 'XORG_WITH_PERL' => 1, + 'AC_PROG_LD_RELOAD_FLAG' => 1, + 'AM_SANITY_CHECK' => 1, + 'AM_SET_LEADING_DOT' => 1, + '_LT_LIBOBJ' => 1, + 'XORG_COMPILER_BRAND' => 1, + 'LT_PROG_GO' => 1, + '_LT_AC_FILE_LTDLL_C' => 1, + 'LT_SYS_DLOPEN_SELF' => 1, + 'LT_LIB_DLLOAD' => 1, + 'AC_LIBTOOL_LINKER_OPTION' => 1, + 'XORG_WITH_ASCIIDOC' => 1, + 'AM_MISSING_PROG' => 1, + '_LT_AC_LANG_GCJ' => 1, + '_AC_AM_CONFIG_HEADER_HOOK' => 1, + 'AC_LTDL_PREOPEN' => 1, + 'AM_AUX_DIR_EXPAND' => 1, + 'XORG_WITH_GLIB' => 1, + 'AM_CONDITIONAL' => 1, + '_LT_WITH_SYSROOT' => 1, + 'AC_ENABLE_STATIC' => 1, + 'XORG_CHECK_DOCBOOK' => 1, + 'LTOBSOLETE_VERSION' => 1, + 'LT_OUTPUT' => 1, + 'XORG_CHANGELOG' => 1, + 'LT_LIB_M' => 1, + 'AC_LIBTOOL_PROG_CC_C_O' => 1, + 'AM_SET_DEPDIR' => 1, + 'AC_LIBTOOL_LANG_RC_CONFIG' => 1, + 'AC_LIBTOOL_LANG_F77_CONFIG' => 1, + 'm4_include' => 1, + 'LT_PATH_LD' => 1, + '_LT_PROG_FC' => 1, + '_LT_REQUIRED_DARWIN_CHECKS' => 1, + 'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1, + 'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1, + 'XORG_WITH_XSLTPROC' => 1, + 'LTDL_INIT' => 1, + 'AC_PATH_TOOL_PREFIX' => 1, + 'AM_PROG_INSTALL_SH' => 1, + 'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1, + '_AM_SET_OPTIONS' => 1, + 'AC_LIBTOOL_PROG_LD_SHLIBS' => 1, + 'LT_AC_PROG_GCJ' => 1, + 'LTOPTIONS_VERSION' => 1, + 'AM_MAKE_INCLUDE' => 1, + 'LT_CMD_MAX_LEN' => 1, + 'XORG_ENABLE_UNIT_TESTS' => 1 + } + ], 'Autom4te::Request' ), + bless( [ + '1', + 1, + [ + '/usr/share/autoconf' + ], + [ + '/usr/share/autoconf/autoconf/autoconf.m4f', + 'aclocal.m4', + 'configure.ac' + ], + { + 'LT_SUPPORTED_TAG' => 1, + 'AC_SUBST_TRACE' => 1, + '_LT_AC_TAGCONFIG' => 1, + 'AM_NLS' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AM_PROG_F77_C_O' => 1, + 'AC_LIBSOURCE' => 1, + 'AC_FC_PP_SRCEXT' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'AM_PROG_CXX_C_O' => 1, + 'AC_CONFIG_SUBDIRS' => 1, + 'AM_PROG_MOC' => 1, + 'AH_OUTPUT' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AM_PROG_MKDIR_P' => 1, + 'AC_FC_FREEFORM' => 1, + 'AC_INIT' => 1, + 'LT_INIT' => 1, + 'AC_SUBST' => 1, + 'AM_CONDITIONAL' => 1, + 'AM_POT_TOOLS' => 1, + 'AM_XGETTEXT_OPTION' => 1, + 'include' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, + 'AC_FC_PP_DEFINE' => 1, + 'AC_CANONICAL_BUILD' => 1, + 'AM_SILENT_RULES' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + 'm4_include' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'AC_FC_SRCEXT' => 1, + '_AM_SUBST_NOTMAKE' => 1, + '_AM_COND_ENDIF' => 1, + 'AM_EXTRA_RECURSIVE_TARGETS' => 1, + 'm4_sinclude' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'm4_pattern_allow' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'AC_CONFIG_FILES' => 1, + 'sinclude' => 1, + 'AM_ENABLE_MULTILIB' => 1, + 'AC_CANONICAL_HOST' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AC_CONFIG_LINKS' => 1, + '_m4_warn' => 1, + 'AC_CANONICAL_TARGET' => 1, + 'AM_PROG_AR' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AM_PATH_GUILE' => 1, + '_AM_COND_ELSE' => 1, + 'AM_PROG_FC_C_O' => 1, + '_AM_COND_IF' => 1, + 'm4_pattern_forbid' => 1 + } + ], 'Autom4te::Request' ), + bless( [ + '2', + 1, + [ + '/usr/share/autoconf' + ], + [ + '/usr/share/autoconf/autoconf/autoconf.m4f', + '-', + '/usr/share/aclocal-1.14/internal/ac-config-macro-dirs.m4', + '/usr/share/aclocal/argz.m4', + '/usr/share/aclocal/ltdl.m4', + '/usr/share/aclocal/pkg.m4', + '/usr/share/aclocal/xorg-macros.m4', + '/usr/share/aclocal-1.14/amversion.m4', + '/usr/share/aclocal-1.14/auxdir.m4', + '/usr/share/aclocal-1.14/cond.m4', + '/usr/share/aclocal-1.14/depend.m4', + '/usr/share/aclocal-1.14/depout.m4', + '/usr/share/aclocal-1.14/init.m4', + '/usr/share/aclocal-1.14/install-sh.m4', + '/usr/share/aclocal-1.14/lead-dot.m4', + '/usr/share/aclocal-1.14/maintainer.m4', + '/usr/share/aclocal-1.14/make.m4', + '/usr/share/aclocal-1.14/missing.m4', + '/usr/share/aclocal-1.14/options.m4', + '/usr/share/aclocal-1.14/prog-cc-c-o.m4', + '/usr/share/aclocal-1.14/runlog.m4', + '/usr/share/aclocal-1.14/sanity.m4', + '/usr/share/aclocal-1.14/silent.m4', + '/usr/share/aclocal-1.14/strip.m4', + '/usr/share/aclocal-1.14/substnot.m4', + '/usr/share/aclocal-1.14/tar.m4', + 'm4/ax_gcc_builtin.m4', + 'm4/libtool.m4', + 'm4/ltoptions.m4', + 'm4/ltsugar.m4', + 'm4/ltversion.m4', + 'm4/lt~obsolete.m4', + 'configure.ac' + ], + { + 'XORG_CHECK_SGML_DOCTOOLS' => 1, + '_AM_IF_OPTION' => 1, + 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, + '_AM_CONFIG_MACRO_DIRS' => 1, + 'AC_LIBTOOL_LANG_CXX_CONFIG' => 1, + 'AC_LTDL_SHLIBPATH' => 1, + '_LT_PROG_CXX' => 1, + 'XORG_WITH_DOXYGEN' => 1, + 'AC_LIBTOOL_CONFIG' => 1, + 'LTVERSION_VERSION' => 1, + 'XORG_LD_WRAP' => 1, + 'LT_WITH_LTDL' => 1, + 'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1, + 'AC_LTDL_DLSYM_USCORE' => 1, + 'LT_AC_PROG_EGREP' => 1, + '_AM_PROG_CC_C_O' => 1, + '_LT_PROG_LTMAIN' => 1, + 'XORG_MEMORY_CHECK_FLAGS' => 1, + 'LT_SUPPORTED_TAG' => 1, + 'XORG_ENABLE_INTEGRATION_TESTS' => 1, + 'AC_PROG_LD' => 1, + 'PKG_PROG_PKG_CONFIG' => 1, + 'XORG_WITH_GROFF' => 1, + 'LT_SYS_SYMBOL_USCORE' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'XORG_CHECK_LINUXDOC' => 1, + 'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1, + 'LT_SYS_DLSEARCH_PATH' => 1, + '_LT_COMPILER_OPTION' => 1, + 'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1, + 'XORG_RELEASE_VERSION' => 1, + 'XORG_WITH_LINT' => 1, + 'XORG_STRICT_OPTION' => 1, + 'XORG_WITH_FOP' => 1, + 'AM_SANITY_CHECK' => 1, + 'AC_PROG_LD_RELOAD_FLAG' => 1, + 'XORG_WITH_PERL' => 1, + 'LTDL_INSTALLABLE' => 1, + 'AC_LTDL_SHLIBEXT' => 1, + 'm4_pattern_allow' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'LT_SYS_DLOPEN_DEPLIBS' => 1, + 'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1, + 'AC_LIBTOOL_POSTDEP_PREDEP' => 1, + 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1, + 'AU_DEFUN' => 1, + 'AC_LIBTOOL_OBJDIR' => 1, + '_LT_AC_LANG_CXX_CONFIG' => 1, + 'AM_SILENT_RULES' => 1, + 'AC_LIBTOOL_SETUP' => 1, + 'AC_ENABLE_SHARED' => 1, + 'AC_LIBTOOL_F77' => 1, + 'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1, + 'AC_LIBLTDL_INSTALLABLE' => 1, + 'AC_DISABLE_SHARED' => 1, + '_LT_AC_LANG_C_CONFIG' => 1, + 'XORG_WITH_GLIB' => 1, + 'AM_AUX_DIR_EXPAND' => 1, + '_LT_WITH_SYSROOT' => 1, + 'AM_CONDITIONAL' => 1, + 'AC_ENABLE_STATIC' => 1, + 'LT_OUTPUT' => 1, + 'XORG_CHANGELOG' => 1, + 'XORG_CHECK_DOCBOOK' => 1, + 'LTOBSOLETE_VERSION' => 1, + 'AM_SET_LEADING_DOT' => 1, + 'XORG_COMPILER_BRAND' => 1, + '_LT_LIBOBJ' => 1, + 'LT_LIB_DLLOAD' => 1, + 'LT_SYS_DLOPEN_SELF' => 1, + 'AC_LIBTOOL_LINKER_OPTION' => 1, + '_LT_AC_FILE_LTDLL_C' => 1, + 'LT_PROG_GO' => 1, + 'AC_LTDL_PREOPEN' => 1, + 'XORG_WITH_ASCIIDOC' => 1, + 'AM_MISSING_PROG' => 1, + '_LT_AC_LANG_GCJ' => 1, + '_AC_AM_CONFIG_HEADER_HOOK' => 1, + 'AM_PROG_INSTALL_SH' => 1, + 'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1, + 'XORG_WITH_XSLTPROC' => 1, + 'LTDL_INIT' => 1, + 'AC_PATH_TOOL_PREFIX' => 1, + 'AC_LIBTOOL_PROG_LD_SHLIBS' => 1, + '_AM_SET_OPTIONS' => 1, + 'LT_AC_PROG_GCJ' => 1, + 'LTOPTIONS_VERSION' => 1, + 'AM_MAKE_INCLUDE' => 1, + 'XORG_ENABLE_UNIT_TESTS' => 1, + 'LT_CMD_MAX_LEN' => 1, + 'AM_SET_DEPDIR' => 1, + 'LT_LIB_M' => 1, + 'AC_LIBTOOL_PROG_CC_C_O' => 1, + 'AC_LIBTOOL_LANG_RC_CONFIG' => 1, + 'm4_include' => 1, + 'AC_LIBTOOL_LANG_F77_CONFIG' => 1, + 'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1, + 'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1, + 'LT_PATH_LD' => 1, + '_LT_REQUIRED_DARWIN_CHECKS' => 1, + '_LT_PROG_FC' => 1, + 'AC_LIBTOOL_GCJ' => 1, + '_LT_AC_TRY_DLOPEN_SELF' => 1, + 'AM_ENABLE_STATIC' => 1, + 'XORG_ENABLE_DEVEL_DOCS' => 1, + 'AX_GCC_BUILTIN' => 1, + '_LT_LINKER_OPTION' => 1, + 'AC_PROG_EGREP' => 1, + '_LT_AC_LANG_F77' => 1, + '_LT_AC_PROG_CXXCPP' => 1, + 'gl_FUNC_ARGZ' => 1, + 'LT_LANG' => 1, + '_LT_PATH_TOOL_PREFIX' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AC_LTDL_DLLIB' => 1, + '_AM_PROG_TAR' => 1, + 'AC_LTDL_OBJDIR' => 1, + 'PKG_CHECK_MODULES' => 1, + '_LT_AC_LANG_F77_CONFIG' => 1, + 'XORG_DEFAULT_OPTIONS' => 1, + 'AM_PROG_LIBTOOL' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AC_PROG_NM' => 1, + 'XORG_TESTSET_CFLAG' => 1, + '_LT_PREPARE_SED_QUOTE_VARS' => 1, + 'AM_PROG_NM' => 1, + '_AC_PROG_LIBTOOL' => 1, + 'XORG_INSTALL' => 1, + 'AC_LIBTOOL_LANG_C_CONFIG' => 1, + 'AC_WITH_LTDL' => 1, + 'AC_CHECK_LIBM' => 1, + '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, + 'AC_LIBTOOL_PROG_COMPILER_PIC' => 1, + '_PKG_SHORT_ERRORS_SUPPORTED' => 1, + 'XORG_CWARNFLAGS' => 1, + 'XORG_LINT_LIBRARY' => 1, + '_m4_warn' => 1, + '_AM_MANGLE_OPTION' => 1, + 'AM_DISABLE_SHARED' => 1, + 'AC_LIBTOOL_WIN32_DLL' => 1, + 'AC_PATH_MAGIC' => 1, + 'AC_LTDL_SYSSEARCHPATH' => 1, + 'AC_LIBTOOL_PICMODE' => 1, + '_LT_AC_CHECK_DLFCN' => 1, + 'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1, + '_LT_AC_LANG_GCJ_CONFIG' => 1, + 'gl_PREREQ_ARGZ' => 1, + 'XORG_MANPAGE_SECTIONS' => 1, + '_LT_COMPILER_BOILERPLATE' => 1, + 'LT_AC_PROG_RC' => 1, + '_LT_AC_PROG_ECHO_BACKSLASH' => 1, + 'AM_DEP_TRACK' => 1, + 'XORG_WITH_PS2PDF' => 1, + 'LTDL_CONVENIENCE' => 1, + 'PKG_CHECK_EXISTS' => 1, + 'AC_LIBTOOL_FC' => 1, + 'LT_SYS_MODULE_EXT' => 1, + 'AM_PROG_LD' => 1, + 'AC_PROG_LD_GNU' => 1, + 'include' => 1, + 'LT_AC_PROG_SED' => 1, + 'AC_LIB_LTDL' => 1, + 'AM_RUN_LOG' => 1, + 'LT_INIT' => 1, + 'LT_SYS_MODULE_PATH' => 1, + 'LT_PROG_GCJ' => 1, + 'AC_LIBTOOL_DLOPEN_SELF' => 1, + 'AC_DEFUN_ONCE' => 1, + 'AC_LIBTOOL_RC' => 1, + '_LT_AC_LANG_CXX' => 1, + 'AC_LIBTOOL_CXX' => 1, + '_LT_AC_TAGVAR' => 1, + 'AC_LTDL_SYMBOL_USCORE' => 1, + '_LT_PROG_ECHO_BACKSLASH' => 1, + 'LT_FUNC_DLSYM_USCORE' => 1, + '_LT_AC_SYS_COMPILER' => 1, + '_LT_AC_LANG_RC_CONFIG' => 1, + 'XORG_PROG_RAWCPP' => 1, + 'AM_ENABLE_SHARED' => 1, + '_AM_AUTOCONF_VERSION' => 1, + 'AM_DISABLE_STATIC' => 1, + 'AC_DEPLIBS_CHECK_METHOD' => 1, + 'AM_MISSING_HAS_RUN' => 1, + '_LT_AC_TAGCONFIG' => 1, + 'AC_LTDL_ENABLE_INSTALL' => 1, + 'AC_DISABLE_FAST_INSTALL' => 1, + 'XORG_COMPILER_FLAGS' => 1, + 'XORG_CHECK_LINKER_FLAGS' => 1, + 'XORG_ENABLE_SPECS' => 1, + 'm4_pattern_forbid' => 1, + 'AC_LIBTOOL_COMPILER_OPTION' => 1, + '_LT_AC_LOCK' => 1, + 'XORG_ENABLE_DOCS' => 1, + 'LT_PROG_RC' => 1, + '_LT_AC_SYS_LIBPATH_AIX' => 1, + 'AM_SUBST_NOTMAKE' => 1, + '_LTDL_SETUP' => 1, + 'AC_DISABLE_STATIC' => 1, + 'AC_LIBTOOL_DLOPEN' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AC_ENABLE_FAST_INSTALL' => 1, + 'AC_CONFIG_MACRO_DIR' => 1, + '_LT_PROG_F77' => 1, + 'XORG_WITH_XMLTO' => 1, + 'LTSUGAR_VERSION' => 1, + '_LT_LINKER_BOILERPLATE' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + '_LT_CC_BASENAME' => 1, + '_AM_SUBST_NOTMAKE' => 1, + 'LT_PATH_NM' => 1, + '_LT_AC_SHELL_INIT' => 1, + '_AM_DEPENDENCIES' => 1, + 'AC_LIBTOOL_SYS_LIB_STRIP' => 1, + '_AM_SET_OPTION' => 1, + 'AM_PROG_INSTALL_STRIP' => 1, + 'AC_DEFUN' => 1, + 'XORG_CHECK_MALLOC_ZERO' => 1, + 'AC_LIBLTDL_CONVENIENCE' => 1, + 'LT_CONFIG_LTDL_DIR' => 1 + } + ], 'Autom4te::Request' ) + ); + diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/test-driver b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/test-driver new file mode 100755 index 0000000..d306056 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/test-driver @@ -0,0 +1,139 @@ +#! /bin/sh +# test-driver - basic testsuite driver script. + +scriptversion=2013-07-13.22; # UTC + +# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# +# 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 2, 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +# Make unconditional expansion of undefined variables an error. This +# helps a lot in preventing typo-related bugs. +set -u + +usage_error () +{ + echo "$0: $*" >&2 + print_usage >&2 + exit 2 +} + +print_usage () +{ + cat <$log_file 2>&1 +estatus=$? +if test $enable_hard_errors = no && test $estatus -eq 99; then + estatus=1 +fi + +case $estatus:$expect_failure in + 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; + 0:*) col=$grn res=PASS recheck=no gcopy=no;; + 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; + 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; + *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; + *:*) col=$red res=FAIL recheck=yes gcopy=yes;; +esac + +# Report outcome to console. +echo "${col}${res}${std}: $test_name" + +# Register the test result, and other relevant metadata. +echo ":test-result: $res" > $trs_file +echo ":global-test-result: $res" >> $trs_file +echo ":recheck: $recheck" >> $trs_file +echo ":copy-in-global-log: $gcopy" >> $trs_file + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/traces.0 b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/traces.0 new file mode 100644 index 0000000..2967777 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/traces.0 @@ -0,0 +1,4140 @@ +m4trace:/usr/share/aclocal/argz.m4:12: -1- AC_DEFUN([gl_FUNC_ARGZ], [gl_PREREQ_ARGZ + +AC_CHECK_HEADERS([argz.h], [], [], [AC_INCLUDES_DEFAULT]) + +AC_CHECK_TYPES([error_t], + [], + [AC_DEFINE([error_t], [int], + [Define to a type to use for `error_t' if it is not otherwise available.]) + AC_DEFINE([__error_t_defined], [1], [Define so that glibc/gnulib argp.h + does not typedef error_t.])], + [#if defined(HAVE_ARGZ_H) +# include +#endif]) + +ARGZ_H= +AC_CHECK_FUNCS([argz_add argz_append argz_count argz_create_sep argz_insert \ + argz_next argz_stringify], [], [ARGZ_H=argz.h; AC_LIBOBJ([argz])]) + +dnl if have system argz functions, allow forced use of +dnl libltdl-supplied implementation (and default to do so +dnl on "known bad" systems). Could use a runtime check, but +dnl (a) detecting malloc issues is notoriously unreliable +dnl (b) only known system that declares argz functions, +dnl provides them, yet they are broken, is cygwin +dnl releases prior to 16-Mar-2007 (1.5.24 and earlier) +dnl So, it's more straightforward simply to special case +dnl this for known bad systems. +AS_IF([test -z "$ARGZ_H"], + [AC_CACHE_CHECK( + [if argz actually works], + [lt_cv_sys_argz_works], + [[case $host_os in #( + *cygwin*) + lt_cv_sys_argz_works=no + if test "$cross_compiling" != no; then + lt_cv_sys_argz_works="guessing no" + else + lt_sed_extract_leading_digits='s/^\([0-9\.]*\).*/\1/' + save_IFS=$IFS + IFS=-. + set x `uname -r | sed -e "$lt_sed_extract_leading_digits"` + IFS=$save_IFS + lt_os_major=${2-0} + lt_os_minor=${3-0} + lt_os_micro=${4-0} + if test "$lt_os_major" -gt 1 \ + || { test "$lt_os_major" -eq 1 \ + && { test "$lt_os_minor" -gt 5 \ + || { test "$lt_os_minor" -eq 5 \ + && test "$lt_os_micro" -gt 24; }; }; }; then + lt_cv_sys_argz_works=yes + fi + fi + ;; #( + *) lt_cv_sys_argz_works=yes ;; + esac]]) + AS_IF([test "$lt_cv_sys_argz_works" = yes], + [AC_DEFINE([HAVE_WORKING_ARGZ], 1, + [This value is set to 1 to indicate that the system argz facility works])], + [ARGZ_H=argz.h + AC_LIBOBJ([argz])])]) + +AC_SUBST([ARGZ_H]) +]) +m4trace:/usr/share/aclocal/argz.m4:79: -1- AC_DEFUN([gl_PREREQ_ARGZ], [:]) +m4trace:/usr/share/aclocal/libtool.m4:69: -1- AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +]) +m4trace:/usr/share/aclocal/libtool.m4:107: -1- AU_DEFUN([AC_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:107: -1- AC_DEFUN([AC_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:108: -1- AU_DEFUN([AM_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:108: -1- AC_DEFUN([AM_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_LIBTOOL' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:609: -1- AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +\`$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test $[#] != 0 +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try \`$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try \`$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test "$silent" = yes && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +]) +m4trace:/usr/share/aclocal/libtool.m4:790: -1- AC_DEFUN([LT_SUPPORTED_TAG], []) +m4trace:/usr/share/aclocal/libtool.m4:801: -1- AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +]) +m4trace:/usr/share/aclocal/libtool.m4:893: -1- AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +m4trace:/usr/share/aclocal/libtool.m4:893: -1- AC_DEFUN([AC_LIBTOOL_CXX], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_CXX' is obsolete. +You should run autoupdate.])dnl +LT_LANG(C++)]) +m4trace:/usr/share/aclocal/libtool.m4:894: -1- AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +m4trace:/usr/share/aclocal/libtool.m4:894: -1- AC_DEFUN([AC_LIBTOOL_F77], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_F77' is obsolete. +You should run autoupdate.])dnl +LT_LANG(Fortran 77)]) +m4trace:/usr/share/aclocal/libtool.m4:895: -1- AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +m4trace:/usr/share/aclocal/libtool.m4:895: -1- AC_DEFUN([AC_LIBTOOL_FC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_FC' is obsolete. +You should run autoupdate.])dnl +LT_LANG(Fortran)]) +m4trace:/usr/share/aclocal/libtool.m4:896: -1- AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +m4trace:/usr/share/aclocal/libtool.m4:896: -1- AC_DEFUN([AC_LIBTOOL_GCJ], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_GCJ' is obsolete. +You should run autoupdate.])dnl +LT_LANG(Java)]) +m4trace:/usr/share/aclocal/libtool.m4:897: -1- AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +m4trace:/usr/share/aclocal/libtool.m4:897: -1- AC_DEFUN([AC_LIBTOOL_RC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_RC' is obsolete. +You should run autoupdate.])dnl +LT_LANG(Windows Resource)]) +m4trace:/usr/share/aclocal/libtool.m4:1225: -1- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[ --with-sysroot[=DIR] Search for dependent libraries within DIR + (or the compiler's sysroot if not specified).], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([${with_sysroot}]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and in which our libraries should be installed.])]) +m4trace:/usr/share/aclocal/libtool.m4:1515: -1- AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test x"[$]$2" = xyes; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +]) +m4trace:/usr/share/aclocal/libtool.m4:1557: -1- AU_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:1557: -1- AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_COMPILER_OPTION' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:1566: -1- AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +]) +m4trace:/usr/share/aclocal/libtool.m4:1601: -1- AU_DEFUN([AC_LIBTOOL_LINKER_OPTION], [m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:1601: -1- AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_LINKER_OPTION' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:1608: -1- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +]) +m4trace:/usr/share/aclocal/libtool.m4:1747: -1- AU_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:1747: -1- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_SYS_MAX_CMD_LEN' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:1858: -1- AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +]) +m4trace:/usr/share/aclocal/libtool.m4:1975: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:1975: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN_SELF' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:2945: -1- AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +]) +m4trace:/usr/share/aclocal/libtool.m4:3007: -1- AU_DEFUN([AC_PATH_TOOL_PREFIX], [m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:3007: -1- AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_DIAGNOSE([obsolete], [The macro `AC_PATH_TOOL_PREFIX' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:3030: -1- AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi]) +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +]) +m4trace:/usr/share/aclocal/libtool.m4:3500: -1- AU_DEFUN([AM_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:3500: -1- AC_DEFUN([AM_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_NM' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:3501: -1- AU_DEFUN([AC_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:3501: -1- AC_DEFUN([AC_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_NM' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:3571: -1- AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +AC_SUBST([LIBM]) +]) +m4trace:/usr/share/aclocal/libtool.m4:3590: -1- AU_DEFUN([AC_CHECK_LIBM], [m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:3590: -1- AC_DEFUN([AC_CHECK_LIBM], [AC_DIAGNOSE([obsolete], [The macro `AC_CHECK_LIBM' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:7637: -1- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) +m4trace:/usr/share/aclocal/libtool.m4:7646: -1- AU_DEFUN([LT_AC_PROG_GCJ], [m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:7646: -1- AC_DEFUN([LT_AC_PROG_GCJ], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_GCJ' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:7653: -1- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) +]) +m4trace:/usr/share/aclocal/libtool.m4:7660: -1- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) +]) +m4trace:/usr/share/aclocal/libtool.m4:7665: -1- AU_DEFUN([LT_AC_PROG_RC], [m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:7665: -1- AC_DEFUN([LT_AC_PROG_RC], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_RC' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:7785: -1- AU_DEFUN([LT_AC_PROG_SED], [m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])]) +m4trace:/usr/share/aclocal/libtool.m4:7785: -1- AC_DEFUN([LT_AC_PROG_SED], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_SED' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:16: -1- AC_DEFUN([LT_CONFIG_LTDL_DIR], [AC_BEFORE([$0], [LTDL_INIT]) +_$0($*) +]) +m4trace:/usr/share/aclocal/ltdl.m4:68: -1- AC_DEFUN([LTDL_CONVENIENCE], [AC_BEFORE([$0], [LTDL_INIT])dnl +dnl Although the argument is deprecated and no longer documented, +dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one +dnl here make sure it is the same as any other declaration of libltdl's +dnl location! This also ensures lt_ltdl_dir is set when configure.ac is +dnl not yet using an explicit LT_CONFIG_LTDL_DIR. +m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl +_$0() +]) +m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AU_DEFUN([AC_LIBLTDL_CONVENIENCE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) +_LTDL_CONVENIENCE]) +m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_CONVENIENCE' is obsolete. +You should run autoupdate.])dnl +_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) +_LTDL_CONVENIENCE]) +m4trace:/usr/share/aclocal/ltdl.m4:124: -1- AC_DEFUN([LTDL_INSTALLABLE], [AC_BEFORE([$0], [LTDL_INIT])dnl +dnl Although the argument is deprecated and no longer documented, +dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one +dnl here make sure it is the same as any other declaration of libltdl's +dnl location! This also ensures lt_ltdl_dir is set when configure.ac is +dnl not yet using an explicit LT_CONFIG_LTDL_DIR. +m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl +_$0() +]) +m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AU_DEFUN([AC_LIBLTDL_INSTALLABLE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) +_LTDL_INSTALLABLE]) +m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_INSTALLABLE' is obsolete. +You should run autoupdate.])dnl +_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) +_LTDL_INSTALLABLE]) +m4trace:/usr/share/aclocal/ltdl.m4:213: -1- AC_DEFUN([_LT_LIBOBJ], [ + m4_pattern_allow([^_LT_LIBOBJS$]) + _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext" +]) +m4trace:/usr/share/aclocal/ltdl.m4:226: -1- AC_DEFUN([LTDL_INIT], [dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +dnl We need to keep our own list of libobjs separate from our parent project, +dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while +dnl we look for our own LIBOBJs. +m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ])) +m4_pushdef([AC_LIBSOURCES]) + +dnl If not otherwise defined, default to the 1.5.x compatible subproject mode: +m4_if(_LTDL_MODE, [], + [m4_define([_LTDL_MODE], m4_default([$2], [subproject])) + m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])], + [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])]) + +AC_ARG_WITH([included_ltdl], + [AS_HELP_STRING([--with-included-ltdl], + [use the GNU ltdl sources included here])]) + +if test "x$with_included_ltdl" != xyes; then + # We are not being forced to use the included libltdl sources, so + # decide whether there is a useful installed version we can use. + AC_CHECK_HEADER([ltdl.h], + [AC_CHECK_DECL([lt_dlinterface_register], + [AC_CHECK_LIB([ltdl], [lt_dladvise_preload], + [with_included_ltdl=no], + [with_included_ltdl=yes])], + [with_included_ltdl=yes], + [AC_INCLUDES_DEFAULT + #include ])], + [with_included_ltdl=yes], + [AC_INCLUDES_DEFAULT] + ) +fi + +dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE +dnl was called yet, then for old times' sake, we assume libltdl is in an +dnl eponymous directory: +AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])]) + +AC_ARG_WITH([ltdl_include], + [AS_HELP_STRING([--with-ltdl-include=DIR], + [use the ltdl headers installed in DIR])]) + +if test -n "$with_ltdl_include"; then + if test -f "$with_ltdl_include/ltdl.h"; then : + else + AC_MSG_ERROR([invalid ltdl include directory: `$with_ltdl_include']) + fi +else + with_ltdl_include=no +fi + +AC_ARG_WITH([ltdl_lib], + [AS_HELP_STRING([--with-ltdl-lib=DIR], + [use the libltdl.la installed in DIR])]) + +if test -n "$with_ltdl_lib"; then + if test -f "$with_ltdl_lib/libltdl.la"; then : + else + AC_MSG_ERROR([invalid ltdl library directory: `$with_ltdl_lib']) + fi +else + with_ltdl_lib=no +fi + +case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in + ,yes,no,no,) + m4_case(m4_default(_LTDL_TYPE, [convenience]), + [convenience], [_LTDL_CONVENIENCE], + [installable], [_LTDL_INSTALLABLE], + [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)]) + ;; + ,no,no,no,) + # If the included ltdl is not to be used, then use the + # preinstalled libltdl we found. + AC_DEFINE([HAVE_LTDL], [1], + [Define this if a modern libltdl is already installed]) + LIBLTDL=-lltdl + LTDLDEPS= + LTDLINCL= + ;; + ,no*,no,*) + AC_MSG_ERROR([`--with-ltdl-include' and `--with-ltdl-lib' options must be used together]) + ;; + *) with_included_ltdl=no + LIBLTDL="-L$with_ltdl_lib -lltdl" + LTDLDEPS= + LTDLINCL="-I$with_ltdl_include" + ;; +esac +INCLTDL="$LTDLINCL" + +# Report our decision... +AC_MSG_CHECKING([where to find libltdl headers]) +AC_MSG_RESULT([$LTDLINCL]) +AC_MSG_CHECKING([where to find libltdl library]) +AC_MSG_RESULT([$LIBLTDL]) + +_LTDL_SETUP + +dnl restore autoconf definition. +m4_popdef([AC_LIBOBJ]) +m4_popdef([AC_LIBSOURCES]) + +AC_CONFIG_COMMANDS_PRE([ + _ltdl_libobjs= + _ltdl_ltlibobjs= + if test -n "$_LT_LIBOBJS"; then + # Remove the extension. + _lt_sed_drop_objext='s/\.o$//;s/\.obj$//' + for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do + _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext" + _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo" + done + fi + AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs]) + AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs]) +]) + +# Only expand once: +m4_define([LTDL_INIT]) +]) +m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)]) +m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AC_DEFUN([AC_LIB_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIB_LTDL' is obsolete. +You should run autoupdate.])dnl +LTDL_INIT($@)]) +m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)]) +m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AC_DEFUN([AC_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_WITH_LTDL' is obsolete. +You should run autoupdate.])dnl +LTDL_INIT($@)]) +m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)]) +m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AC_DEFUN([LT_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `LT_WITH_LTDL' is obsolete. +You should run autoupdate.])dnl +LTDL_INIT($@)]) +m4trace:/usr/share/aclocal/ltdl.m4:367: -1- AC_DEFUN([_LTDL_SETUP], [AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_SYS_MODULE_EXT])dnl +AC_REQUIRE([LT_SYS_MODULE_PATH])dnl +AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl +AC_REQUIRE([LT_LIB_DLLOAD])dnl +AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl +AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl +AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl +AC_REQUIRE([gl_FUNC_ARGZ])dnl + +m4_require([_LT_CHECK_OBJDIR])dnl +m4_require([_LT_HEADER_DLFCN])dnl +m4_require([_LT_CHECK_DLPREOPEN])dnl +m4_require([_LT_DECL_SED])dnl + +dnl Don't require this, or it will be expanded earlier than the code +dnl that sets the variables it relies on: +_LT_ENABLE_INSTALL + +dnl _LTDL_MODE specific code must be called at least once: +_LTDL_MODE_DISPATCH + +# In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS +# the user used. This is so that ltdl.h can pick up the parent projects +# config.h file, The first file in AC_CONFIG_HEADERS must contain the +# definitions required by ltdl.c. +# FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility). +AC_CONFIG_COMMANDS_PRE([dnl +m4_pattern_allow([^LT_CONFIG_H$])dnl +m4_ifset([AH_HEADER], + [LT_CONFIG_H=AH_HEADER], + [m4_ifset([AC_LIST_HEADERS], + [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's,^[[ ]]*,,;s,[[ :]].*$,,'`], + [])])]) +AC_SUBST([LT_CONFIG_H]) + +AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h], + [], [], [AC_INCLUDES_DEFAULT]) + +AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])]) +AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])]) + +m4_pattern_allow([LT_LIBEXT])dnl +AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension]) + +name= +eval "lt_libprefix=\"$libname_spec\"" +m4_pattern_allow([LT_LIBPREFIX])dnl +AC_DEFINE_UNQUOTED([LT_LIBPREFIX],["$lt_libprefix"],[The archive prefix]) + +name=ltdl +eval "LTDLOPEN=\"$libname_spec\"" +AC_SUBST([LTDLOPEN]) +]) +m4trace:/usr/share/aclocal/ltdl.m4:443: -1- AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_CACHE_CHECK([whether deplibs are loaded by dlopen], + [lt_cv_sys_dlopen_deplibs], + [# PORTME does your system automatically load deplibs for dlopen? + # or its logical equivalent (e.g. shl_load for HP-UX < 11) + # For now, we just catch OSes we know something about -- in the + # future, we'll try test this programmatically. + lt_cv_sys_dlopen_deplibs=unknown + case $host_os in + aix3*|aix4.1.*|aix4.2.*) + # Unknown whether this is true for these versions of AIX, but + # we want this `case' here to explicitly catch those versions. + lt_cv_sys_dlopen_deplibs=unknown + ;; + aix[[4-9]]*) + lt_cv_sys_dlopen_deplibs=yes + ;; + amigaos*) + case $host_cpu in + powerpc) + lt_cv_sys_dlopen_deplibs=no + ;; + esac + ;; + darwin*) + # Assuming the user has installed a libdl from somewhere, this is true + # If you are looking for one http://www.opendarwin.org/projects/dlcompat + lt_cv_sys_dlopen_deplibs=yes + ;; + freebsd* | dragonfly*) + lt_cv_sys_dlopen_deplibs=yes + ;; + gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu) + # GNU and its variants, using gnu ld.so (Glibc) + lt_cv_sys_dlopen_deplibs=yes + ;; + hpux10*|hpux11*) + lt_cv_sys_dlopen_deplibs=yes + ;; + interix*) + lt_cv_sys_dlopen_deplibs=yes + ;; + irix[[12345]]*|irix6.[[01]]*) + # Catch all versions of IRIX before 6.2, and indicate that we don't + # know how it worked for any of those versions. + lt_cv_sys_dlopen_deplibs=unknown + ;; + irix*) + # The case above catches anything before 6.2, and it's known that + # at 6.2 and later dlopen does load deplibs. + lt_cv_sys_dlopen_deplibs=yes + ;; + netbsd* | netbsdelf*-gnu) + lt_cv_sys_dlopen_deplibs=yes + ;; + openbsd*) + lt_cv_sys_dlopen_deplibs=yes + ;; + osf[[1234]]*) + # dlopen did load deplibs (at least at 4.x), but until the 5.x series, + # it did *not* use an RPATH in a shared library to find objects the + # library depends on, so we explicitly say `no'. + lt_cv_sys_dlopen_deplibs=no + ;; + osf5.0|osf5.0a|osf5.1) + # dlopen *does* load deplibs and with the right loader patch applied + # it even uses RPATH in a shared library to search for shared objects + # that the library depends on, but there's no easy way to know if that + # patch is installed. Since this is the case, all we can really + # say is unknown -- it depends on the patch being installed. If + # it is, this changes to `yes'. Without it, it would be `no'. + lt_cv_sys_dlopen_deplibs=unknown + ;; + osf*) + # the two cases above should catch all versions of osf <= 5.1. Read + # the comments above for what we know about them. + # At > 5.1, deplibs are loaded *and* any RPATH in a shared library + # is used to find them so we can finally say `yes'. + lt_cv_sys_dlopen_deplibs=yes + ;; + qnx*) + lt_cv_sys_dlopen_deplibs=yes + ;; + solaris*) + lt_cv_sys_dlopen_deplibs=yes + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + libltdl_cv_sys_dlopen_deplibs=yes + ;; + esac + ]) +if test "$lt_cv_sys_dlopen_deplibs" != yes; then + AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1], + [Define if the OS needs help to load dependent libraries for dlopen().]) +fi +]) +m4trace:/usr/share/aclocal/ltdl.m4:542: -1- AU_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:542: -1- AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYS_DLOPEN_DEPLIBS' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:549: -1- AC_DEFUN([LT_SYS_MODULE_EXT], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl +AC_CACHE_CHECK([which extension is used for runtime loadable modules], + [libltdl_cv_shlibext], +[ +module=yes +eval libltdl_cv_shlibext=$shrext_cmds +module=no +eval libltdl_cv_shrext=$shrext_cmds + ]) +if test -n "$libltdl_cv_shlibext"; then + m4_pattern_allow([LT_MODULE_EXT])dnl + AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"], + [Define to the extension used for runtime loadable modules, say, ".so".]) +fi +if test "$libltdl_cv_shrext" != "$libltdl_cv_shlibext"; then + m4_pattern_allow([LT_SHARED_EXT])dnl + AC_DEFINE_UNQUOTED([LT_SHARED_EXT], ["$libltdl_cv_shrext"], + [Define to the shared library suffix, say, ".dylib".]) +fi +]) +m4trace:/usr/share/aclocal/ltdl.m4:572: -1- AU_DEFUN([AC_LTDL_SHLIBEXT], [m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:572: -1- AC_DEFUN([AC_LTDL_SHLIBEXT], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBEXT' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:579: -1- AC_DEFUN([LT_SYS_MODULE_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl +AC_CACHE_CHECK([which variable specifies run-time module search path], + [lt_cv_module_path_var], [lt_cv_module_path_var="$shlibpath_var"]) +if test -n "$lt_cv_module_path_var"; then + m4_pattern_allow([LT_MODULE_PATH_VAR])dnl + AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"], + [Define to the name of the environment variable that determines the run-time module search path.]) +fi +]) +m4trace:/usr/share/aclocal/ltdl.m4:591: -1- AU_DEFUN([AC_LTDL_SHLIBPATH], [m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:591: -1- AC_DEFUN([AC_LTDL_SHLIBPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBPATH' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:598: -1- AC_DEFUN([LT_SYS_DLSEARCH_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl +AC_CACHE_CHECK([for the default library search path], + [lt_cv_sys_dlsearch_path], + [lt_cv_sys_dlsearch_path="$sys_lib_dlsearch_path_spec"]) +if test -n "$lt_cv_sys_dlsearch_path"; then + sys_dlsearch_path= + for dir in $lt_cv_sys_dlsearch_path; do + if test -z "$sys_dlsearch_path"; then + sys_dlsearch_path="$dir" + else + sys_dlsearch_path="$sys_dlsearch_path$PATH_SEPARATOR$dir" + fi + done + m4_pattern_allow([LT_DLSEARCH_PATH])dnl + AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"], + [Define to the system default library search path.]) +fi +]) +m4trace:/usr/share/aclocal/ltdl.m4:619: -1- AU_DEFUN([AC_LTDL_SYSSEARCHPATH], [m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:619: -1- AC_DEFUN([AC_LTDL_SYSSEARCHPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYSSEARCHPATH' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:645: -1- AC_DEFUN([LT_LIB_DLLOAD], [m4_pattern_allow([^LT_DLLOADERS$]) +LT_DLLOADERS= +AC_SUBST([LT_DLLOADERS]) + +AC_LANG_PUSH([C]) + +LIBADD_DLOPEN= +AC_SEARCH_LIBS([dlopen], [dl], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.]) + if test "$ac_cv_search_dlopen" != "none required" ; then + LIBADD_DLOPEN="-ldl" + fi + libltdl_cv_lib_dl_dlopen="yes" + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], + [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H +# include +#endif + ]], [[dlopen(0, 0);]])], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.]) + libltdl_cv_func_dlopen="yes" + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], + [AC_CHECK_LIB([svld], [dlopen], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.]) + LIBADD_DLOPEN="-lsvld" libltdl_cv_func_dlopen="yes" + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])]) +if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes +then + lt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBADD_DLOPEN" + AC_CHECK_FUNCS([dlerror]) + LIBS="$lt_save_LIBS" +fi +AC_SUBST([LIBADD_DLOPEN]) + +LIBADD_SHL_LOAD= +AC_CHECK_FUNC([shl_load], + [AC_DEFINE([HAVE_SHL_LOAD], [1], + [Define if you have the shl_load function.]) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"], + [AC_CHECK_LIB([dld], [shl_load], + [AC_DEFINE([HAVE_SHL_LOAD], [1], + [Define if you have the shl_load function.]) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la" + LIBADD_SHL_LOAD="-ldld"])]) +AC_SUBST([LIBADD_SHL_LOAD]) + +case $host_os in +darwin[[1567]].*) +# We only want this for pre-Mac OS X 10.4. + AC_CHECK_FUNC([_dyld_func_lookup], + [AC_DEFINE([HAVE_DYLD], [1], + [Define if you have the _dyld_func_lookup function.]) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"]) + ;; +beos*) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la" + ;; +cygwin* | mingw* | os2* | pw32*) + AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include ]]) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la" + ;; +esac + +AC_CHECK_LIB([dld], [dld_link], + [AC_DEFINE([HAVE_DLD], [1], + [Define if you have the GNU dld library.]) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"]) +AC_SUBST([LIBADD_DLD_LINK]) + +m4_pattern_allow([^LT_DLPREOPEN$]) +LT_DLPREOPEN= +if test -n "$LT_DLLOADERS" +then + for lt_loader in $LT_DLLOADERS; do + LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader " + done + AC_DEFINE([HAVE_LIBDLLOADER], [1], + [Define if libdlloader will be built on this platform]) +fi +AC_SUBST([LT_DLPREOPEN]) + +dnl This isn't used anymore, but set it for backwards compatibility +LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD" +AC_SUBST([LIBADD_DL]) + +AC_LANG_POP +]) +m4trace:/usr/share/aclocal/ltdl.m4:738: -1- AU_DEFUN([AC_LTDL_DLLIB], [m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:738: -1- AC_DEFUN([AC_LTDL_DLLIB], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLLIB' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:746: -1- AC_DEFUN([LT_SYS_SYMBOL_USCORE], [m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +AC_CACHE_CHECK([for _ prefix in compiled symbols], + [lt_cv_sys_symbol_underscore], + [lt_cv_sys_symbol_underscore=no + cat > conftest.$ac_ext <<_LT_EOF +void nm_test_func(){} +int main(){nm_test_func;return 0;} +_LT_EOF + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + ac_nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then + # See whether the symbols have a leading underscore. + if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then + lt_cv_sys_symbol_underscore=yes + else + if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then + : + else + echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD + fi + fi + else + echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.c >&AS_MESSAGE_LOG_FD + fi + rm -rf conftest* + ]) + sys_symbol_underscore=$lt_cv_sys_symbol_underscore + AC_SUBST([sys_symbol_underscore]) +]) +m4trace:/usr/share/aclocal/ltdl.m4:783: -1- AU_DEFUN([AC_LTDL_SYMBOL_USCORE], [m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:783: -1- AC_DEFUN([AC_LTDL_SYMBOL_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYMBOL_USCORE' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:790: -1- AC_DEFUN([LT_FUNC_DLSYM_USCORE], [AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl +if test x"$lt_cv_sys_symbol_underscore" = xyes; then + if test x"$libltdl_cv_func_dlopen" = xyes || + test x"$libltdl_cv_lib_dl_dlopen" = xyes ; then + AC_CACHE_CHECK([whether we have to add an underscore for dlsym], + [libltdl_cv_need_uscore], + [libltdl_cv_need_uscore=unknown + save_LIBS="$LIBS" + LIBS="$LIBS $LIBADD_DLOPEN" + _LT_TRY_DLOPEN_SELF( + [libltdl_cv_need_uscore=no], [libltdl_cv_need_uscore=yes], + [], [libltdl_cv_need_uscore=cross]) + LIBS="$save_LIBS" + ]) + fi +fi + +if test x"$libltdl_cv_need_uscore" = xyes; then + AC_DEFINE([NEED_USCORE], [1], + [Define if dlsym() requires a leading underscore in symbol names.]) +fi +]) +m4trace:/usr/share/aclocal/ltdl.m4:815: -1- AU_DEFUN([AC_LTDL_DLSYM_USCORE], [m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:815: -1- AC_DEFUN([AC_LTDL_DLSYM_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLSYM_USCORE' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])]) +m4trace:/usr/share/aclocal/ltoptions.m4:14: -1- AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) +m4trace:/usr/share/aclocal/ltoptions.m4:111: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `dlopen' option into LT_INIT's first parameter.]) +]) +m4trace:/usr/share/aclocal/ltoptions.m4:111: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN' is obsolete. +You should run autoupdate.])dnl +_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `dlopen' option into LT_INIT's first parameter.]) +]) +m4trace:/usr/share/aclocal/ltoptions.m4:146: -1- AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `win32-dll' option into LT_INIT's first parameter.]) +]) +m4trace:/usr/share/aclocal/ltoptions.m4:146: -1- AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_WIN32_DLL' is obsolete. +You should run autoupdate.])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `win32-dll' option into LT_INIT's first parameter.]) +]) +m4trace:/usr/share/aclocal/ltoptions.m4:195: -1- AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) +m4trace:/usr/share/aclocal/ltoptions.m4:199: -1- AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) +m4trace:/usr/share/aclocal/ltoptions.m4:203: -1- AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +m4trace:/usr/share/aclocal/ltoptions.m4:203: -1- AC_DEFUN([AM_ENABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_SHARED' is obsolete. +You should run autoupdate.])dnl +AC_ENABLE_SHARED($@)]) +m4trace:/usr/share/aclocal/ltoptions.m4:204: -1- AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +m4trace:/usr/share/aclocal/ltoptions.m4:204: -1- AC_DEFUN([AM_DISABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_SHARED' is obsolete. +You should run autoupdate.])dnl +AC_DISABLE_SHARED($@)]) +m4trace:/usr/share/aclocal/ltoptions.m4:249: -1- AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) +m4trace:/usr/share/aclocal/ltoptions.m4:253: -1- AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) +]) +m4trace:/usr/share/aclocal/ltoptions.m4:257: -1- AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +m4trace:/usr/share/aclocal/ltoptions.m4:257: -1- AC_DEFUN([AM_ENABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_STATIC' is obsolete. +You should run autoupdate.])dnl +AC_ENABLE_STATIC($@)]) +m4trace:/usr/share/aclocal/ltoptions.m4:258: -1- AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +m4trace:/usr/share/aclocal/ltoptions.m4:258: -1- AC_DEFUN([AM_DISABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_STATIC' is obsolete. +You should run autoupdate.])dnl +AC_DISABLE_STATIC($@)]) +m4trace:/usr/share/aclocal/ltoptions.m4:303: -1- AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `fast-install' option into LT_INIT's first parameter.]) +]) +m4trace:/usr/share/aclocal/ltoptions.m4:303: -1- AC_DEFUN([AC_ENABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_ENABLE_FAST_INSTALL' is obsolete. +You should run autoupdate.])dnl +_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `fast-install' option into LT_INIT's first parameter.]) +]) +m4trace:/usr/share/aclocal/ltoptions.m4:310: -1- AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `disable-fast-install' option into LT_INIT's first parameter.]) +]) +m4trace:/usr/share/aclocal/ltoptions.m4:310: -1- AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_DISABLE_FAST_INSTALL' is obsolete. +You should run autoupdate.])dnl +_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `disable-fast-install' option into LT_INIT's first parameter.]) +]) +m4trace:/usr/share/aclocal/ltoptions.m4:358: -1- AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `pic-only' option into LT_INIT's first parameter.]) +]) +m4trace:/usr/share/aclocal/ltoptions.m4:358: -1- AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_PICMODE' is obsolete. +You should run autoupdate.])dnl +_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `pic-only' option into LT_INIT's first parameter.]) +]) +m4trace:/usr/share/aclocal/ltsugar.m4:13: -1- AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) +m4trace:/usr/share/aclocal/ltversion.m4:18: -1- AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.2' +macro_revision='1.3337' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:36: -1- AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:40: -1- AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:41: -1- AC_DEFUN([_LT_AC_SHELL_INIT]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:42: -1- AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:44: -1- AC_DEFUN([_LT_AC_TAGVAR]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:45: -1- AC_DEFUN([AC_LTDL_ENABLE_INSTALL]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:46: -1- AC_DEFUN([AC_LTDL_PREOPEN]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:47: -1- AC_DEFUN([_LT_AC_SYS_COMPILER]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:48: -1- AC_DEFUN([_LT_AC_LOCK]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:49: -1- AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:50: -1- AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:51: -1- AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:52: -1- AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:53: -1- AC_DEFUN([AC_LIBTOOL_OBJDIR]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:54: -1- AC_DEFUN([AC_LTDL_OBJDIR]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:55: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:56: -1- AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:57: -1- AC_DEFUN([AC_PATH_MAGIC]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:58: -1- AC_DEFUN([AC_PROG_LD_GNU]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:59: -1- AC_DEFUN([AC_PROG_LD_RELOAD_FLAG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:60: -1- AC_DEFUN([AC_DEPLIBS_CHECK_METHOD]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:61: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:62: -1- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:63: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:64: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:65: -1- AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:66: -1- AC_DEFUN([LT_AC_PROG_EGREP]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:71: -1- AC_DEFUN([_AC_PROG_LIBTOOL]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:72: -1- AC_DEFUN([AC_LIBTOOL_SETUP]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:73: -1- AC_DEFUN([_LT_AC_CHECK_DLFCN]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:74: -1- AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:75: -1- AC_DEFUN([_LT_AC_TAGCONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:77: -1- AC_DEFUN([_LT_AC_LANG_CXX]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:78: -1- AC_DEFUN([_LT_AC_LANG_F77]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:79: -1- AC_DEFUN([_LT_AC_LANG_GCJ]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:80: -1- AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:81: -1- AC_DEFUN([_LT_AC_LANG_C_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:82: -1- AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:83: -1- AC_DEFUN([_LT_AC_LANG_CXX_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:84: -1- AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:85: -1- AC_DEFUN([_LT_AC_LANG_F77_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:86: -1- AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:87: -1- AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:88: -1- AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:89: -1- AC_DEFUN([_LT_AC_LANG_RC_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:90: -1- AC_DEFUN([AC_LIBTOOL_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:91: -1- AC_DEFUN([_LT_AC_FILE_LTDLL_C]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:93: -1- AC_DEFUN([_LT_AC_PROG_CXXCPP]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:96: -1- AC_DEFUN([_LT_PROG_F77]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:97: -1- AC_DEFUN([_LT_PROG_FC]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:98: -1- AC_DEFUN([_LT_PROG_CXX]) +m4trace:/usr/share/aclocal/pkg.m4:27: -1- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +]) +m4trace:/usr/share/aclocal/pkg.m4:60: -1- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) +m4trace:/usr/share/aclocal/pkg.m4:86: -1- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +]) +m4trace:/usr/share/aclocal/pkg.m4:106: -1- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $1]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:58: -1- AC_DEFUN([XORG_PROG_RAWCPP], [ +AC_REQUIRE([AC_PROG_CPP]) +AC_PATH_PROGS(RAWCPP, [cpp], [${CPP}], + [$PATH:/bin:/usr/bin:/usr/lib:/usr/libexec:/usr/ccs/lib:/usr/ccs/lbin:/lib]) + +# Check for flag to avoid builtin definitions - assumes unix is predefined, +# which is not the best choice for supporting other OS'es, but covers most +# of the ones we need for now. +AC_MSG_CHECKING([if $RAWCPP requires -undef]) +AC_LANG_CONFTEST([AC_LANG_SOURCE([[Does cpp redefine unix ?]])]) +if test `${RAWCPP} < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then + AC_MSG_RESULT([no]) +else + if test `${RAWCPP} -undef < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then + RAWCPPFLAGS=-undef + AC_MSG_RESULT([yes]) + # under Cygwin unix is still defined even with -undef + elif test `${RAWCPP} -undef -ansi < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then + RAWCPPFLAGS="-undef -ansi" + AC_MSG_RESULT([yes, with -ansi]) + else + AC_MSG_ERROR([${RAWCPP} defines unix with or without -undef. I don't know what to do.]) + fi +fi +rm -f conftest.$ac_ext + +AC_MSG_CHECKING([if $RAWCPP requires -traditional]) +AC_LANG_CONFTEST([AC_LANG_SOURCE([[Does cpp preserve "whitespace"?]])]) +if test `${RAWCPP} < conftest.$ac_ext | grep -c 'preserve \"'` -eq 1 ; then + AC_MSG_RESULT([no]) +else + if test `${RAWCPP} -traditional < conftest.$ac_ext | grep -c 'preserve \"'` -eq 1 ; then + RAWCPPFLAGS="${RAWCPPFLAGS} -traditional" + AC_MSG_RESULT([yes]) + else + AC_MSG_ERROR([${RAWCPP} does not preserve whitespace with or without -traditional. I don't know what to do.]) + fi +fi +rm -f conftest.$ac_ext +AC_SUBST(RAWCPPFLAGS) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:111: -1- AC_DEFUN([XORG_MANPAGE_SECTIONS], [ +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_SED]) + +if test x$APP_MAN_SUFFIX = x ; then + APP_MAN_SUFFIX=1 +fi +if test x$APP_MAN_DIR = x ; then + APP_MAN_DIR='$(mandir)/man$(APP_MAN_SUFFIX)' +fi + +if test x$LIB_MAN_SUFFIX = x ; then + LIB_MAN_SUFFIX=3 +fi +if test x$LIB_MAN_DIR = x ; then + LIB_MAN_DIR='$(mandir)/man$(LIB_MAN_SUFFIX)' +fi + +if test x$FILE_MAN_SUFFIX = x ; then + case $host_os in + solaris*) FILE_MAN_SUFFIX=4 ;; + *) FILE_MAN_SUFFIX=5 ;; + esac +fi +if test x$FILE_MAN_DIR = x ; then + FILE_MAN_DIR='$(mandir)/man$(FILE_MAN_SUFFIX)' +fi + +if test x$MISC_MAN_SUFFIX = x ; then + case $host_os in + solaris*) MISC_MAN_SUFFIX=5 ;; + *) MISC_MAN_SUFFIX=7 ;; + esac +fi +if test x$MISC_MAN_DIR = x ; then + MISC_MAN_DIR='$(mandir)/man$(MISC_MAN_SUFFIX)' +fi + +if test x$DRIVER_MAN_SUFFIX = x ; then + case $host_os in + solaris*) DRIVER_MAN_SUFFIX=7 ;; + *) DRIVER_MAN_SUFFIX=4 ;; + esac +fi +if test x$DRIVER_MAN_DIR = x ; then + DRIVER_MAN_DIR='$(mandir)/man$(DRIVER_MAN_SUFFIX)' +fi + +if test x$ADMIN_MAN_SUFFIX = x ; then + case $host_os in + solaris*) ADMIN_MAN_SUFFIX=1m ;; + *) ADMIN_MAN_SUFFIX=8 ;; + esac +fi +if test x$ADMIN_MAN_DIR = x ; then + ADMIN_MAN_DIR='$(mandir)/man$(ADMIN_MAN_SUFFIX)' +fi + + +AC_SUBST([APP_MAN_SUFFIX]) +AC_SUBST([LIB_MAN_SUFFIX]) +AC_SUBST([FILE_MAN_SUFFIX]) +AC_SUBST([MISC_MAN_SUFFIX]) +AC_SUBST([DRIVER_MAN_SUFFIX]) +AC_SUBST([ADMIN_MAN_SUFFIX]) +AC_SUBST([APP_MAN_DIR]) +AC_SUBST([LIB_MAN_DIR]) +AC_SUBST([FILE_MAN_DIR]) +AC_SUBST([MISC_MAN_DIR]) +AC_SUBST([DRIVER_MAN_DIR]) +AC_SUBST([ADMIN_MAN_DIR]) + +XORG_MAN_PAGE="X Version 11" +AC_SUBST([XORG_MAN_PAGE]) +MAN_SUBSTS="\ + -e 's|__vendorversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \ + -e 's|__xorgversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \ + -e 's|__xservername__|Xorg|g' \ + -e 's|__xconfigfile__|xorg.conf|g' \ + -e 's|__projectroot__|\$(prefix)|g' \ + -e 's|__apploaddir__|\$(appdefaultdir)|g' \ + -e 's|__appmansuffix__|\$(APP_MAN_SUFFIX)|g' \ + -e 's|__drivermansuffix__|\$(DRIVER_MAN_SUFFIX)|g' \ + -e 's|__adminmansuffix__|\$(ADMIN_MAN_SUFFIX)|g' \ + -e 's|__libmansuffix__|\$(LIB_MAN_SUFFIX)|g' \ + -e 's|__miscmansuffix__|\$(MISC_MAN_SUFFIX)|g' \ + -e 's|__filemansuffix__|\$(FILE_MAN_SUFFIX)|g'" +AC_SUBST([MAN_SUBSTS]) + +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:208: -1- AC_DEFUN([XORG_CHECK_SGML_DOCTOOLS], [ +AC_MSG_CHECKING([for X.Org SGML entities m4_ifval([$1],[>= $1])]) +XORG_SGML_PATH= +PKG_CHECK_EXISTS([xorg-sgml-doctools m4_ifval([$1],[>= $1])], + [XORG_SGML_PATH=`$PKG_CONFIG --variable=sgmlrootdir xorg-sgml-doctools`], + [m4_ifval([$1],[:], + [if test x"$cross_compiling" != x"yes" ; then + AC_CHECK_FILE([$prefix/share/sgml/X11/defs.ent], + [XORG_SGML_PATH=$prefix/share/sgml]) + fi]) + ]) + +# Define variables STYLESHEET_SRCDIR and XSL_STYLESHEET containing +# the path and the name of the doc stylesheet +if test "x$XORG_SGML_PATH" != "x" ; then + AC_MSG_RESULT([$XORG_SGML_PATH]) + STYLESHEET_SRCDIR=$XORG_SGML_PATH/X11 + XSL_STYLESHEET=$STYLESHEET_SRCDIR/xorg.xsl +else + AC_MSG_RESULT([no]) +fi + +AC_SUBST(XORG_SGML_PATH) +AC_SUBST(STYLESHEET_SRCDIR) +AC_SUBST(XSL_STYLESHEET) +AM_CONDITIONAL([HAVE_STYLESHEETS], [test "x$XSL_STYLESHEET" != "x"]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:244: -1- AC_DEFUN([XORG_CHECK_LINUXDOC], [ +AC_REQUIRE([XORG_CHECK_SGML_DOCTOOLS]) +AC_REQUIRE([XORG_WITH_PS2PDF]) + +AC_PATH_PROG(LINUXDOC, linuxdoc) + +AC_MSG_CHECKING([whether to build documentation]) + +if test x$XORG_SGML_PATH != x && test x$LINUXDOC != x ; then + BUILDDOC=yes +else + BUILDDOC=no +fi + +AM_CONDITIONAL(BUILD_LINUXDOC, [test x$BUILDDOC = xyes]) + +AC_MSG_RESULT([$BUILDDOC]) + +AC_MSG_CHECKING([whether to build pdf documentation]) + +if test x$have_ps2pdf != xno && test x$BUILD_PDFDOC != xno; then + BUILDPDFDOC=yes +else + BUILDPDFDOC=no +fi + +AM_CONDITIONAL(BUILD_PDFDOC, [test x$BUILDPDFDOC = xyes]) + +AC_MSG_RESULT([$BUILDPDFDOC]) + +MAKE_TEXT="SGML_SEARCH_PATH=$XORG_SGML_PATH GROFF_NO_SGR=y $LINUXDOC -B txt -f" +MAKE_PS="SGML_SEARCH_PATH=$XORG_SGML_PATH $LINUXDOC -B latex --papersize=letter --output=ps" +MAKE_PDF="$PS2PDF" +MAKE_HTML="SGML_SEARCH_PATH=$XORG_SGML_PATH $LINUXDOC -B html --split=0" + +AC_SUBST(MAKE_TEXT) +AC_SUBST(MAKE_PS) +AC_SUBST(MAKE_PDF) +AC_SUBST(MAKE_HTML) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:293: -1- AC_DEFUN([XORG_CHECK_DOCBOOK], [ +AC_REQUIRE([XORG_CHECK_SGML_DOCTOOLS]) + +BUILDTXTDOC=no +BUILDPDFDOC=no +BUILDPSDOC=no +BUILDHTMLDOC=no + +AC_PATH_PROG(DOCBOOKPS, docbook2ps) +AC_PATH_PROG(DOCBOOKPDF, docbook2pdf) +AC_PATH_PROG(DOCBOOKHTML, docbook2html) +AC_PATH_PROG(DOCBOOKTXT, docbook2txt) + +AC_MSG_CHECKING([whether to build text documentation]) +if test x$XORG_SGML_PATH != x && test x$DOCBOOKTXT != x && + test x$BUILD_TXTDOC != xno; then + BUILDTXTDOC=yes +fi +AM_CONDITIONAL(BUILD_TXTDOC, [test x$BUILDTXTDOC = xyes]) +AC_MSG_RESULT([$BUILDTXTDOC]) + +AC_MSG_CHECKING([whether to build PDF documentation]) +if test x$XORG_SGML_PATH != x && test x$DOCBOOKPDF != x && + test x$BUILD_PDFDOC != xno; then + BUILDPDFDOC=yes +fi +AM_CONDITIONAL(BUILD_PDFDOC, [test x$BUILDPDFDOC = xyes]) +AC_MSG_RESULT([$BUILDPDFDOC]) + +AC_MSG_CHECKING([whether to build PostScript documentation]) +if test x$XORG_SGML_PATH != x && test x$DOCBOOKPS != x && + test x$BUILD_PSDOC != xno; then + BUILDPSDOC=yes +fi +AM_CONDITIONAL(BUILD_PSDOC, [test x$BUILDPSDOC = xyes]) +AC_MSG_RESULT([$BUILDPSDOC]) + +AC_MSG_CHECKING([whether to build HTML documentation]) +if test x$XORG_SGML_PATH != x && test x$DOCBOOKHTML != x && + test x$BUILD_HTMLDOC != xno; then + BUILDHTMLDOC=yes +fi +AM_CONDITIONAL(BUILD_HTMLDOC, [test x$BUILDHTMLDOC = xyes]) +AC_MSG_RESULT([$BUILDHTMLDOC]) + +MAKE_TEXT="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKTXT" +MAKE_PS="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKPS" +MAKE_PDF="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKPDF" +MAKE_HTML="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKHTML" + +AC_SUBST(MAKE_TEXT) +AC_SUBST(MAKE_PS) +AC_SUBST(MAKE_PDF) +AC_SUBST(MAKE_HTML) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:374: -1- AC_DEFUN([XORG_WITH_XMLTO], [ +AC_ARG_VAR([XMLTO], [Path to xmlto command]) +m4_define([_defopt], m4_default([$2], [auto])) +AC_ARG_WITH(xmlto, + AS_HELP_STRING([--with-xmlto], + [Use xmlto to regenerate documentation (default: ]_defopt[)]), + [use_xmlto=$withval], [use_xmlto=]_defopt) +m4_undefine([_defopt]) + +if test "x$use_xmlto" = x"auto"; then + AC_PATH_PROG([XMLTO], [xmlto]) + if test "x$XMLTO" = "x"; then + AC_MSG_WARN([xmlto not found - documentation targets will be skipped]) + have_xmlto=no + else + have_xmlto=yes + fi +elif test "x$use_xmlto" = x"yes" ; then + AC_PATH_PROG([XMLTO], [xmlto]) + if test "x$XMLTO" = "x"; then + AC_MSG_ERROR([--with-xmlto=yes specified but xmlto not found in PATH]) + fi + have_xmlto=yes +elif test "x$use_xmlto" = x"no" ; then + if test "x$XMLTO" != "x"; then + AC_MSG_WARN([ignoring XMLTO environment variable since --with-xmlto=no was specified]) + fi + have_xmlto=no +else + AC_MSG_ERROR([--with-xmlto expects 'yes' or 'no']) +fi + +# Test for a minimum version of xmlto, if provided. +m4_ifval([$1], +[if test "$have_xmlto" = yes; then + # scrape the xmlto version + AC_MSG_CHECKING([the xmlto version]) + xmlto_version=`$XMLTO --version 2>/dev/null | cut -d' ' -f3` + AC_MSG_RESULT([$xmlto_version]) + AS_VERSION_COMPARE([$xmlto_version], [$1], + [if test "x$use_xmlto" = xauto; then + AC_MSG_WARN([xmlto version $xmlto_version found, but $1 needed]) + have_xmlto=no + else + AC_MSG_ERROR([xmlto version $xmlto_version found, but $1 needed]) + fi]) +fi]) + +# Test for the ability of xmlto to generate a text target +have_xmlto_text=no +cat > conftest.xml << "EOF" +EOF +AS_IF([test "$have_xmlto" = yes], + [AS_IF([$XMLTO --skip-validation txt conftest.xml >/dev/null 2>&1], + [have_xmlto_text=yes], + [AC_MSG_WARN([xmlto cannot generate text format, this format skipped])])]) +rm -f conftest.xml +AM_CONDITIONAL([HAVE_XMLTO_TEXT], [test $have_xmlto_text = yes]) +AM_CONDITIONAL([HAVE_XMLTO], [test "$have_xmlto" = yes]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:458: -1- AC_DEFUN([XORG_WITH_XSLTPROC], [ +AC_ARG_VAR([XSLTPROC], [Path to xsltproc command]) +# Preserves the interface, should it be implemented later +m4_ifval([$1], [m4_warn([syntax], [Checking for xsltproc MIN-VERSION is not implemented])]) +m4_define([_defopt], m4_default([$2], [auto])) +AC_ARG_WITH(xsltproc, + AS_HELP_STRING([--with-xsltproc], + [Use xsltproc for the transformation of XML documents (default: ]_defopt[)]), + [use_xsltproc=$withval], [use_xsltproc=]_defopt) +m4_undefine([_defopt]) + +if test "x$use_xsltproc" = x"auto"; then + AC_PATH_PROG([XSLTPROC], [xsltproc]) + if test "x$XSLTPROC" = "x"; then + AC_MSG_WARN([xsltproc not found - cannot transform XML documents]) + have_xsltproc=no + else + have_xsltproc=yes + fi +elif test "x$use_xsltproc" = x"yes" ; then + AC_PATH_PROG([XSLTPROC], [xsltproc]) + if test "x$XSLTPROC" = "x"; then + AC_MSG_ERROR([--with-xsltproc=yes specified but xsltproc not found in PATH]) + fi + have_xsltproc=yes +elif test "x$use_xsltproc" = x"no" ; then + if test "x$XSLTPROC" != "x"; then + AC_MSG_WARN([ignoring XSLTPROC environment variable since --with-xsltproc=no was specified]) + fi + have_xsltproc=no +else + AC_MSG_ERROR([--with-xsltproc expects 'yes' or 'no']) +fi + +AM_CONDITIONAL([HAVE_XSLTPROC], [test "$have_xsltproc" = yes]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:515: -1- AC_DEFUN([XORG_WITH_PERL], [ +AC_ARG_VAR([PERL], [Path to perl command]) +# Preserves the interface, should it be implemented later +m4_ifval([$1], [m4_warn([syntax], [Checking for perl MIN-VERSION is not implemented])]) +m4_define([_defopt], m4_default([$2], [auto])) +AC_ARG_WITH(perl, + AS_HELP_STRING([--with-perl], + [Use perl for extracting information from files (default: ]_defopt[)]), + [use_perl=$withval], [use_perl=]_defopt) +m4_undefine([_defopt]) + +if test "x$use_perl" = x"auto"; then + AC_PATH_PROG([PERL], [perl]) + if test "x$PERL" = "x"; then + AC_MSG_WARN([perl not found - cannot extract information and report]) + have_perl=no + else + have_perl=yes + fi +elif test "x$use_perl" = x"yes" ; then + AC_PATH_PROG([PERL], [perl]) + if test "x$PERL" = "x"; then + AC_MSG_ERROR([--with-perl=yes specified but perl not found in PATH]) + fi + have_perl=yes +elif test "x$use_perl" = x"no" ; then + if test "x$PERL" != "x"; then + AC_MSG_WARN([ignoring PERL environment variable since --with-perl=no was specified]) + fi + have_perl=no +else + AC_MSG_ERROR([--with-perl expects 'yes' or 'no']) +fi + +AM_CONDITIONAL([HAVE_PERL], [test "$have_perl" = yes]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:573: -1- AC_DEFUN([XORG_WITH_ASCIIDOC], [ +AC_ARG_VAR([ASCIIDOC], [Path to asciidoc command]) +m4_define([_defopt], m4_default([$2], [auto])) +AC_ARG_WITH(asciidoc, + AS_HELP_STRING([--with-asciidoc], + [Use asciidoc to regenerate documentation (default: ]_defopt[)]), + [use_asciidoc=$withval], [use_asciidoc=]_defopt) +m4_undefine([_defopt]) + +if test "x$use_asciidoc" = x"auto"; then + AC_PATH_PROG([ASCIIDOC], [asciidoc]) + if test "x$ASCIIDOC" = "x"; then + AC_MSG_WARN([asciidoc not found - documentation targets will be skipped]) + have_asciidoc=no + else + have_asciidoc=yes + fi +elif test "x$use_asciidoc" = x"yes" ; then + AC_PATH_PROG([ASCIIDOC], [asciidoc]) + if test "x$ASCIIDOC" = "x"; then + AC_MSG_ERROR([--with-asciidoc=yes specified but asciidoc not found in PATH]) + fi + have_asciidoc=yes +elif test "x$use_asciidoc" = x"no" ; then + if test "x$ASCIIDOC" != "x"; then + AC_MSG_WARN([ignoring ASCIIDOC environment variable since --with-asciidoc=no was specified]) + fi + have_asciidoc=no +else + AC_MSG_ERROR([--with-asciidoc expects 'yes' or 'no']) +fi +m4_ifval([$1], +[if test "$have_asciidoc" = yes; then + # scrape the asciidoc version + AC_MSG_CHECKING([the asciidoc version]) + asciidoc_version=`$ASCIIDOC --version 2>/dev/null | cut -d' ' -f2` + AC_MSG_RESULT([$asciidoc_version]) + AS_VERSION_COMPARE([$asciidoc_version], [$1], + [if test "x$use_asciidoc" = xauto; then + AC_MSG_WARN([asciidoc version $asciidoc_version found, but $1 needed]) + have_asciidoc=no + else + AC_MSG_ERROR([asciidoc version $asciidoc_version found, but $1 needed]) + fi]) +fi]) +AM_CONDITIONAL([HAVE_ASCIIDOC], [test "$have_asciidoc" = yes]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:642: -1- AC_DEFUN([XORG_WITH_DOXYGEN], [ +AC_ARG_VAR([DOXYGEN], [Path to doxygen command]) +m4_define([_defopt], m4_default([$2], [auto])) +AC_ARG_WITH(doxygen, + AS_HELP_STRING([--with-doxygen], + [Use doxygen to regenerate documentation (default: ]_defopt[)]), + [use_doxygen=$withval], [use_doxygen=]_defopt) +m4_undefine([_defopt]) + +if test "x$use_doxygen" = x"auto"; then + AC_PATH_PROG([DOXYGEN], [doxygen]) + if test "x$DOXYGEN" = "x"; then + AC_MSG_WARN([doxygen not found - documentation targets will be skipped]) + have_doxygen=no + else + have_doxygen=yes + fi +elif test "x$use_doxygen" = x"yes" ; then + AC_PATH_PROG([DOXYGEN], [doxygen]) + if test "x$DOXYGEN" = "x"; then + AC_MSG_ERROR([--with-doxygen=yes specified but doxygen not found in PATH]) + fi + have_doxygen=yes +elif test "x$use_doxygen" = x"no" ; then + if test "x$DOXYGEN" != "x"; then + AC_MSG_WARN([ignoring DOXYGEN environment variable since --with-doxygen=no was specified]) + fi + have_doxygen=no +else + AC_MSG_ERROR([--with-doxygen expects 'yes' or 'no']) +fi +m4_ifval([$1], +[if test "$have_doxygen" = yes; then + # scrape the doxygen version + AC_MSG_CHECKING([the doxygen version]) + doxygen_version=`$DOXYGEN --version 2>/dev/null` + AC_MSG_RESULT([$doxygen_version]) + AS_VERSION_COMPARE([$doxygen_version], [$1], + [if test "x$use_doxygen" = xauto; then + AC_MSG_WARN([doxygen version $doxygen_version found, but $1 needed]) + have_doxygen=no + else + AC_MSG_ERROR([doxygen version $doxygen_version found, but $1 needed]) + fi]) +fi]) +AM_CONDITIONAL([HAVE_DOXYGEN], [test "$have_doxygen" = yes]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:727: -1- AC_DEFUN([XORG_WITH_GROFF], [ +AC_ARG_VAR([GROFF], [Path to groff command]) +m4_define([_defopt], m4_default([$1], [auto])) +AC_ARG_WITH(groff, + AS_HELP_STRING([--with-groff], + [Use groff to regenerate documentation (default: ]_defopt[)]), + [use_groff=$withval], [use_groff=]_defopt) +m4_undefine([_defopt]) + +if test "x$use_groff" = x"auto"; then + AC_PATH_PROG([GROFF], [groff]) + if test "x$GROFF" = "x"; then + AC_MSG_WARN([groff not found - documentation targets will be skipped]) + have_groff=no + else + have_groff=yes + fi +elif test "x$use_groff" = x"yes" ; then + AC_PATH_PROG([GROFF], [groff]) + if test "x$GROFF" = "x"; then + AC_MSG_ERROR([--with-groff=yes specified but groff not found in PATH]) + fi + have_groff=yes +elif test "x$use_groff" = x"no" ; then + if test "x$GROFF" != "x"; then + AC_MSG_WARN([ignoring GROFF environment variable since --with-groff=no was specified]) + fi + have_groff=no +else + AC_MSG_ERROR([--with-groff expects 'yes' or 'no']) +fi + +# We have groff, test for the presence of the macro packages +if test "x$have_groff" = x"yes"; then + AC_MSG_CHECKING([for ${GROFF} -ms macros]) + if ${GROFF} -ms -I. /dev/null >/dev/null 2>&1 ; then + groff_ms_works=yes + else + groff_ms_works=no + fi + AC_MSG_RESULT([$groff_ms_works]) + AC_MSG_CHECKING([for ${GROFF} -mm macros]) + if ${GROFF} -mm -I. /dev/null >/dev/null 2>&1 ; then + groff_mm_works=yes + else + groff_mm_works=no + fi + AC_MSG_RESULT([$groff_mm_works]) +fi + +# We have groff, test for HTML dependencies, one command per package +if test "x$have_groff" = x"yes"; then + AC_PATH_PROGS(GS_PATH, [gs gswin32c]) + AC_PATH_PROG(PNMTOPNG_PATH, [pnmtopng]) + AC_PATH_PROG(PSSELECT_PATH, [psselect]) + if test "x$GS_PATH" != "x" -a "x$PNMTOPNG_PATH" != "x" -a "x$PSSELECT_PATH" != "x"; then + have_groff_html=yes + else + have_groff_html=no + AC_MSG_WARN([grohtml dependencies not found - HTML Documentation skipped. Refer to grohtml man pages]) + fi +fi + +# Set Automake conditionals for Makefiles +AM_CONDITIONAL([HAVE_GROFF], [test "$have_groff" = yes]) +AM_CONDITIONAL([HAVE_GROFF_MS], [test "$groff_ms_works" = yes]) +AM_CONDITIONAL([HAVE_GROFF_MM], [test "$groff_mm_works" = yes]) +AM_CONDITIONAL([HAVE_GROFF_HTML], [test "$have_groff_html" = yes]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:819: -1- AC_DEFUN([XORG_WITH_FOP], [ +AC_ARG_VAR([FOP], [Path to fop command]) +m4_define([_defopt], m4_default([$2], [auto])) +AC_ARG_WITH(fop, + AS_HELP_STRING([--with-fop], + [Use fop to regenerate documentation (default: ]_defopt[)]), + [use_fop=$withval], [use_fop=]_defopt) +m4_undefine([_defopt]) + +if test "x$use_fop" = x"auto"; then + AC_PATH_PROG([FOP], [fop]) + if test "x$FOP" = "x"; then + AC_MSG_WARN([fop not found - documentation targets will be skipped]) + have_fop=no + else + have_fop=yes + fi +elif test "x$use_fop" = x"yes" ; then + AC_PATH_PROG([FOP], [fop]) + if test "x$FOP" = "x"; then + AC_MSG_ERROR([--with-fop=yes specified but fop not found in PATH]) + fi + have_fop=yes +elif test "x$use_fop" = x"no" ; then + if test "x$FOP" != "x"; then + AC_MSG_WARN([ignoring FOP environment variable since --with-fop=no was specified]) + fi + have_fop=no +else + AC_MSG_ERROR([--with-fop expects 'yes' or 'no']) +fi + +# Test for a minimum version of fop, if provided. +m4_ifval([$1], +[if test "$have_fop" = yes; then + # scrape the fop version + AC_MSG_CHECKING([for fop minimum version]) + fop_version=`$FOP -version 2>/dev/null | cut -d' ' -f3` + AC_MSG_RESULT([$fop_version]) + AS_VERSION_COMPARE([$fop_version], [$1], + [if test "x$use_fop" = xauto; then + AC_MSG_WARN([fop version $fop_version found, but $1 needed]) + have_fop=no + else + AC_MSG_ERROR([fop version $fop_version found, but $1 needed]) + fi]) +fi]) +AM_CONDITIONAL([HAVE_FOP], [test "$have_fop" = yes]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:890: -1- AC_DEFUN([XORG_WITH_PS2PDF], [ +AC_ARG_VAR([PS2PDF], [Path to ps2pdf command]) +m4_define([_defopt], m4_default([$1], [auto])) +AC_ARG_WITH(ps2pdf, + AS_HELP_STRING([--with-ps2pdf], + [Use ps2pdf to regenerate documentation (default: ]_defopt[)]), + [use_ps2pdf=$withval], [use_ps2pdf=]_defopt) +m4_undefine([_defopt]) + +if test "x$use_ps2pdf" = x"auto"; then + AC_PATH_PROG([PS2PDF], [ps2pdf]) + if test "x$PS2PDF" = "x"; then + AC_MSG_WARN([ps2pdf not found - documentation targets will be skipped]) + have_ps2pdf=no + else + have_ps2pdf=yes + fi +elif test "x$use_ps2pdf" = x"yes" ; then + AC_PATH_PROG([PS2PDF], [ps2pdf]) + if test "x$PS2PDF" = "x"; then + AC_MSG_ERROR([--with-ps2pdf=yes specified but ps2pdf not found in PATH]) + fi + have_ps2pdf=yes +elif test "x$use_ps2pdf" = x"no" ; then + if test "x$PS2PDF" != "x"; then + AC_MSG_WARN([ignoring PS2PDF environment variable since --with-ps2pdf=no was specified]) + fi + have_ps2pdf=no +else + AC_MSG_ERROR([--with-ps2pdf expects 'yes' or 'no']) +fi +AM_CONDITIONAL([HAVE_PS2PDF], [test "$have_ps2pdf" = yes]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:947: -1- AC_DEFUN([XORG_ENABLE_DOCS], [ +m4_define([docs_default], m4_default([$1], [yes])) +AC_ARG_ENABLE(docs, + AS_HELP_STRING([--enable-docs], + [Enable building the documentation (default: ]docs_default[)]), + [build_docs=$enableval], [build_docs=]docs_default) +m4_undefine([docs_default]) +AM_CONDITIONAL(ENABLE_DOCS, [test x$build_docs = xyes]) +AC_MSG_CHECKING([whether to build documentation]) +AC_MSG_RESULT([$build_docs]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:980: -1- AC_DEFUN([XORG_ENABLE_DEVEL_DOCS], [ +m4_define([devel_default], m4_default([$1], [yes])) +AC_ARG_ENABLE(devel-docs, + AS_HELP_STRING([--enable-devel-docs], + [Enable building the developer documentation (default: ]devel_default[)]), + [build_devel_docs=$enableval], [build_devel_docs=]devel_default) +m4_undefine([devel_default]) +AM_CONDITIONAL(ENABLE_DEVEL_DOCS, [test x$build_devel_docs = xyes]) +AC_MSG_CHECKING([whether to build developer documentation]) +AC_MSG_RESULT([$build_devel_docs]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1013: -1- AC_DEFUN([XORG_ENABLE_SPECS], [ +m4_define([spec_default], m4_default([$1], [yes])) +AC_ARG_ENABLE(specs, + AS_HELP_STRING([--enable-specs], + [Enable building the specs (default: ]spec_default[)]), + [build_specs=$enableval], [build_specs=]spec_default) +m4_undefine([spec_default]) +AM_CONDITIONAL(ENABLE_SPECS, [test x$build_specs = xyes]) +AC_MSG_CHECKING([whether to build functional specifications]) +AC_MSG_RESULT([$build_specs]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1045: -1- AC_DEFUN([XORG_ENABLE_UNIT_TESTS], [ +AC_BEFORE([$0], [XORG_WITH_GLIB]) +AC_BEFORE([$0], [XORG_LD_WRAP]) +AC_REQUIRE([XORG_MEMORY_CHECK_FLAGS]) +m4_define([_defopt], m4_default([$1], [auto])) +AC_ARG_ENABLE(unit-tests, AS_HELP_STRING([--enable-unit-tests], + [Enable building unit test cases (default: ]_defopt[)]), + [enable_unit_tests=$enableval], [enable_unit_tests=]_defopt) +m4_undefine([_defopt]) +AM_CONDITIONAL(ENABLE_UNIT_TESTS, [test "x$enable_unit_tests" != xno]) +AC_MSG_CHECKING([whether to build unit test cases]) +AC_MSG_RESULT([$enable_unit_tests]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1078: -1- AC_DEFUN([XORG_ENABLE_INTEGRATION_TESTS], [ +AC_REQUIRE([XORG_MEMORY_CHECK_FLAGS]) +m4_define([_defopt], m4_default([$1], [auto])) +AC_ARG_ENABLE(integration-tests, AS_HELP_STRING([--enable-integration-tests], + [Enable building integration test cases (default: ]_defopt[)]), + [enable_integration_tests=$enableval], + [enable_integration_tests=]_defopt) +m4_undefine([_defopt]) +AM_CONDITIONAL([ENABLE_INTEGRATION_TESTS], + [test "x$enable_integration_tests" != xno]) +AC_MSG_CHECKING([whether to build unit test cases]) +AC_MSG_RESULT([$enable_integration_tests]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1112: -1- AC_DEFUN([XORG_WITH_GLIB], [ +AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +m4_define([_defopt], m4_default([$2], [auto])) +AC_ARG_WITH(glib, AS_HELP_STRING([--with-glib], + [Use GLib library for unit testing (default: ]_defopt[)]), + [with_glib=$withval], [with_glib=]_defopt) +m4_undefine([_defopt]) + +have_glib=no +# Do not probe GLib if user explicitly disabled unit testing +if test "x$enable_unit_tests" != x"no"; then + # Do not probe GLib if user explicitly disabled it + if test "x$with_glib" != x"no"; then + m4_ifval( + [$1], + [PKG_CHECK_MODULES([GLIB], [glib-2.0 >= $1], [have_glib=yes], [have_glib=no])], + [PKG_CHECK_MODULES([GLIB], [glib-2.0], [have_glib=yes], [have_glib=no])] + ) + fi +fi + +# Not having GLib when unit testing has been explicitly requested is an error +if test "x$enable_unit_tests" = x"yes"; then + if test "x$have_glib" = x"no"; then + AC_MSG_ERROR([--enable-unit-tests=yes specified but glib-2.0 not found]) + fi +fi + +# Having unit testing disabled when GLib has been explicitly requested is an error +if test "x$enable_unit_tests" = x"no"; then + if test "x$with_glib" = x"yes"; then + AC_MSG_ERROR([--enable-unit-tests=yes specified but glib-2.0 not found]) + fi +fi + +# Not having GLib when it has been explicitly requested is an error +if test "x$with_glib" = x"yes"; then + if test "x$have_glib" = x"no"; then + AC_MSG_ERROR([--with-glib=yes specified but glib-2.0 not found]) + fi +fi + +AM_CONDITIONAL([HAVE_GLIB], [test "$have_glib" = yes]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1171: -1- AC_DEFUN([XORG_LD_WRAP], [ +XORG_CHECK_LINKER_FLAGS([-Wl,-wrap,exit],[have_ld_wrap=yes],[have_ld_wrap=no], + [AC_LANG_PROGRAM([#include + void __wrap_exit(int status) { return; }], + [exit(0);])]) +# Not having ld wrap when unit testing has been explicitly requested is an error +if test "x$enable_unit_tests" = x"yes" -a "x$1" != "xoptional"; then + if test "x$have_ld_wrap" = x"no"; then + AC_MSG_ERROR([--enable-unit-tests=yes specified but ld -wrap support is not available]) + fi +fi +AM_CONDITIONAL([HAVE_LD_WRAP], [test "$have_ld_wrap" = yes]) +# +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1235: -1- AC_DEFUN([XORG_CHECK_LINKER_FLAGS], [AC_MSG_CHECKING([whether the linker accepts $1]) +dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname: +AS_LITERAL_IF([$1], + [AC_CACHE_VAL(AS_TR_SH(xorg_cv_linker_flags_[$1]), [ + ax_save_FLAGS=$LDFLAGS + LDFLAGS="$1" + AC_LINK_IFELSE([m4_default([$4],[AC_LANG_PROGRAM()])], + AS_TR_SH(xorg_cv_linker_flags_[$1])=yes, + AS_TR_SH(xorg_cv_linker_flags_[$1])=no) + LDFLAGS=$ax_save_FLAGS])], + [ax_save_FLAGS=$LDFLAGS + LDFLAGS="$1" + AC_LINK_IFELSE([AC_LANG_PROGRAM()], + eval AS_TR_SH(xorg_cv_linker_flags_[$1])=yes, + eval AS_TR_SH(xorg_cv_linker_flags_[$1])=no) + LDFLAGS=$ax_save_FLAGS]) +eval xorg_check_linker_flags=$AS_TR_SH(xorg_cv_linker_flags_[$1]) +AC_MSG_RESULT($xorg_check_linker_flags) +if test "x$xorg_check_linker_flags" = xyes; then + m4_default([$2], :) +else + m4_default([$3], :) +fi +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1275: -1- AC_DEFUN([XORG_MEMORY_CHECK_FLAGS], [ + +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_ARG_VAR([XORG_MALLOC_DEBUG_ENV], + [Environment variables to enable memory checking in tests]) + +# Check for different types of support on different platforms +case $host_os in + solaris*) + AC_CHECK_LIB([umem], [umem_alloc], + [malloc_debug_env='LD_PRELOAD=libumem.so UMEM_DEBUG=default']) + ;; + *-gnu*) # GNU libc - Value is used as a single byte bit pattern, + # both directly and inverted, so should not be 0 or 255. + malloc_debug_env='MALLOC_PERTURB_=15' + ;; + darwin*) + malloc_debug_env='MallocPreScribble=1 MallocScribble=1 DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib' + ;; + *bsd*) + malloc_debug_env='MallocPreScribble=1 MallocScribble=1' + ;; +esac + +# User supplied flags override default flags +if test "x$XORG_MALLOC_DEBUG_ENV" != "x"; then + malloc_debug_env="$XORG_MALLOC_DEBUG_ENV" +fi + +AC_SUBST([XORG_MALLOC_DEBUG_ENV],[$malloc_debug_env]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1314: -1- AC_DEFUN([XORG_CHECK_MALLOC_ZERO], [ +AC_ARG_ENABLE(malloc0returnsnull, + AS_HELP_STRING([--enable-malloc0returnsnull], + [malloc(0) returns NULL (default: auto)]), + [MALLOC_ZERO_RETURNS_NULL=$enableval], + [MALLOC_ZERO_RETURNS_NULL=auto]) + +AC_MSG_CHECKING([whether malloc(0) returns NULL]) +if test "x$MALLOC_ZERO_RETURNS_NULL" = xauto; then + AC_RUN_IFELSE([AC_LANG_PROGRAM([ +#include +],[ + char *m0, *r0, *c0, *p; + m0 = malloc(0); + p = malloc(10); + r0 = realloc(p,0); + c0 = calloc(0,10); + exit((m0 == 0 || r0 == 0 || c0 == 0) ? 0 : 1); +])], + [MALLOC_ZERO_RETURNS_NULL=yes], + [MALLOC_ZERO_RETURNS_NULL=no], + [MALLOC_ZERO_RETURNS_NULL=yes]) +fi +AC_MSG_RESULT([$MALLOC_ZERO_RETURNS_NULL]) + +if test "x$MALLOC_ZERO_RETURNS_NULL" = xyes; then + MALLOC_ZERO_CFLAGS="-DMALLOC_0_RETURNS_NULL" + XMALLOC_ZERO_CFLAGS=$MALLOC_ZERO_CFLAGS + XTMALLOC_ZERO_CFLAGS="$MALLOC_ZERO_CFLAGS -DXTMALLOC_BC" +else + MALLOC_ZERO_CFLAGS="" + XMALLOC_ZERO_CFLAGS="" + XTMALLOC_ZERO_CFLAGS="" +fi + +AC_SUBST([MALLOC_ZERO_CFLAGS]) +AC_SUBST([XMALLOC_ZERO_CFLAGS]) +AC_SUBST([XTMALLOC_ZERO_CFLAGS]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1375: -1- AC_DEFUN([XORG_WITH_LINT], [ + +AC_ARG_VAR([LINT], [Path to a lint-style command]) +AC_ARG_VAR([LINT_FLAGS], [Flags for the lint-style command]) +AC_ARG_WITH(lint, [AS_HELP_STRING([--with-lint], + [Use a lint-style source code checker (default: disabled)])], + [use_lint=$withval], [use_lint=no]) + +# Obtain platform specific info like program name and options +# The lint program on FreeBSD and NetBSD is different from the one on Solaris +case $host_os in + *linux* | *openbsd* | kfreebsd*-gnu | darwin* | cygwin*) + lint_name=splint + lint_options="-badflag" + ;; + *freebsd* | *netbsd*) + lint_name=lint + lint_options="-u -b" + ;; + *solaris*) + lint_name=lint + lint_options="-u -b -h -erroff=E_INDISTING_FROM_TRUNC2" + ;; +esac + +# Test for the presence of the program (either guessed by the code or spelled out by the user) +if test "x$use_lint" = x"yes" ; then + AC_PATH_PROG([LINT], [$lint_name]) + if test "x$LINT" = "x"; then + AC_MSG_ERROR([--with-lint=yes specified but lint-style tool not found in PATH]) + fi +elif test "x$use_lint" = x"no" ; then + if test "x$LINT" != "x"; then + AC_MSG_WARN([ignoring LINT environment variable since --with-lint=no was specified]) + fi +else + AC_MSG_ERROR([--with-lint expects 'yes' or 'no'. Use LINT variable to specify path.]) +fi + +# User supplied flags override default flags +if test "x$LINT_FLAGS" != "x"; then + lint_options=$LINT_FLAGS +fi + +AC_SUBST([LINT_FLAGS],[$lint_options]) +AM_CONDITIONAL(LINT, [test "x$LINT" != x]) + +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1438: -1- AC_DEFUN([XORG_LINT_LIBRARY], [ +AC_REQUIRE([XORG_WITH_LINT]) +AC_ARG_ENABLE(lint-library, [AS_HELP_STRING([--enable-lint-library], + [Create lint library (default: disabled)])], + [make_lint_lib=$enableval], [make_lint_lib=no]) + +if test "x$make_lint_lib" = x"yes" ; then + LINTLIB=llib-l$1.ln + if test "x$LINT" = "x"; then + AC_MSG_ERROR([Cannot make lint library without --with-lint]) + fi +elif test "x$make_lint_lib" != x"no" ; then + AC_MSG_ERROR([--enable-lint-library expects 'yes' or 'no'.]) +fi + +AC_SUBST(LINTLIB) +AM_CONDITIONAL(MAKE_LINT_LIB, [test x$make_lint_lib != xno]) + +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1469: -1- AC_DEFUN([XORG_COMPILER_BRAND], [ +AC_LANG_CASE( + [C], [ + AC_REQUIRE([AC_PROG_CC_C99]) + ], + [C++], [ + AC_REQUIRE([AC_PROG_CXX]) + ] +) +AC_CHECK_DECL([__clang__], [CLANGCC="yes"], [CLANGCC="no"]) +AC_CHECK_DECL([__INTEL_COMPILER], [INTELCC="yes"], [INTELCC="no"]) +AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1496: -1- AC_DEFUN([XORG_TESTSET_CFLAG], [ +m4_if([$#], 0, [m4_fatal([XORG_TESTSET_CFLAG was given with an unsupported number of arguments])]) +m4_if([$#], 1, [m4_fatal([XORG_TESTSET_CFLAG was given with an unsupported number of arguments])]) + +AC_LANG_COMPILER_REQUIRE + +AC_LANG_CASE( + [C], [ + AC_REQUIRE([AC_PROG_CC_C99]) + define([PREFIX], [C]) + define([CACHE_PREFIX], [cc]) + define([COMPILER], [$CC]) + ], + [C++], [ + define([PREFIX], [CXX]) + define([CACHE_PREFIX], [cxx]) + define([COMPILER], [$CXX]) + ] +) + +[xorg_testset_save_]PREFIX[FLAGS]="$PREFIX[FLAGS]" + +if test "x$[xorg_testset_]CACHE_PREFIX[_unknown_warning_option]" = "x" ; then + PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option" + AC_CACHE_CHECK([if ]COMPILER[ supports -Werror=unknown-warning-option], + [xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option], + AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], + [xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option=yes], + [xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option=no])) + [xorg_testset_]CACHE_PREFIX[_unknown_warning_option]=$[xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option] + PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]" +fi + +if test "x$[xorg_testset_]CACHE_PREFIX[_unused_command_line_argument]" = "x" ; then + if test "x$[xorg_testset_]CACHE_PREFIX[_unknown_warning_option]" = "xyes" ; then + PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option" + fi + PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unused-command-line-argument" + AC_CACHE_CHECK([if ]COMPILER[ supports -Werror=unused-command-line-argument], + [xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument], + AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], + [xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument=yes], + [xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument=no])) + [xorg_testset_]CACHE_PREFIX[_unused_command_line_argument]=$[xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument] + PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]" +fi + +found="no" +m4_foreach([flag], m4_cdr($@), [ + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unused-command-line-argument" + fi + + PREFIX[FLAGS]="$PREFIX[FLAGS] ]flag[" + +dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname + AC_MSG_CHECKING([if ]COMPILER[ supports]flag[]) + cacheid=AS_TR_SH([xorg_cv_]CACHE_PREFIX[_flag_]flag[]) + AC_CACHE_VAL($cacheid, + [AC_LINK_IFELSE([AC_LANG_PROGRAM([int i;])], + [eval $cacheid=yes], + [eval $cacheid=no])]) + + PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]" + + eval supported=\$$cacheid + AC_MSG_RESULT([$supported]) + if test "$supported" = "yes" ; then + $1="$$1 ]flag[" + found="yes" + fi + fi +]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1588: -1- AC_DEFUN([XORG_COMPILER_FLAGS], [ +AC_REQUIRE([XORG_COMPILER_BRAND]) + +AC_ARG_ENABLE(selective-werror, + AS_HELP_STRING([--disable-selective-werror], + [Turn off selective compiler errors. (default: enabled)]), + [SELECTIVE_WERROR=$enableval], + [SELECTIVE_WERROR=yes]) + +AC_LANG_CASE( + [C], [ + define([PREFIX], [C]) + ], + [C++], [ + define([PREFIX], [CXX]) + ] +) +# -v is too short to test reliably with XORG_TESTSET_CFLAG +if test "x$SUNCC" = "xyes"; then + [BASE_]PREFIX[FLAGS]="-v" +else + [BASE_]PREFIX[FLAGS]="" +fi + +# This chunk of warnings were those that existed in the legacy CWARNFLAGS +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wall]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wpointer-arith]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-declarations]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wformat=2], [-Wformat]) + +AC_LANG_CASE( + [C], [ + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wstrict-prototypes]) + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-prototypes]) + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wnested-externs]) + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wbad-function-cast]) + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wold-style-definition]) + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wdeclaration-after-statement]) + ] +) + +# This chunk adds additional warnings that could catch undesired effects. +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wunused]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wuninitialized]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wshadow]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-qual]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-noreturn]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-format-attribute]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wredundant-decls]) + +# These are currently disabled because they are noisy. They will be enabled +# in the future once the codebase is sufficiently modernized to silence +# them. For now, I don't want them to drown out the other warnings. +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wlogical-op]) +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wparentheses]) +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-align]) + +# Turn some warnings into errors, so we don't accidently get successful builds +# when there are problems that should be fixed. + +if test "x$SELECTIVE_WERROR" = "xyes" ; then +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=implicit], [-errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=nonnull]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=init-self]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=main]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=missing-braces]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=sequence-point]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=return-type], [-errwarn=E_FUNC_HAS_NO_RETURN_STMT]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=trigraphs]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=array-bounds]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=write-strings]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=address]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=int-to-pointer-cast], [-errwarn=E_BAD_PTR_INT_COMBINATION]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=pointer-to-int-cast]) # Also -errwarn=E_BAD_PTR_INT_COMBINATION +else +AC_MSG_WARN([You have chosen not to turn some select compiler warnings into errors. This should not be necessary. Please report why you needed to do so in a bug report at $PACKAGE_BUGREPORT]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wimplicit]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wnonnull]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Winit-self]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmain]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-braces]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wsequence-point]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wreturn-type]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wtrigraphs]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Warray-bounds]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wwrite-strings]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Waddress]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wint-to-pointer-cast]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wpointer-to-int-cast]) +fi + +AC_SUBST([BASE_]PREFIX[FLAGS]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1694: -1- AC_DEFUN([XORG_CWARNFLAGS], [ +AC_REQUIRE([XORG_COMPILER_FLAGS]) +AC_REQUIRE([XORG_COMPILER_BRAND]) +AC_LANG_CASE( + [C], [ + CWARNFLAGS="$BASE_CFLAGS" + if test "x$GCC" = xyes ; then + CWARNFLAGS="$CWARNFLAGS -fno-strict-aliasing" + fi + AC_SUBST(CWARNFLAGS) + ] +) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1719: -1- AC_DEFUN([XORG_STRICT_OPTION], [ +AC_REQUIRE([XORG_CWARNFLAGS]) +AC_REQUIRE([XORG_COMPILER_FLAGS]) + +AC_ARG_ENABLE(strict-compilation, + AS_HELP_STRING([--enable-strict-compilation], + [Enable all warnings from compiler and make them errors (default: disabled)]), + [STRICT_COMPILE=$enableval], [STRICT_COMPILE=no]) + +AC_LANG_CASE( + [C], [ + define([PREFIX], [C]) + ], + [C++], [ + define([PREFIX], [CXX]) + ] +) + +[STRICT_]PREFIX[FLAGS]="" +XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-pedantic]) +XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-Werror], [-errwarn]) + +# Earlier versions of gcc (eg: 4.2) support -Werror=attributes, but do not +# activate it with -Werror, so we add it here explicitly. +XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-Werror=attributes]) + +if test "x$STRICT_COMPILE" = "xyes"; then + [BASE_]PREFIX[FLAGS]="$[BASE_]PREFIX[FLAGS] $[STRICT_]PREFIX[FLAGS]" + AC_LANG_CASE([C], [CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS"]) +fi +AC_SUBST([STRICT_]PREFIX[FLAGS]) +AC_SUBST([BASE_]PREFIX[FLAGS]) +AC_LANG_CASE([C], AC_SUBST([CWARNFLAGS])) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1760: -1- AC_DEFUN([XORG_DEFAULT_OPTIONS], [ +AC_REQUIRE([AC_PROG_INSTALL]) +XORG_COMPILER_FLAGS +XORG_CWARNFLAGS +XORG_STRICT_OPTION +XORG_RELEASE_VERSION +XORG_CHANGELOG +XORG_INSTALL +XORG_MANPAGE_SECTIONS +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])], + [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1780: -1- AC_DEFUN([XORG_INSTALL], [ +AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +macros_datadir=`$PKG_CONFIG --print-errors --variable=pkgdatadir xorg-macros` +INSTALL_CMD="(cp -f "$macros_datadir/INSTALL" \$(top_srcdir)/.INSTALL.tmp && \ +mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \ +|| (rm -f \$(top_srcdir)/.INSTALL.tmp; touch \$(top_srcdir)/INSTALL; \ +echo 'util-macros \"pkgdatadir\" from xorg-macros.pc not found: installing possibly empty INSTALL.' >&2)" +AC_SUBST([INSTALL_CMD]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1818: -1- AC_DEFUN([XORG_RELEASE_VERSION], [ + AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MAJOR], + [`echo $PACKAGE_VERSION | cut -d . -f 1`], + [Major version of this package]) + PVM=`echo $PACKAGE_VERSION | cut -d . -f 2 | cut -d - -f 1` + if test "x$PVM" = "x"; then + PVM="0" + fi + AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MINOR], + [$PVM], + [Minor version of this package]) + PVP=`echo $PACKAGE_VERSION | cut -d . -f 3 | cut -d - -f 1` + if test "x$PVP" = "x"; then + PVP="0" + fi + AC_DEFINE_UNQUOTED([PACKAGE_VERSION_PATCHLEVEL], + [$PVP], + [Patch version of this package]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1846: -1- AC_DEFUN([XORG_CHANGELOG], [ +CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp && \ +mv \$(top_srcdir)/.changelog.tmp \$(top_srcdir)/ChangeLog) \ +|| (rm -f \$(top_srcdir)/.changelog.tmp; touch \$(top_srcdir)/ChangeLog; \ +echo 'git directory not found: installing possibly empty changelog.' >&2)" +AC_SUBST([CHANGELOG_CMD]) +]) +m4trace:/usr/share/aclocal-1.14/amversion.m4:14: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.14' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.14.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) +m4trace:/usr/share/aclocal-1.14/amversion.m4:33: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.14.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) +m4trace:/usr/share/aclocal-1.14/auxdir.m4:47: -1- AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) +m4trace:/usr/share/aclocal-1.14/cond.m4:12: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) +m4trace:/usr/share/aclocal-1.14/depend.m4:26: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) +m4trace:/usr/share/aclocal-1.14/depend.m4:163: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) +m4trace:/usr/share/aclocal-1.14/depend.m4:171: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) +m4trace:/usr/share/aclocal-1.14/depout.m4:12: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} +]) +m4trace:/usr/share/aclocal-1.14/depout.m4:71: -1- AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) +m4trace:/usr/share/aclocal-1.14/init.m4:29: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi]) +m4trace:/usr/share/aclocal-1.14/init.m4:182: -1- AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) +m4trace:/usr/share/aclocal-1.14/install-sh.m4:11: -1- AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) +m4trace:/usr/share/aclocal-1.14/lead-dot.m4:10: -1- AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) +m4trace:/usr/share/aclocal-1.14/maintainer.m4:16: -1- AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), + [enable], [m4_define([am_maintainer_other], [disable])], + [disable], [m4_define([am_maintainer_other], [enable])], + [m4_define([am_maintainer_other], [enable]) + m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) +AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + dnl maintainer-mode's default is 'disable' unless 'enable' is passed + AC_ARG_ENABLE([maintainer-mode], + [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], + am_maintainer_other[ make rules and dependencies not useful + (and sometimes confusing) to the casual installer])], + [USE_MAINTAINER_MODE=$enableval], + [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) + AC_MSG_RESULT([$USE_MAINTAINER_MODE]) + AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST([MAINT])dnl + +]) +m4trace:/usr/share/aclocal-1.14/make.m4:12: -1- AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) +m4trace:/usr/share/aclocal-1.14/missing.m4:11: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) +m4trace:/usr/share/aclocal-1.14/missing.m4:20: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) +m4trace:/usr/share/aclocal-1.14/options.m4:11: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) +m4trace:/usr/share/aclocal-1.14/options.m4:17: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) +m4trace:/usr/share/aclocal-1.14/options.m4:23: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) +m4trace:/usr/share/aclocal-1.14/options.m4:29: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) +m4trace:/usr/share/aclocal-1.14/prog-cc-c-o.m4:12: -1- AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) +m4trace:/usr/share/aclocal-1.14/prog-cc-c-o.m4:47: -1- AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) +m4trace:/usr/share/aclocal-1.14/runlog.m4:12: -1- AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) +m4trace:/usr/share/aclocal-1.14/sanity.m4:11: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) +m4trace:/usr/share/aclocal-1.14/silent.m4:12: -1- AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) +m4trace:/usr/share/aclocal-1.14/strip.m4:17: -1- AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) +m4trace:/usr/share/aclocal-1.14/substnot.m4:12: -1- AC_DEFUN([_AM_SUBST_NOTMAKE]) +m4trace:/usr/share/aclocal-1.14/substnot.m4:17: -1- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) +m4trace:/usr/share/aclocal-1.14/tar.m4:23: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) +m4trace:m4/ax_gcc_builtin.m4:95: -1- AC_DEFUN([AX_GCC_BUILTIN], [ + AS_VAR_PUSHDEF([ac_var], [ax_cv_have_$1]) + + AC_CACHE_CHECK([for $1], [ac_var], [ + AC_LINK_IFELSE([AC_LANG_PROGRAM([], [ + m4_case([$1], + [__builtin_assume_aligned], [$1("", 0)], + [__builtin_bswap32], [$1(0)], + [__builtin_bswap64], [$1(0)], + [__builtin_choose_expr], [$1(0, 0, 0)], + [__builtin___clear_cache], [$1("", "")], + [__builtin_clrsb], [$1(0)], + [__builtin_clrsbl], [$1(0)], + [__builtin_clrsbll], [$1(0)], + [__builtin_clz], [$1(0)], + [__builtin_clzl], [$1(0)], + [__builtin_clzll], [$1(0)], + [__builtin_complex], [$1(0.0, 0.0)], + [__builtin_constant_p], [$1(0)], + [__builtin_ctz], [$1(0)], + [__builtin_ctzl], [$1(0)], + [__builtin_ctzll], [$1(0)], + [__builtin_expect], [$1(0, 0)], + [__builtin_ffs], [$1(0)], + [__builtin_ffsl], [$1(0)], + [__builtin_ffsll], [$1(0)], + [__builtin_fpclassify], [$1(0, 1, 2, 3, 4, 0.0)], + [__builtin_huge_val], [$1()], + [__builtin_huge_valf], [$1()], + [__builtin_huge_vall], [$1()], + [__builtin_inf], [$1()], + [__builtin_infd128], [$1()], + [__builtin_infd32], [$1()], + [__builtin_infd64], [$1()], + [__builtin_inff], [$1()], + [__builtin_infl], [$1()], + [__builtin_isinf_sign], [$1(0.0)], + [__builtin_nan], [$1("")], + [__builtin_nand128], [$1("")], + [__builtin_nand32], [$1("")], + [__builtin_nand64], [$1("")], + [__builtin_nanf], [$1("")], + [__builtin_nanl], [$1("")], + [__builtin_nans], [$1("")], + [__builtin_nansf], [$1("")], + [__builtin_nansl], [$1("")], + [__builtin_object_size], [$1("", 0)], + [__builtin_parity], [$1(0)], + [__builtin_parityl], [$1(0)], + [__builtin_parityll], [$1(0)], + [__builtin_popcount], [$1(0)], + [__builtin_popcountl], [$1(0)], + [__builtin_popcountll], [$1(0)], + [__builtin_powi], [$1(0, 0)], + [__builtin_powif], [$1(0, 0)], + [__builtin_powil], [$1(0, 0)], + [__builtin_prefetch], [$1("")], + [__builtin_trap], [$1()], + [__builtin_types_compatible_p], [$1(int, int)], + [__builtin_unreachable], [$1()], + [m4_warn([syntax], [Unsupported built-in $1, the test may fail]) + $1()] + ) + ])], + [AS_VAR_SET([ac_var], [yes])], + [AS_VAR_SET([ac_var], [no])]) + ]) + + AS_IF([test yes = AS_VAR_GET([ac_var])], + [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$1), 1, + [Define to 1 if the system has the `$1' built-in function])], []) + + AS_VAR_POPDEF([ac_var]) +]) +m4trace:configure.ac:25: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.ac:25: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.ac:25: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) +m4trace:configure.ac:25: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.ac:25: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.ac:25: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.ac:25: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^SHELL$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PATH_SEPARATOR$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^exec_prefix$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^prefix$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^program_transform_name$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^bindir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^sbindir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^libexecdir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^datarootdir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^datadir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^sysconfdir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^sharedstatedir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^localstatedir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^includedir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^oldincludedir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^docdir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^infodir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^htmldir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^dvidir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^pdfdir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^psdir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^libdir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^mandir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^DEFS$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^ECHO_C$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^ECHO_N$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^ECHO_T$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^build_alias$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^host_alias$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^target_alias$]) +m4trace:configure.ac:30: -1- AC_CONFIG_MACRO_DIR([m4]) +m4trace:configure.ac:34: -1- AM_INIT_AUTOMAKE([foreign dist-xz no-dist-gzip subdir-objects color-tests parallel-tests check-news]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) +m4trace:configure.ac:34: -1- AM_SET_CURRENT_AUTOMAKE_VERSION +m4trace:configure.ac:34: -1- AM_AUTOMAKE_VERSION([1.14.1]) +m4trace:configure.ac:34: -1- _AM_AUTOCONF_VERSION([2.69]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^INSTALL_DATA$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^am__isrc$]) +m4trace:configure.ac:34: -1- _AM_SUBST_NOTMAKE([am__isrc]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^CYGPATH_W$]) +m4trace:configure.ac:34: -1- _AM_SET_OPTIONS([foreign dist-xz no-dist-gzip subdir-objects color-tests parallel-tests check-news]) +m4trace:configure.ac:34: -1- _AM_SET_OPTION([foreign]) +m4trace:configure.ac:34: -2- _AM_MANGLE_OPTION([foreign]) +m4trace:configure.ac:34: -1- _AM_SET_OPTION([dist-xz]) +m4trace:configure.ac:34: -2- _AM_MANGLE_OPTION([dist-xz]) +m4trace:configure.ac:34: -1- _AM_SET_OPTION([no-dist-gzip]) +m4trace:configure.ac:34: -2- _AM_MANGLE_OPTION([no-dist-gzip]) +m4trace:configure.ac:34: -1- _AM_SET_OPTION([subdir-objects]) +m4trace:configure.ac:34: -2- _AM_MANGLE_OPTION([subdir-objects]) +m4trace:configure.ac:34: -1- _AM_SET_OPTION([color-tests]) +m4trace:configure.ac:34: -2- _AM_MANGLE_OPTION([color-tests]) +m4trace:configure.ac:34: -1- _AM_SET_OPTION([parallel-tests]) +m4trace:configure.ac:34: -2- _AM_MANGLE_OPTION([parallel-tests]) +m4trace:configure.ac:34: -1- _AM_SET_OPTION([check-news]) +m4trace:configure.ac:34: -2- _AM_MANGLE_OPTION([check-news]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:34: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])]) +m4trace:configure.ac:34: -2- _AM_MANGLE_OPTION([no-define]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:34: -1- AM_SANITY_CHECK +m4trace:configure.ac:34: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +m4trace:configure.ac:34: -1- AM_MISSING_HAS_RUN +m4trace:configure.ac:34: -1- AM_AUX_DIR_EXPAND +m4trace:configure.ac:34: -1- m4_pattern_allow([^ACLOCAL$]) +m4trace:configure.ac:34: -1- AM_MISSING_PROG([AUTOCONF], [autoconf]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AUTOCONF$]) +m4trace:configure.ac:34: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AUTOMAKE$]) +m4trace:configure.ac:34: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AUTOHEADER$]) +m4trace:configure.ac:34: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^MAKEINFO$]) +m4trace:configure.ac:34: -1- AM_PROG_INSTALL_SH +m4trace:configure.ac:34: -1- m4_pattern_allow([^install_sh$]) +m4trace:configure.ac:34: -1- AM_PROG_INSTALL_STRIP +m4trace:configure.ac:34: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^MKDIR_P$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^mkdir_p$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AWK$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^SET_MAKE$]) +m4trace:configure.ac:34: -1- AM_SET_LEADING_DOT +m4trace:configure.ac:34: -1- m4_pattern_allow([^am__leading_dot$]) +m4trace:configure.ac:34: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +m4trace:configure.ac:34: -2- _AM_MANGLE_OPTION([tar-ustar]) +m4trace:configure.ac:34: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])]) +m4trace:configure.ac:34: -2- _AM_MANGLE_OPTION([tar-pax]) +m4trace:configure.ac:34: -1- _AM_PROG_TAR([v7]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AMTAR$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^am__tar$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^am__untar$]) +m4trace:configure.ac:34: -1- _AM_IF_OPTION([no-dependencies], [], [AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +m4trace:configure.ac:34: -2- _AM_MANGLE_OPTION([no-dependencies]) +m4trace:configure.ac:34: -1- AM_SILENT_RULES +m4trace:configure.ac:34: -1- m4_pattern_allow([^AM_V$]) +m4trace:configure.ac:34: -1- AM_SUBST_NOTMAKE([AM_V]) +m4trace:configure.ac:34: -1- _AM_SUBST_NOTMAKE([AM_V]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AM_DEFAULT_V$]) +m4trace:configure.ac:34: -1- AM_SUBST_NOTMAKE([AM_DEFAULT_V]) +m4trace:configure.ac:34: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AM_BACKSLASH$]) +m4trace:configure.ac:34: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH]) +m4trace:configure.ac:35: -1- AM_MAINTAINER_MODE([enable]) +m4trace:configure.ac:35: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MAINTAINER_MODE_TRUE$]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MAINTAINER_MODE_FALSE$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_TRUE]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_FALSE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MAINT$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CFLAGS$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^ac_ct_CC$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^EXEEXT$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^OBJEXT$]) +m4trace:configure.ac:38: -1- _AM_PROG_CC_C_O +m4trace:configure.ac:38: -1- AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) +m4trace:configure.ac:38: -1- _AM_DEPENDENCIES([CC]) +m4trace:configure.ac:38: -1- AM_SET_DEPDIR +m4trace:configure.ac:38: -1- m4_pattern_allow([^DEPDIR$]) +m4trace:configure.ac:38: -1- AM_OUTPUT_DEPENDENCY_COMMANDS +m4trace:configure.ac:38: -1- AM_MAKE_INCLUDE +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__include$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__quote$]) +m4trace:configure.ac:38: -1- AM_DEP_TRACK +m4trace:configure.ac:38: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEP_TRUE$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEP_FALSE$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__nodep$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__nodep]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CCDEPMODE$]) +m4trace:configure.ac:38: -1- AM_CONDITIONAL([am__fastdepCC], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:38: -1- AC_PROG_EGREP +m4trace:configure.ac:38: -1- m4_pattern_allow([^GREP$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^EGREP$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^STDC_HEADERS$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_SOURCE$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_1_SOURCE$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_MINIX$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__EXTENSIONS__$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_ALL_SOURCE$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_GNU_SOURCE$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_PTHREAD_SEMANTICS$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_TANDEM_SOURCE$]) +m4trace:configure.ac:41: -1- LT_INIT +m4trace:configure.ac:41: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$]) +m4trace:configure.ac:41: -1- LTOPTIONS_VERSION +m4trace:configure.ac:41: -1- LTSUGAR_VERSION +m4trace:configure.ac:41: -1- LTVERSION_VERSION +m4trace:configure.ac:41: -1- LTOBSOLETE_VERSION +m4trace:configure.ac:41: -1- _LT_PROG_LTMAIN +m4trace:configure.ac:41: -1- m4_pattern_allow([^LIBTOOL$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^build$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^build_cpu$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^build_vendor$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^build_os$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^host$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^host_cpu$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^host_vendor$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^host_os$]) +m4trace:configure.ac:41: -1- _LT_PREPARE_SED_QUOTE_VARS +m4trace:configure.ac:41: -1- _LT_PROG_ECHO_BACKSLASH +m4trace:configure.ac:41: -1- LT_PATH_LD +m4trace:configure.ac:41: -1- m4_pattern_allow([^SED$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^FGREP$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^GREP$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^LD$]) +m4trace:configure.ac:41: -1- LT_PATH_NM +m4trace:configure.ac:41: -1- m4_pattern_allow([^DUMPBIN$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^ac_ct_DUMPBIN$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^DUMPBIN$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^NM$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^LN_S$]) +m4trace:configure.ac:41: -1- LT_CMD_MAX_LEN +m4trace:configure.ac:41: -1- m4_pattern_allow([^OBJDUMP$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^OBJDUMP$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^DLLTOOL$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^DLLTOOL$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^ac_ct_AR$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:41: -1- _LT_WITH_SYSROOT +m4trace:configure.ac:41: -1- m4_pattern_allow([LT_OBJDIR]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^LT_OBJDIR$]) +m4trace:configure.ac:41: -1- _LT_CC_BASENAME([$compiler]) +m4trace:configure.ac:41: -1- _LT_PATH_TOOL_PREFIX([${ac_tool_prefix}file], [/usr/bin$PATH_SEPARATOR$PATH]) +m4trace:configure.ac:41: -1- _LT_PATH_TOOL_PREFIX([file], [/usr/bin$PATH_SEPARATOR$PATH]) +m4trace:configure.ac:41: -1- LT_SUPPORTED_TAG([CC]) +m4trace:configure.ac:41: -1- _LT_COMPILER_BOILERPLATE +m4trace:configure.ac:41: -1- _LT_LINKER_BOILERPLATE +m4trace:configure.ac:41: -1- _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], [lt_cv_prog_compiler_rtti_exceptions], [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, )="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, ) -fno-rtti -fno-exceptions"]) +m4trace:configure.ac:41: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, ) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, )], [$_LT_TAGVAR(lt_prog_compiler_pic, )@&t@m4_if([],[],[ -DPIC],[m4_if([],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, ) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, )=" $_LT_TAGVAR(lt_prog_compiler_pic, )" ;; + esac], [_LT_TAGVAR(lt_prog_compiler_pic, )= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, )=no]) +m4trace:configure.ac:41: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, )=]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^MANIFEST_TOOL$]) +m4trace:configure.ac:41: -1- _LT_REQUIRED_DARWIN_CHECKS +m4trace:configure.ac:41: -1- m4_pattern_allow([^DSYMUTIL$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^NMEDIT$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^LIPO$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^OTOOL$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^OTOOL64$]) +m4trace:configure.ac:41: -1- _LT_LINKER_OPTION([if $CC understands -b], [lt_cv_prog_compiler__b], [-b], [_LT_TAGVAR(archive_cmds, )='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, )='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags']) +m4trace:configure.ac:41: -1- LT_SYS_DLOPEN_SELF +m4trace:configure.ac:41: -1- m4_pattern_allow([^HAVE_DLFCN_H$]) +m4trace:configure.ac:47: -1- XORG_DEFAULT_OPTIONS +m4trace:configure.ac:47: -1- XORG_COMPILER_FLAGS +m4trace:configure.ac:47: -1- XORG_COMPILER_BRAND +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wall]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wpointer-arith]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-declarations]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wformat=2], [-Wformat]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wstrict-prototypes]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-prototypes]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wnested-externs]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wbad-function-cast]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wold-style-definition]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wdeclaration-after-statement]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wunused]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wuninitialized]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wshadow]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-qual]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-noreturn]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-format-attribute]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wredundant-decls]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=implicit], [-errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=nonnull]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=init-self]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=main]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=missing-braces]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=sequence-point]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=return-type], [-errwarn=E_FUNC_HAS_NO_RETURN_STMT]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=trigraphs]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=array-bounds]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=write-strings]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=address]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=int-to-pointer-cast], [-errwarn=E_BAD_PTR_INT_COMBINATION]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=pointer-to-int-cast]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wimplicit]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wnonnull]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Winit-self]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmain]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-braces]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wsequence-point]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wreturn-type]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wtrigraphs]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Warray-bounds]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wwrite-strings]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Waddress]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wint-to-pointer-cast]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wpointer-to-int-cast]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^BASE_CFLAGS$]) +m4trace:configure.ac:47: -1- XORG_CWARNFLAGS +m4trace:configure.ac:47: -1- m4_pattern_allow([^CWARNFLAGS$]) +m4trace:configure.ac:47: -1- XORG_STRICT_OPTION +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-pedantic]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-Werror], [-errwarn]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-Werror=attributes]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^STRICT_CFLAGS$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^BASE_CFLAGS$]) +m4trace:configure.ac:47: -2- m4_pattern_allow([^CWARNFLAGS$]) +m4trace:configure.ac:47: -1- XORG_RELEASE_VERSION +m4trace:configure.ac:47: -1- m4_pattern_allow([^PACKAGE_VERSION_MAJOR$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PACKAGE_VERSION_MINOR$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PACKAGE_VERSION_PATCHLEVEL$]) +m4trace:configure.ac:47: -1- XORG_CHANGELOG +m4trace:configure.ac:47: -1- m4_pattern_allow([^CHANGELOG_CMD$]) +m4trace:configure.ac:47: -1- XORG_INSTALL +m4trace:configure.ac:47: -1- PKG_PROG_PKG_CONFIG +m4trace:configure.ac:47: -1- m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PKG_CONFIG_PATH$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PKG_CONFIG_LIBDIR$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^INSTALL_CMD$]) +m4trace:configure.ac:47: -1- XORG_MANPAGE_SECTIONS +m4trace:configure.ac:47: -1- m4_pattern_allow([^APP_MAN_SUFFIX$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^LIB_MAN_SUFFIX$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^FILE_MAN_SUFFIX$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^MISC_MAN_SUFFIX$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^DRIVER_MAN_SUFFIX$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^ADMIN_MAN_SUFFIX$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^APP_MAN_DIR$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^LIB_MAN_DIR$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^FILE_MAN_DIR$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^MISC_MAN_DIR$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^DRIVER_MAN_DIR$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^ADMIN_MAN_DIR$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^XORG_MAN_PAGE$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^MAN_SUBSTS$]) +m4trace:configure.ac:47: -1- AM_SILENT_RULES([yes]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^AM_V$]) +m4trace:configure.ac:47: -1- AM_SUBST_NOTMAKE([AM_V]) +m4trace:configure.ac:47: -1- _AM_SUBST_NOTMAKE([AM_V]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^AM_DEFAULT_V$]) +m4trace:configure.ac:47: -1- AM_SUBST_NOTMAKE([AM_DEFAULT_V]) +m4trace:configure.ac:47: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^AM_BACKSLASH$]) +m4trace:configure.ac:47: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH]) +m4trace:configure.ac:48: -1- XORG_MEMORY_CHECK_FLAGS +m4trace:configure.ac:48: -1- m4_pattern_allow([^XORG_MALLOC_DEBUG_ENV$]) +m4trace:configure.ac:48: -1- m4_pattern_allow([^XORG_MALLOC_DEBUG_ENV$]) +m4trace:configure.ac:49: -1- XORG_ENABLE_DOCS +m4trace:configure.ac:49: -1- AM_CONDITIONAL([ENABLE_DOCS], [test x$build_docs = xyes]) +m4trace:configure.ac:49: -1- m4_pattern_allow([^ENABLE_DOCS_TRUE$]) +m4trace:configure.ac:49: -1- m4_pattern_allow([^ENABLE_DOCS_FALSE$]) +m4trace:configure.ac:49: -1- _AM_SUBST_NOTMAKE([ENABLE_DOCS_TRUE]) +m4trace:configure.ac:49: -1- _AM_SUBST_NOTMAKE([ENABLE_DOCS_FALSE]) +m4trace:configure.ac:50: -1- XORG_WITH_DOXYGEN +m4trace:configure.ac:50: -1- m4_pattern_allow([^DOXYGEN$]) +m4trace:configure.ac:50: -1- m4_pattern_allow([^DOXYGEN$]) +m4trace:configure.ac:50: -1- m4_pattern_allow([^DOXYGEN$]) +m4trace:configure.ac:50: -1- AM_CONDITIONAL([HAVE_DOXYGEN], [test "$have_doxygen" = yes]) +m4trace:configure.ac:50: -1- m4_pattern_allow([^HAVE_DOXYGEN_TRUE$]) +m4trace:configure.ac:50: -1- m4_pattern_allow([^HAVE_DOXYGEN_FALSE$]) +m4trace:configure.ac:50: -1- _AM_SUBST_NOTMAKE([HAVE_DOXYGEN_TRUE]) +m4trace:configure.ac:50: -1- _AM_SUBST_NOTMAKE([HAVE_DOXYGEN_FALSE]) +m4trace:configure.ac:53: -1- AM_PROG_CC_C_O +m4trace:configure.ac:60: -1- PKG_PROG_PKG_CONFIG +m4trace:configure.ac:60: -1- m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4trace:configure.ac:60: -1- m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4trace:configure.ac:60: -1- m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +m4trace:configure.ac:60: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:60: -1- m4_pattern_allow([^PKG_CONFIG_PATH$]) +m4trace:configure.ac:60: -1- m4_pattern_allow([^PKG_CONFIG_LIBDIR$]) +m4trace:configure.ac:60: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:64: -1- m4_pattern_allow([^YACC$]) +m4trace:configure.ac:64: -1- m4_pattern_allow([^YACC$]) +m4trace:configure.ac:64: -1- m4_pattern_allow([^YFLAGS$]) +m4trace:configure.ac:65: -1- m4_pattern_allow([^YACC_INST$]) +m4trace:configure.ac:85: -1- AX_GCC_BUILTIN([__builtin_expect]) +m4trace:configure.ac:85: -1- m4_pattern_allow([^HAVE___BUILTIN_EXPECT$]) +m4trace:configure.ac:89: -1- AM_CONDITIONAL([BUILD_LINUX_TESTS], [test "x$ac_cv_header_linux_input_h" = xyes]) +m4trace:configure.ac:89: -1- m4_pattern_allow([^BUILD_LINUX_TESTS_TRUE$]) +m4trace:configure.ac:89: -1- m4_pattern_allow([^BUILD_LINUX_TESTS_FALSE$]) +m4trace:configure.ac:89: -1- _AM_SUBST_NOTMAKE([BUILD_LINUX_TESTS_TRUE]) +m4trace:configure.ac:89: -1- _AM_SUBST_NOTMAKE([BUILD_LINUX_TESTS_FALSE]) +m4trace:configure.ac:91: -1- XORG_TESTSET_CFLAG([BASE_CFLAGS], [-fvisibility=hidden]) +m4trace:configure.ac:92: -1- XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wextra -Wno-unused-parameter -Wno-missing-field-initializers]) +m4trace:configure.ac:93: -1- XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wdocumentation]) +m4trace:configure.ac:101: -1- XORG_CHECK_LINKER_FLAGS([-Wl,--no-undefined], [have_no_undefined=yes]) +m4trace:configure.ac:104: -1- AM_CONDITIONAL([HAVE_NO_UNDEFINED], [test "x$have_no_undefined" = xyes]) +m4trace:configure.ac:104: -1- m4_pattern_allow([^HAVE_NO_UNDEFINED_TRUE$]) +m4trace:configure.ac:104: -1- m4_pattern_allow([^HAVE_NO_UNDEFINED_FALSE$]) +m4trace:configure.ac:104: -1- _AM_SUBST_NOTMAKE([HAVE_NO_UNDEFINED_TRUE]) +m4trace:configure.ac:104: -1- _AM_SUBST_NOTMAKE([HAVE_NO_UNDEFINED_FALSE]) +m4trace:configure.ac:106: -1- m4_pattern_allow([^RT_LIBS$]) +m4trace:configure.ac:106: -1- m4_pattern_allow([^RT_LIBS$]) +m4trace:configure.ac:121: -1- m4_pattern_allow([^XKBCONFIGROOT$]) +m4trace:configure.ac:129: -1- m4_pattern_allow([^XLOCALEDIR$]) +m4trace:configure.ac:136: -1- m4_pattern_allow([^DEFAULT_XKB_RULES$]) +m4trace:configure.ac:144: -1- m4_pattern_allow([^DEFAULT_XKB_MODEL$]) +m4trace:configure.ac:152: -1- m4_pattern_allow([^DEFAULT_XKB_LAYOUT$]) +m4trace:configure.ac:160: -1- m4_pattern_allow([^DEFAULT_XKB_VARIANT$]) +m4trace:configure.ac:170: -1- m4_pattern_allow([^DEFAULT_XKB_OPTIONS$]) +m4trace:configure.ac:179: -1- PKG_CHECK_MODULES([XCB_XKB], [xcb xcb-xkb >= 1.10], [], [AC_MSG_ERROR([xkbcommon-x11 requires xcb-xkb >= 1.10 which was not found. \ +You can disable X11 support with --disable-x11.])]) +m4trace:configure.ac:179: -1- m4_pattern_allow([^XCB_XKB_CFLAGS$]) +m4trace:configure.ac:179: -1- m4_pattern_allow([^XCB_XKB_LIBS$]) +m4trace:configure.ac:179: -1- PKG_CHECK_EXISTS([xcb xcb-xkb >= 1.10], [pkg_cv_[]XCB_XKB_CFLAGS=`$PKG_CONFIG --[]cflags "xcb xcb-xkb >= 1.10" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) +m4trace:configure.ac:179: -1- PKG_CHECK_EXISTS([xcb xcb-xkb >= 1.10], [pkg_cv_[]XCB_XKB_LIBS=`$PKG_CONFIG --[]libs "xcb xcb-xkb >= 1.10" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) +m4trace:configure.ac:179: -1- _PKG_SHORT_ERRORS_SUPPORTED +m4trace:configure.ac:184: -1- AM_CONDITIONAL([ENABLE_X11], [test "x$enable_x11" = xyes]) +m4trace:configure.ac:184: -1- m4_pattern_allow([^ENABLE_X11_TRUE$]) +m4trace:configure.ac:184: -1- m4_pattern_allow([^ENABLE_X11_FALSE$]) +m4trace:configure.ac:184: -1- _AM_SUBST_NOTMAKE([ENABLE_X11_TRUE]) +m4trace:configure.ac:184: -1- _AM_SUBST_NOTMAKE([ENABLE_X11_FALSE]) +m4trace:configure.ac:194: -1- m4_pattern_allow([^LIB@&t@OBJS$]) +m4trace:configure.ac:194: -1- m4_pattern_allow([^LTLIBOBJS$]) +m4trace:configure.ac:194: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) +m4trace:configure.ac:194: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) +m4trace:configure.ac:194: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) +m4trace:configure.ac:194: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) +m4trace:configure.ac:194: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) +m4trace:configure.ac:194: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"]) +m4trace:configure.ac:194: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS +m4trace:configure.ac:194: -1- _LT_PROG_LTMAIN diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/traces.1 b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/traces.1 new file mode 100644 index 0000000..e8207a0 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/traces.1 @@ -0,0 +1,832 @@ +m4trace:aclocal.m4:3199: -1- m4_include([m4/ax_gcc_builtin.m4]) +m4trace:aclocal.m4:3200: -1- m4_include([m4/libtool.m4]) +m4trace:aclocal.m4:3201: -1- m4_include([m4/ltoptions.m4]) +m4trace:aclocal.m4:3202: -1- m4_include([m4/ltsugar.m4]) +m4trace:aclocal.m4:3203: -1- m4_include([m4/ltversion.m4]) +m4trace:aclocal.m4:3204: -1- m4_include([m4/lt~obsolete.m4]) +m4trace:configure.ac:25: -1- AC_INIT([libxkbcommon], [0.5.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=libxkbcommon], [libxkbcommon], [http://xkbcommon.org]) +m4trace:configure.ac:25: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.ac:25: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.ac:25: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) +m4trace:configure.ac:25: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.ac:25: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.ac:25: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.ac:25: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.ac:25: -1- AC_SUBST([SHELL]) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([SHELL]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^SHELL$]) +m4trace:configure.ac:25: -1- AC_SUBST([PATH_SEPARATOR]) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PATH_SEPARATOR$]) +m4trace:configure.ac:25: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([PACKAGE_NAME]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:25: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:25: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:25: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([PACKAGE_STRING]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:25: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:25: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])]) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([PACKAGE_URL]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:25: -1- AC_SUBST([exec_prefix], [NONE]) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([exec_prefix]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^exec_prefix$]) +m4trace:configure.ac:25: -1- AC_SUBST([prefix], [NONE]) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([prefix]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^prefix$]) +m4trace:configure.ac:25: -1- AC_SUBST([program_transform_name], [s,x,x,]) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([program_transform_name]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^program_transform_name$]) +m4trace:configure.ac:25: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([bindir]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^bindir$]) +m4trace:configure.ac:25: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([sbindir]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^sbindir$]) +m4trace:configure.ac:25: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([libexecdir]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^libexecdir$]) +m4trace:configure.ac:25: -1- AC_SUBST([datarootdir], ['${prefix}/share']) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([datarootdir]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^datarootdir$]) +m4trace:configure.ac:25: -1- AC_SUBST([datadir], ['${datarootdir}']) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([datadir]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^datadir$]) +m4trace:configure.ac:25: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([sysconfdir]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^sysconfdir$]) +m4trace:configure.ac:25: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([sharedstatedir]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^sharedstatedir$]) +m4trace:configure.ac:25: -1- AC_SUBST([localstatedir], ['${prefix}/var']) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([localstatedir]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^localstatedir$]) +m4trace:configure.ac:25: -1- AC_SUBST([includedir], ['${prefix}/include']) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([includedir]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^includedir$]) +m4trace:configure.ac:25: -1- AC_SUBST([oldincludedir], ['/usr/include']) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([oldincludedir]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^oldincludedir$]) +m4trace:configure.ac:25: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], + ['${datarootdir}/doc/${PACKAGE_TARNAME}'], + ['${datarootdir}/doc/${PACKAGE}'])]) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([docdir]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^docdir$]) +m4trace:configure.ac:25: -1- AC_SUBST([infodir], ['${datarootdir}/info']) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([infodir]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^infodir$]) +m4trace:configure.ac:25: -1- AC_SUBST([htmldir], ['${docdir}']) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([htmldir]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^htmldir$]) +m4trace:configure.ac:25: -1- AC_SUBST([dvidir], ['${docdir}']) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([dvidir]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^dvidir$]) +m4trace:configure.ac:25: -1- AC_SUBST([pdfdir], ['${docdir}']) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([pdfdir]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^pdfdir$]) +m4trace:configure.ac:25: -1- AC_SUBST([psdir], ['${docdir}']) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([psdir]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^psdir$]) +m4trace:configure.ac:25: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([libdir]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^libdir$]) +m4trace:configure.ac:25: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([localedir]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:25: -1- AC_SUBST([mandir], ['${datarootdir}/man']) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([mandir]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^mandir$]) +m4trace:configure.ac:25: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:25: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ +@%:@undef PACKAGE_NAME]) +m4trace:configure.ac:25: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:25: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ +@%:@undef PACKAGE_TARNAME]) +m4trace:configure.ac:25: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:25: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ +@%:@undef PACKAGE_VERSION]) +m4trace:configure.ac:25: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:25: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ +@%:@undef PACKAGE_STRING]) +m4trace:configure.ac:25: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:25: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ +@%:@undef PACKAGE_BUGREPORT]) +m4trace:configure.ac:25: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:25: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */ +@%:@undef PACKAGE_URL]) +m4trace:configure.ac:25: -1- AC_SUBST([DEFS]) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([DEFS]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^DEFS$]) +m4trace:configure.ac:25: -1- AC_SUBST([ECHO_C]) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([ECHO_C]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^ECHO_C$]) +m4trace:configure.ac:25: -1- AC_SUBST([ECHO_N]) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([ECHO_N]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^ECHO_N$]) +m4trace:configure.ac:25: -1- AC_SUBST([ECHO_T]) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([ECHO_T]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^ECHO_T$]) +m4trace:configure.ac:25: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:25: -1- AC_SUBST([build_alias]) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([build_alias]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^build_alias$]) +m4trace:configure.ac:25: -1- AC_SUBST([host_alias]) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([host_alias]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^host_alias$]) +m4trace:configure.ac:25: -1- AC_SUBST([target_alias]) +m4trace:configure.ac:25: -1- AC_SUBST_TRACE([target_alias]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^target_alias$]) +m4trace:configure.ac:29: -1- AC_CONFIG_HEADERS([src/config.h]) +m4trace:configure.ac:31: -1- AC_CONFIG_AUX_DIR([build-aux]) +m4trace:configure.ac:34: -1- AM_INIT_AUTOMAKE([foreign dist-xz no-dist-gzip subdir-objects color-tests parallel-tests check-news]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) +m4trace:configure.ac:34: -1- AM_AUTOMAKE_VERSION([1.14.1]) +m4trace:configure.ac:34: -1- AC_REQUIRE_AUX_FILE([install-sh]) +m4trace:configure.ac:34: -1- AC_SUBST([INSTALL_PROGRAM]) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) +m4trace:configure.ac:34: -1- AC_SUBST([INSTALL_SCRIPT]) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) +m4trace:configure.ac:34: -1- AC_SUBST([INSTALL_DATA]) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([INSTALL_DATA]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^INSTALL_DATA$]) +m4trace:configure.ac:34: -1- AC_SUBST([am__isrc], [' -I$(srcdir)']) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([am__isrc]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^am__isrc$]) +m4trace:configure.ac:34: -1- _AM_SUBST_NOTMAKE([am__isrc]) +m4trace:configure.ac:34: -1- AC_SUBST([CYGPATH_W]) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([CYGPATH_W]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^CYGPATH_W$]) +m4trace:configure.ac:34: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME']) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([PACKAGE]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:34: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION']) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([VERSION]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:34: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:34: -1- AH_OUTPUT([PACKAGE], [/* Name of package */ +@%:@undef PACKAGE]) +m4trace:configure.ac:34: -1- AC_DEFINE_TRACE_LITERAL([VERSION]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:34: -1- AH_OUTPUT([VERSION], [/* Version number of package */ +@%:@undef VERSION]) +m4trace:configure.ac:34: -1- AC_REQUIRE_AUX_FILE([missing]) +m4trace:configure.ac:34: -1- AC_SUBST([ACLOCAL]) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([ACLOCAL]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^ACLOCAL$]) +m4trace:configure.ac:34: -1- AC_SUBST([AUTOCONF]) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([AUTOCONF]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AUTOCONF$]) +m4trace:configure.ac:34: -1- AC_SUBST([AUTOMAKE]) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([AUTOMAKE]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AUTOMAKE$]) +m4trace:configure.ac:34: -1- AC_SUBST([AUTOHEADER]) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([AUTOHEADER]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AUTOHEADER$]) +m4trace:configure.ac:34: -1- AC_SUBST([MAKEINFO]) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([MAKEINFO]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^MAKEINFO$]) +m4trace:configure.ac:34: -1- AC_SUBST([install_sh]) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([install_sh]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^install_sh$]) +m4trace:configure.ac:34: -1- AC_SUBST([STRIP]) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([STRIP]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:34: -1- AC_SUBST([INSTALL_STRIP_PROGRAM]) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) +m4trace:configure.ac:34: -1- AC_REQUIRE_AUX_FILE([install-sh]) +m4trace:configure.ac:34: -1- AC_SUBST([MKDIR_P]) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([MKDIR_P]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^MKDIR_P$]) +m4trace:configure.ac:34: -1- AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([mkdir_p]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^mkdir_p$]) +m4trace:configure.ac:34: -1- AC_SUBST([AWK]) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([AWK]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AWK$]) +m4trace:configure.ac:34: -1- AC_SUBST([SET_MAKE]) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([SET_MAKE]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^SET_MAKE$]) +m4trace:configure.ac:34: -1- AC_SUBST([am__leading_dot]) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([am__leading_dot]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^am__leading_dot$]) +m4trace:configure.ac:34: -1- AC_SUBST([AMTAR], ['$${TAR-tar}']) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([AMTAR]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AMTAR$]) +m4trace:configure.ac:34: -1- AC_SUBST([am__tar]) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([am__tar]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^am__tar$]) +m4trace:configure.ac:34: -1- AC_SUBST([am__untar]) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([am__untar]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^am__untar$]) +m4trace:configure.ac:34: -1- AM_SILENT_RULES +m4trace:configure.ac:34: -1- AC_SUBST([AM_V]) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([AM_V]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AM_V$]) +m4trace:configure.ac:34: -1- _AM_SUBST_NOTMAKE([AM_V]) +m4trace:configure.ac:34: -1- AC_SUBST([AM_DEFAULT_V]) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([AM_DEFAULT_V]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AM_DEFAULT_V$]) +m4trace:configure.ac:34: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V]) +m4trace:configure.ac:34: -1- AC_SUBST([AM_DEFAULT_VERBOSITY]) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$]) +m4trace:configure.ac:34: -1- AC_SUBST([AM_BACKSLASH]) +m4trace:configure.ac:34: -1- AC_SUBST_TRACE([AM_BACKSLASH]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AM_BACKSLASH$]) +m4trace:configure.ac:34: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH]) +m4trace:configure.ac:35: -1- AM_MAINTAINER_MODE([enable]) +m4trace:configure.ac:35: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) +m4trace:configure.ac:35: -1- AC_SUBST([MAINTAINER_MODE_TRUE]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([MAINTAINER_MODE_TRUE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MAINTAINER_MODE_TRUE$]) +m4trace:configure.ac:35: -1- AC_SUBST([MAINTAINER_MODE_FALSE]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([MAINTAINER_MODE_FALSE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MAINTAINER_MODE_FALSE$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_TRUE]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_FALSE]) +m4trace:configure.ac:35: -1- AC_SUBST([MAINT]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([MAINT]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MAINT$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CFLAGS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CFLAGS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CFLAGS$]) +m4trace:configure.ac:38: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:38: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:38: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([ac_ct_CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^ac_ct_CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([EXEEXT]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^EXEEXT$]) +m4trace:configure.ac:38: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([OBJEXT]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^OBJEXT$]) +m4trace:configure.ac:38: -1- AC_REQUIRE_AUX_FILE([compile]) +m4trace:configure.ac:38: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([DEPDIR]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^DEPDIR$]) +m4trace:configure.ac:38: -1- AC_SUBST([am__include]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__include]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__include$]) +m4trace:configure.ac:38: -1- AC_SUBST([am__quote]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__quote]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__quote$]) +m4trace:configure.ac:38: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +m4trace:configure.ac:38: -1- AC_SUBST([AMDEP_TRUE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([AMDEP_TRUE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEP_TRUE$]) +m4trace:configure.ac:38: -1- AC_SUBST([AMDEP_FALSE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([AMDEP_FALSE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEP_FALSE$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) +m4trace:configure.ac:38: -1- AC_SUBST([AMDEPBACKSLASH]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([AMDEPBACKSLASH]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) +m4trace:configure.ac:38: -1- AC_SUBST([am__nodep]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__nodep]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__nodep$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__nodep]) +m4trace:configure.ac:38: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CCDEPMODE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CCDEPMODE$]) +m4trace:configure.ac:38: -1- AM_CONDITIONAL([am__fastdepCC], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) +m4trace:configure.ac:38: -1- AC_SUBST([am__fastdepCC_TRUE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) +m4trace:configure.ac:38: -1- AC_SUBST([am__fastdepCC_FALSE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) +m4trace:configure.ac:38: -1- AC_SUBST([CPP]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:38: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:38: -1- AC_SUBST([CPP]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:38: -1- AC_SUBST([GREP]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([GREP]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^GREP$]) +m4trace:configure.ac:38: -1- AC_SUBST([EGREP]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([EGREP]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^EGREP$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^STDC_HEADERS$]) +m4trace:configure.ac:38: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ +@%:@undef STDC_HEADERS]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_TYPES_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_STAT_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDLIB_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRING_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_MEMORY_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRINGS_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_INTTYPES_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDINT_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_UNISTD_H]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_SOURCE$]) +m4trace:configure.ac:38: -1- AH_OUTPUT([_POSIX_SOURCE], [/* Define to 1 if you need to in order for `stat\' and other things to work. */ +@%:@undef _POSIX_SOURCE]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_1_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_1_SOURCE$]) +m4trace:configure.ac:38: -1- AH_OUTPUT([_POSIX_1_SOURCE], [/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +@%:@undef _POSIX_1_SOURCE]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_MINIX]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_MINIX$]) +m4trace:configure.ac:38: -1- AH_OUTPUT([_MINIX], [/* Define to 1 if on MINIX. */ +@%:@undef _MINIX]) +m4trace:configure.ac:38: -1- AH_OUTPUT([USE_SYSTEM_EXTENSIONS], [/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# undef _GNU_SOURCE +#endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# undef _POSIX_PTHREAD_SEMANTICS +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif +]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__EXTENSIONS__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__EXTENSIONS__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_ALL_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_ALL_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_GNU_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_PTHREAD_SEMANTICS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_PTHREAD_SEMANTICS$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_TANDEM_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_TANDEM_SOURCE$]) +m4trace:configure.ac:41: -1- LT_INIT +m4trace:configure.ac:41: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$]) +m4trace:configure.ac:41: -1- AC_REQUIRE_AUX_FILE([ltmain.sh]) +m4trace:configure.ac:41: -1- AC_SUBST([LIBTOOL]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([LIBTOOL]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^LIBTOOL$]) +m4trace:configure.ac:41: -1- AC_CANONICAL_HOST +m4trace:configure.ac:41: -1- AC_CANONICAL_BUILD +m4trace:configure.ac:41: -1- AC_REQUIRE_AUX_FILE([config.sub]) +m4trace:configure.ac:41: -1- AC_REQUIRE_AUX_FILE([config.guess]) +m4trace:configure.ac:41: -1- AC_SUBST([build], [$ac_cv_build]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([build]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^build$]) +m4trace:configure.ac:41: -1- AC_SUBST([build_cpu], [$[1]]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([build_cpu]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^build_cpu$]) +m4trace:configure.ac:41: -1- AC_SUBST([build_vendor], [$[2]]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([build_vendor]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^build_vendor$]) +m4trace:configure.ac:41: -1- AC_SUBST([build_os]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([build_os]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^build_os$]) +m4trace:configure.ac:41: -1- AC_SUBST([host], [$ac_cv_host]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([host]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^host$]) +m4trace:configure.ac:41: -1- AC_SUBST([host_cpu], [$[1]]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([host_cpu]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^host_cpu$]) +m4trace:configure.ac:41: -1- AC_SUBST([host_vendor], [$[2]]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([host_vendor]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^host_vendor$]) +m4trace:configure.ac:41: -1- AC_SUBST([host_os]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([host_os]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^host_os$]) +m4trace:configure.ac:41: -1- AC_SUBST([SED]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([SED]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^SED$]) +m4trace:configure.ac:41: -1- AC_SUBST([FGREP]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([FGREP]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^FGREP$]) +m4trace:configure.ac:41: -1- AC_SUBST([GREP]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([GREP]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^GREP$]) +m4trace:configure.ac:41: -1- AC_SUBST([LD]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([LD]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^LD$]) +m4trace:configure.ac:41: -1- AC_SUBST([DUMPBIN]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([DUMPBIN]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^DUMPBIN$]) +m4trace:configure.ac:41: -1- AC_SUBST([ac_ct_DUMPBIN]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([ac_ct_DUMPBIN]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^ac_ct_DUMPBIN$]) +m4trace:configure.ac:41: -1- AC_SUBST([DUMPBIN]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([DUMPBIN]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^DUMPBIN$]) +m4trace:configure.ac:41: -1- AC_SUBST([NM]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([NM]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^NM$]) +m4trace:configure.ac:41: -1- AC_SUBST([LN_S], [$as_ln_s]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([LN_S]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^LN_S$]) +m4trace:configure.ac:41: -1- AC_SUBST([OBJDUMP]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([OBJDUMP]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^OBJDUMP$]) +m4trace:configure.ac:41: -1- AC_SUBST([OBJDUMP]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([OBJDUMP]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^OBJDUMP$]) +m4trace:configure.ac:41: -1- AC_SUBST([DLLTOOL]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([DLLTOOL]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^DLLTOOL$]) +m4trace:configure.ac:41: -1- AC_SUBST([DLLTOOL]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([DLLTOOL]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^DLLTOOL$]) +m4trace:configure.ac:41: -1- AC_SUBST([AR]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([AR]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:41: -1- AC_SUBST([ac_ct_AR]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([ac_ct_AR]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^ac_ct_AR$]) +m4trace:configure.ac:41: -1- AC_SUBST([STRIP]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([STRIP]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:41: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([RANLIB]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([LT_OBJDIR]) +m4trace:configure.ac:41: -1- AC_DEFINE_TRACE_LITERAL([LT_OBJDIR]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^LT_OBJDIR$]) +m4trace:configure.ac:41: -1- AH_OUTPUT([LT_OBJDIR], [/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +@%:@undef LT_OBJDIR]) +m4trace:configure.ac:41: -1- LT_SUPPORTED_TAG([CC]) +m4trace:configure.ac:41: -1- AC_SUBST([MANIFEST_TOOL]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([MANIFEST_TOOL]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^MANIFEST_TOOL$]) +m4trace:configure.ac:41: -1- AC_SUBST([DSYMUTIL]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([DSYMUTIL]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^DSYMUTIL$]) +m4trace:configure.ac:41: -1- AC_SUBST([NMEDIT]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([NMEDIT]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^NMEDIT$]) +m4trace:configure.ac:41: -1- AC_SUBST([LIPO]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([LIPO]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^LIPO$]) +m4trace:configure.ac:41: -1- AC_SUBST([OTOOL]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([OTOOL]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^OTOOL$]) +m4trace:configure.ac:41: -1- AC_SUBST([OTOOL64]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([OTOOL64]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^OTOOL64$]) +m4trace:configure.ac:41: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_DLFCN_H]) +m4trace:configure.ac:41: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DLFCN_H]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^HAVE_DLFCN_H$]) +m4trace:configure.ac:47: -1- AC_SUBST([BASE_CFLAGS]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([BASE_CFLAGS]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^BASE_CFLAGS$]) +m4trace:configure.ac:47: -1- AC_SUBST([CWARNFLAGS]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([CWARNFLAGS]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CWARNFLAGS$]) +m4trace:configure.ac:47: -1- AC_SUBST([STRICT_CFLAGS]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([STRICT_CFLAGS]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^STRICT_CFLAGS$]) +m4trace:configure.ac:47: -1- AC_SUBST([BASE_CFLAGS]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([BASE_CFLAGS]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^BASE_CFLAGS$]) +m4trace:configure.ac:47: -2- AC_SUBST([CWARNFLAGS]) +m4trace:configure.ac:47: -2- AC_SUBST_TRACE([CWARNFLAGS]) +m4trace:configure.ac:47: -2- m4_pattern_allow([^CWARNFLAGS$]) +m4trace:configure.ac:47: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION_MAJOR]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PACKAGE_VERSION_MAJOR$]) +m4trace:configure.ac:47: -1- AH_OUTPUT([PACKAGE_VERSION_MAJOR], [/* Major version of this package */ +@%:@undef PACKAGE_VERSION_MAJOR]) +m4trace:configure.ac:47: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION_MINOR]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PACKAGE_VERSION_MINOR$]) +m4trace:configure.ac:47: -1- AH_OUTPUT([PACKAGE_VERSION_MINOR], [/* Minor version of this package */ +@%:@undef PACKAGE_VERSION_MINOR]) +m4trace:configure.ac:47: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION_PATCHLEVEL]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PACKAGE_VERSION_PATCHLEVEL$]) +m4trace:configure.ac:47: -1- AH_OUTPUT([PACKAGE_VERSION_PATCHLEVEL], [/* Patch version of this package */ +@%:@undef PACKAGE_VERSION_PATCHLEVEL]) +m4trace:configure.ac:47: -1- AC_SUBST([CHANGELOG_CMD]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([CHANGELOG_CMD]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CHANGELOG_CMD$]) +m4trace:configure.ac:47: -1- m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +m4trace:configure.ac:47: -1- AC_SUBST([PKG_CONFIG]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([PKG_CONFIG]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:47: -1- AC_SUBST([PKG_CONFIG_PATH]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([PKG_CONFIG_PATH]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PKG_CONFIG_PATH$]) +m4trace:configure.ac:47: -1- AC_SUBST([PKG_CONFIG_LIBDIR]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([PKG_CONFIG_LIBDIR]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PKG_CONFIG_LIBDIR$]) +m4trace:configure.ac:47: -1- AC_SUBST([PKG_CONFIG]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([PKG_CONFIG]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:47: -1- AC_SUBST([INSTALL_CMD]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([INSTALL_CMD]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^INSTALL_CMD$]) +m4trace:configure.ac:47: -1- AC_SUBST([APP_MAN_SUFFIX]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([APP_MAN_SUFFIX]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^APP_MAN_SUFFIX$]) +m4trace:configure.ac:47: -1- AC_SUBST([LIB_MAN_SUFFIX]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([LIB_MAN_SUFFIX]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^LIB_MAN_SUFFIX$]) +m4trace:configure.ac:47: -1- AC_SUBST([FILE_MAN_SUFFIX]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([FILE_MAN_SUFFIX]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^FILE_MAN_SUFFIX$]) +m4trace:configure.ac:47: -1- AC_SUBST([MISC_MAN_SUFFIX]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([MISC_MAN_SUFFIX]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^MISC_MAN_SUFFIX$]) +m4trace:configure.ac:47: -1- AC_SUBST([DRIVER_MAN_SUFFIX]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([DRIVER_MAN_SUFFIX]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^DRIVER_MAN_SUFFIX$]) +m4trace:configure.ac:47: -1- AC_SUBST([ADMIN_MAN_SUFFIX]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([ADMIN_MAN_SUFFIX]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^ADMIN_MAN_SUFFIX$]) +m4trace:configure.ac:47: -1- AC_SUBST([APP_MAN_DIR]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([APP_MAN_DIR]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^APP_MAN_DIR$]) +m4trace:configure.ac:47: -1- AC_SUBST([LIB_MAN_DIR]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([LIB_MAN_DIR]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^LIB_MAN_DIR$]) +m4trace:configure.ac:47: -1- AC_SUBST([FILE_MAN_DIR]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([FILE_MAN_DIR]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^FILE_MAN_DIR$]) +m4trace:configure.ac:47: -1- AC_SUBST([MISC_MAN_DIR]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([MISC_MAN_DIR]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^MISC_MAN_DIR$]) +m4trace:configure.ac:47: -1- AC_SUBST([DRIVER_MAN_DIR]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([DRIVER_MAN_DIR]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^DRIVER_MAN_DIR$]) +m4trace:configure.ac:47: -1- AC_SUBST([ADMIN_MAN_DIR]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([ADMIN_MAN_DIR]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^ADMIN_MAN_DIR$]) +m4trace:configure.ac:47: -1- AC_SUBST([XORG_MAN_PAGE]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([XORG_MAN_PAGE]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^XORG_MAN_PAGE$]) +m4trace:configure.ac:47: -1- AC_SUBST([MAN_SUBSTS]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([MAN_SUBSTS]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^MAN_SUBSTS$]) +m4trace:configure.ac:47: -1- AM_SILENT_RULES([yes]) +m4trace:configure.ac:47: -1- AC_SUBST([AM_V]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([AM_V]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^AM_V$]) +m4trace:configure.ac:47: -1- _AM_SUBST_NOTMAKE([AM_V]) +m4trace:configure.ac:47: -1- AC_SUBST([AM_DEFAULT_V]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([AM_DEFAULT_V]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^AM_DEFAULT_V$]) +m4trace:configure.ac:47: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V]) +m4trace:configure.ac:47: -1- AC_SUBST([AM_DEFAULT_VERBOSITY]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$]) +m4trace:configure.ac:47: -1- AC_SUBST([AM_BACKSLASH]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([AM_BACKSLASH]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^AM_BACKSLASH$]) +m4trace:configure.ac:47: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH]) +m4trace:configure.ac:48: -1- AC_SUBST([XORG_MALLOC_DEBUG_ENV]) +m4trace:configure.ac:48: -1- AC_SUBST_TRACE([XORG_MALLOC_DEBUG_ENV]) +m4trace:configure.ac:48: -1- m4_pattern_allow([^XORG_MALLOC_DEBUG_ENV$]) +m4trace:configure.ac:48: -1- AC_SUBST([XORG_MALLOC_DEBUG_ENV], [$malloc_debug_env]) +m4trace:configure.ac:48: -1- AC_SUBST_TRACE([XORG_MALLOC_DEBUG_ENV]) +m4trace:configure.ac:48: -1- m4_pattern_allow([^XORG_MALLOC_DEBUG_ENV$]) +m4trace:configure.ac:49: -1- AM_CONDITIONAL([ENABLE_DOCS], [test x$build_docs = xyes]) +m4trace:configure.ac:49: -1- AC_SUBST([ENABLE_DOCS_TRUE]) +m4trace:configure.ac:49: -1- AC_SUBST_TRACE([ENABLE_DOCS_TRUE]) +m4trace:configure.ac:49: -1- m4_pattern_allow([^ENABLE_DOCS_TRUE$]) +m4trace:configure.ac:49: -1- AC_SUBST([ENABLE_DOCS_FALSE]) +m4trace:configure.ac:49: -1- AC_SUBST_TRACE([ENABLE_DOCS_FALSE]) +m4trace:configure.ac:49: -1- m4_pattern_allow([^ENABLE_DOCS_FALSE$]) +m4trace:configure.ac:49: -1- _AM_SUBST_NOTMAKE([ENABLE_DOCS_TRUE]) +m4trace:configure.ac:49: -1- _AM_SUBST_NOTMAKE([ENABLE_DOCS_FALSE]) +m4trace:configure.ac:50: -1- AC_SUBST([DOXYGEN]) +m4trace:configure.ac:50: -1- AC_SUBST_TRACE([DOXYGEN]) +m4trace:configure.ac:50: -1- m4_pattern_allow([^DOXYGEN$]) +m4trace:configure.ac:50: -1- AC_SUBST([DOXYGEN]) +m4trace:configure.ac:50: -1- AC_SUBST_TRACE([DOXYGEN]) +m4trace:configure.ac:50: -1- m4_pattern_allow([^DOXYGEN$]) +m4trace:configure.ac:50: -1- AC_SUBST([DOXYGEN]) +m4trace:configure.ac:50: -1- AC_SUBST_TRACE([DOXYGEN]) +m4trace:configure.ac:50: -1- m4_pattern_allow([^DOXYGEN$]) +m4trace:configure.ac:50: -1- AM_CONDITIONAL([HAVE_DOXYGEN], [test "$have_doxygen" = yes]) +m4trace:configure.ac:50: -1- AC_SUBST([HAVE_DOXYGEN_TRUE]) +m4trace:configure.ac:50: -1- AC_SUBST_TRACE([HAVE_DOXYGEN_TRUE]) +m4trace:configure.ac:50: -1- m4_pattern_allow([^HAVE_DOXYGEN_TRUE$]) +m4trace:configure.ac:50: -1- AC_SUBST([HAVE_DOXYGEN_FALSE]) +m4trace:configure.ac:50: -1- AC_SUBST_TRACE([HAVE_DOXYGEN_FALSE]) +m4trace:configure.ac:50: -1- m4_pattern_allow([^HAVE_DOXYGEN_FALSE$]) +m4trace:configure.ac:50: -1- _AM_SUBST_NOTMAKE([HAVE_DOXYGEN_TRUE]) +m4trace:configure.ac:50: -1- _AM_SUBST_NOTMAKE([HAVE_DOXYGEN_FALSE]) +m4trace:configure.ac:53: -1- AM_PROG_CC_C_O +m4trace:configure.ac:56: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler + calls it, or to nothing if \'inline\' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif]) +m4trace:configure.ac:60: -1- m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4trace:configure.ac:60: -1- m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4trace:configure.ac:60: -1- m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +m4trace:configure.ac:60: -1- AC_SUBST([PKG_CONFIG]) +m4trace:configure.ac:60: -1- AC_SUBST_TRACE([PKG_CONFIG]) +m4trace:configure.ac:60: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:60: -1- AC_SUBST([PKG_CONFIG_PATH]) +m4trace:configure.ac:60: -1- AC_SUBST_TRACE([PKG_CONFIG_PATH]) +m4trace:configure.ac:60: -1- m4_pattern_allow([^PKG_CONFIG_PATH$]) +m4trace:configure.ac:60: -1- AC_SUBST([PKG_CONFIG_LIBDIR]) +m4trace:configure.ac:60: -1- AC_SUBST_TRACE([PKG_CONFIG_LIBDIR]) +m4trace:configure.ac:60: -1- m4_pattern_allow([^PKG_CONFIG_LIBDIR$]) +m4trace:configure.ac:60: -1- AC_SUBST([PKG_CONFIG]) +m4trace:configure.ac:60: -1- AC_SUBST_TRACE([PKG_CONFIG]) +m4trace:configure.ac:60: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:64: -1- AC_SUBST([YACC]) +m4trace:configure.ac:64: -1- AC_SUBST_TRACE([YACC]) +m4trace:configure.ac:64: -1- m4_pattern_allow([^YACC$]) +m4trace:configure.ac:64: -1- AC_SUBST([YACC]) +m4trace:configure.ac:64: -1- AC_SUBST_TRACE([YACC]) +m4trace:configure.ac:64: -1- m4_pattern_allow([^YACC$]) +m4trace:configure.ac:64: -1- AC_SUBST([YFLAGS]) +m4trace:configure.ac:64: -1- AC_SUBST_TRACE([YFLAGS]) +m4trace:configure.ac:64: -1- m4_pattern_allow([^YFLAGS$]) +m4trace:configure.ac:65: -1- AC_SUBST([YACC_INST]) +m4trace:configure.ac:65: -1- AC_SUBST_TRACE([YACC_INST]) +m4trace:configure.ac:65: -1- m4_pattern_allow([^YACC_INST$]) +m4trace:configure.ac:71: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */ +@%:@undef HAVE_STRCASECMP]) +m4trace:configure.ac:71: -1- AH_OUTPUT([HAVE_STRNCASECMP], [/* Define to 1 if you have the `strncasecmp\' function. */ +@%:@undef HAVE_STRNCASECMP]) +m4trace:configure.ac:77: -1- AH_OUTPUT([HAVE_EACCESS], [/* Define to 1 if you have the `eaccess\' function. */ +@%:@undef HAVE_EACCESS]) +m4trace:configure.ac:77: -1- AH_OUTPUT([HAVE_EUIDACCESS], [/* Define to 1 if you have the `euidaccess\' function. */ +@%:@undef HAVE_EUIDACCESS]) +m4trace:configure.ac:77: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have the `mmap\' function. */ +@%:@undef HAVE_MMAP]) +m4trace:configure.ac:79: -1- AH_OUTPUT([HAVE_SECURE_GETENV], [/* Define to 1 if you have the `secure_getenv\' function. */ +@%:@undef HAVE_SECURE_GETENV]) +m4trace:configure.ac:79: -1- AH_OUTPUT([HAVE___SECURE_GETENV], [/* Define to 1 if you have the `__secure_getenv\' function. */ +@%:@undef HAVE___SECURE_GETENV]) +m4trace:configure.ac:85: -1- AC_DEFINE_TRACE_LITERAL([HAVE___BUILTIN_EXPECT]) +m4trace:configure.ac:85: -1- m4_pattern_allow([^HAVE___BUILTIN_EXPECT$]) +m4trace:configure.ac:85: -1- AH_OUTPUT([HAVE___BUILTIN_EXPECT], [/* Define to 1 if the system has the `__builtin_expect\' built-in function */ +@%:@undef HAVE___BUILTIN_EXPECT]) +m4trace:configure.ac:89: -1- AM_CONDITIONAL([BUILD_LINUX_TESTS], [test "x$ac_cv_header_linux_input_h" = xyes]) +m4trace:configure.ac:89: -1- AC_SUBST([BUILD_LINUX_TESTS_TRUE]) +m4trace:configure.ac:89: -1- AC_SUBST_TRACE([BUILD_LINUX_TESTS_TRUE]) +m4trace:configure.ac:89: -1- m4_pattern_allow([^BUILD_LINUX_TESTS_TRUE$]) +m4trace:configure.ac:89: -1- AC_SUBST([BUILD_LINUX_TESTS_FALSE]) +m4trace:configure.ac:89: -1- AC_SUBST_TRACE([BUILD_LINUX_TESTS_FALSE]) +m4trace:configure.ac:89: -1- m4_pattern_allow([^BUILD_LINUX_TESTS_FALSE$]) +m4trace:configure.ac:89: -1- _AM_SUBST_NOTMAKE([BUILD_LINUX_TESTS_TRUE]) +m4trace:configure.ac:89: -1- _AM_SUBST_NOTMAKE([BUILD_LINUX_TESTS_FALSE]) +m4trace:configure.ac:104: -1- AM_CONDITIONAL([HAVE_NO_UNDEFINED], [test "x$have_no_undefined" = xyes]) +m4trace:configure.ac:104: -1- AC_SUBST([HAVE_NO_UNDEFINED_TRUE]) +m4trace:configure.ac:104: -1- AC_SUBST_TRACE([HAVE_NO_UNDEFINED_TRUE]) +m4trace:configure.ac:104: -1- m4_pattern_allow([^HAVE_NO_UNDEFINED_TRUE$]) +m4trace:configure.ac:104: -1- AC_SUBST([HAVE_NO_UNDEFINED_FALSE]) +m4trace:configure.ac:104: -1- AC_SUBST_TRACE([HAVE_NO_UNDEFINED_FALSE]) +m4trace:configure.ac:104: -1- m4_pattern_allow([^HAVE_NO_UNDEFINED_FALSE$]) +m4trace:configure.ac:104: -1- _AM_SUBST_NOTMAKE([HAVE_NO_UNDEFINED_TRUE]) +m4trace:configure.ac:104: -1- _AM_SUBST_NOTMAKE([HAVE_NO_UNDEFINED_FALSE]) +m4trace:configure.ac:106: -1- AC_SUBST([RT_LIBS], ["-lrt"]) +m4trace:configure.ac:106: -1- AC_SUBST_TRACE([RT_LIBS]) +m4trace:configure.ac:106: -1- m4_pattern_allow([^RT_LIBS$]) +m4trace:configure.ac:106: -1- AC_SUBST([RT_LIBS], [""]) +m4trace:configure.ac:106: -1- AC_SUBST_TRACE([RT_LIBS]) +m4trace:configure.ac:106: -1- m4_pattern_allow([^RT_LIBS$]) +m4trace:configure.ac:121: -1- AC_SUBST([XKBCONFIGROOT]) +m4trace:configure.ac:121: -1- AC_SUBST_TRACE([XKBCONFIGROOT]) +m4trace:configure.ac:121: -1- m4_pattern_allow([^XKBCONFIGROOT$]) +m4trace:configure.ac:129: -1- AC_SUBST([XLOCALEDIR]) +m4trace:configure.ac:129: -1- AC_SUBST_TRACE([XLOCALEDIR]) +m4trace:configure.ac:129: -1- m4_pattern_allow([^XLOCALEDIR$]) +m4trace:configure.ac:136: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_XKB_RULES]) +m4trace:configure.ac:136: -1- m4_pattern_allow([^DEFAULT_XKB_RULES$]) +m4trace:configure.ac:136: -1- AH_OUTPUT([DEFAULT_XKB_RULES], [/* Default XKB ruleset */ +@%:@undef DEFAULT_XKB_RULES]) +m4trace:configure.ac:144: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_XKB_MODEL]) +m4trace:configure.ac:144: -1- m4_pattern_allow([^DEFAULT_XKB_MODEL$]) +m4trace:configure.ac:144: -1- AH_OUTPUT([DEFAULT_XKB_MODEL], [/* Default XKB model */ +@%:@undef DEFAULT_XKB_MODEL]) +m4trace:configure.ac:152: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_XKB_LAYOUT]) +m4trace:configure.ac:152: -1- m4_pattern_allow([^DEFAULT_XKB_LAYOUT$]) +m4trace:configure.ac:152: -1- AH_OUTPUT([DEFAULT_XKB_LAYOUT], [/* Default XKB layout */ +@%:@undef DEFAULT_XKB_LAYOUT]) +m4trace:configure.ac:160: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_XKB_VARIANT]) +m4trace:configure.ac:160: -1- m4_pattern_allow([^DEFAULT_XKB_VARIANT$]) +m4trace:configure.ac:160: -1- AH_OUTPUT([DEFAULT_XKB_VARIANT], [/* Default XKB variant */ +@%:@undef DEFAULT_XKB_VARIANT]) +m4trace:configure.ac:170: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_XKB_OPTIONS]) +m4trace:configure.ac:170: -1- m4_pattern_allow([^DEFAULT_XKB_OPTIONS$]) +m4trace:configure.ac:170: -1- AH_OUTPUT([DEFAULT_XKB_OPTIONS], [/* Default XKB options */ +@%:@undef DEFAULT_XKB_OPTIONS]) +m4trace:configure.ac:179: -1- AC_SUBST([XCB_XKB_CFLAGS]) +m4trace:configure.ac:179: -1- AC_SUBST_TRACE([XCB_XKB_CFLAGS]) +m4trace:configure.ac:179: -1- m4_pattern_allow([^XCB_XKB_CFLAGS$]) +m4trace:configure.ac:179: -1- AC_SUBST([XCB_XKB_LIBS]) +m4trace:configure.ac:179: -1- AC_SUBST_TRACE([XCB_XKB_LIBS]) +m4trace:configure.ac:179: -1- m4_pattern_allow([^XCB_XKB_LIBS$]) +m4trace:configure.ac:184: -1- AM_CONDITIONAL([ENABLE_X11], [test "x$enable_x11" = xyes]) +m4trace:configure.ac:184: -1- AC_SUBST([ENABLE_X11_TRUE]) +m4trace:configure.ac:184: -1- AC_SUBST_TRACE([ENABLE_X11_TRUE]) +m4trace:configure.ac:184: -1- m4_pattern_allow([^ENABLE_X11_TRUE$]) +m4trace:configure.ac:184: -1- AC_SUBST([ENABLE_X11_FALSE]) +m4trace:configure.ac:184: -1- AC_SUBST_TRACE([ENABLE_X11_FALSE]) +m4trace:configure.ac:184: -1- m4_pattern_allow([^ENABLE_X11_FALSE$]) +m4trace:configure.ac:184: -1- _AM_SUBST_NOTMAKE([ENABLE_X11_TRUE]) +m4trace:configure.ac:184: -1- _AM_SUBST_NOTMAKE([ENABLE_X11_FALSE]) +m4trace:configure.ac:186: -1- AC_CONFIG_FILES([ + Makefile + xkbcommon-uninstalled.pc + xkbcommon.pc + xkbcommon-x11.pc + xkbcommon-x11-uninstalled.pc + doc/Doxyfile +]) +m4trace:configure.ac:194: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) +m4trace:configure.ac:194: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) +m4trace:configure.ac:194: -1- m4_pattern_allow([^LIB@&t@OBJS$]) +m4trace:configure.ac:194: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) +m4trace:configure.ac:194: -1- AC_SUBST_TRACE([LTLIBOBJS]) +m4trace:configure.ac:194: -1- m4_pattern_allow([^LTLIBOBJS$]) +m4trace:configure.ac:194: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) +m4trace:configure.ac:194: -1- AC_SUBST([am__EXEEXT_TRUE]) +m4trace:configure.ac:194: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE]) +m4trace:configure.ac:194: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) +m4trace:configure.ac:194: -1- AC_SUBST([am__EXEEXT_FALSE]) +m4trace:configure.ac:194: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE]) +m4trace:configure.ac:194: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) +m4trace:configure.ac:194: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) +m4trace:configure.ac:194: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) +m4trace:configure.ac:194: -1- AC_SUBST_TRACE([top_builddir]) +m4trace:configure.ac:194: -1- AC_SUBST_TRACE([top_build_prefix]) +m4trace:configure.ac:194: -1- AC_SUBST_TRACE([srcdir]) +m4trace:configure.ac:194: -1- AC_SUBST_TRACE([abs_srcdir]) +m4trace:configure.ac:194: -1- AC_SUBST_TRACE([top_srcdir]) +m4trace:configure.ac:194: -1- AC_SUBST_TRACE([abs_top_srcdir]) +m4trace:configure.ac:194: -1- AC_SUBST_TRACE([builddir]) +m4trace:configure.ac:194: -1- AC_SUBST_TRACE([abs_builddir]) +m4trace:configure.ac:194: -1- AC_SUBST_TRACE([abs_top_builddir]) +m4trace:configure.ac:194: -1- AC_SUBST_TRACE([INSTALL]) +m4trace:configure.ac:194: -1- AC_SUBST_TRACE([MKDIR_P]) +m4trace:configure.ac:194: -1- AC_REQUIRE_AUX_FILE([ltmain.sh]) diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/traces.2 b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/traces.2 new file mode 100644 index 0000000..f43fb81 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/traces.2 @@ -0,0 +1,4140 @@ +m4trace:/usr/share/aclocal/argz.m4:12: -1- AC_DEFUN([gl_FUNC_ARGZ], [gl_PREREQ_ARGZ + +AC_CHECK_HEADERS([argz.h], [], [], [AC_INCLUDES_DEFAULT]) + +AC_CHECK_TYPES([error_t], + [], + [AC_DEFINE([error_t], [int], + [Define to a type to use for `error_t' if it is not otherwise available.]) + AC_DEFINE([__error_t_defined], [1], [Define so that glibc/gnulib argp.h + does not typedef error_t.])], + [#if defined(HAVE_ARGZ_H) +# include +#endif]) + +ARGZ_H= +AC_CHECK_FUNCS([argz_add argz_append argz_count argz_create_sep argz_insert \ + argz_next argz_stringify], [], [ARGZ_H=argz.h; AC_LIBOBJ([argz])]) + +dnl if have system argz functions, allow forced use of +dnl libltdl-supplied implementation (and default to do so +dnl on "known bad" systems). Could use a runtime check, but +dnl (a) detecting malloc issues is notoriously unreliable +dnl (b) only known system that declares argz functions, +dnl provides them, yet they are broken, is cygwin +dnl releases prior to 16-Mar-2007 (1.5.24 and earlier) +dnl So, it's more straightforward simply to special case +dnl this for known bad systems. +AS_IF([test -z "$ARGZ_H"], + [AC_CACHE_CHECK( + [if argz actually works], + [lt_cv_sys_argz_works], + [[case $host_os in #( + *cygwin*) + lt_cv_sys_argz_works=no + if test "$cross_compiling" != no; then + lt_cv_sys_argz_works="guessing no" + else + lt_sed_extract_leading_digits='s/^\([0-9\.]*\).*/\1/' + save_IFS=$IFS + IFS=-. + set x `uname -r | sed -e "$lt_sed_extract_leading_digits"` + IFS=$save_IFS + lt_os_major=${2-0} + lt_os_minor=${3-0} + lt_os_micro=${4-0} + if test "$lt_os_major" -gt 1 \ + || { test "$lt_os_major" -eq 1 \ + && { test "$lt_os_minor" -gt 5 \ + || { test "$lt_os_minor" -eq 5 \ + && test "$lt_os_micro" -gt 24; }; }; }; then + lt_cv_sys_argz_works=yes + fi + fi + ;; #( + *) lt_cv_sys_argz_works=yes ;; + esac]]) + AS_IF([test "$lt_cv_sys_argz_works" = yes], + [AC_DEFINE([HAVE_WORKING_ARGZ], 1, + [This value is set to 1 to indicate that the system argz facility works])], + [ARGZ_H=argz.h + AC_LIBOBJ([argz])])]) + +AC_SUBST([ARGZ_H]) +]) +m4trace:/usr/share/aclocal/argz.m4:79: -1- AC_DEFUN([gl_PREREQ_ARGZ], [:]) +m4trace:/usr/share/aclocal/ltdl.m4:16: -1- AC_DEFUN([LT_CONFIG_LTDL_DIR], [AC_BEFORE([$0], [LTDL_INIT]) +_$0($*) +]) +m4trace:/usr/share/aclocal/ltdl.m4:68: -1- AC_DEFUN([LTDL_CONVENIENCE], [AC_BEFORE([$0], [LTDL_INIT])dnl +dnl Although the argument is deprecated and no longer documented, +dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one +dnl here make sure it is the same as any other declaration of libltdl's +dnl location! This also ensures lt_ltdl_dir is set when configure.ac is +dnl not yet using an explicit LT_CONFIG_LTDL_DIR. +m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl +_$0() +]) +m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AU_DEFUN([AC_LIBLTDL_CONVENIENCE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) +_LTDL_CONVENIENCE]) +m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_CONVENIENCE' is obsolete. +You should run autoupdate.])dnl +_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) +_LTDL_CONVENIENCE]) +m4trace:/usr/share/aclocal/ltdl.m4:124: -1- AC_DEFUN([LTDL_INSTALLABLE], [AC_BEFORE([$0], [LTDL_INIT])dnl +dnl Although the argument is deprecated and no longer documented, +dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one +dnl here make sure it is the same as any other declaration of libltdl's +dnl location! This also ensures lt_ltdl_dir is set when configure.ac is +dnl not yet using an explicit LT_CONFIG_LTDL_DIR. +m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl +_$0() +]) +m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AU_DEFUN([AC_LIBLTDL_INSTALLABLE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) +_LTDL_INSTALLABLE]) +m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_INSTALLABLE' is obsolete. +You should run autoupdate.])dnl +_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) +_LTDL_INSTALLABLE]) +m4trace:/usr/share/aclocal/ltdl.m4:213: -1- AC_DEFUN([_LT_LIBOBJ], [ + m4_pattern_allow([^_LT_LIBOBJS$]) + _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext" +]) +m4trace:/usr/share/aclocal/ltdl.m4:226: -1- AC_DEFUN([LTDL_INIT], [dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +dnl We need to keep our own list of libobjs separate from our parent project, +dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while +dnl we look for our own LIBOBJs. +m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ])) +m4_pushdef([AC_LIBSOURCES]) + +dnl If not otherwise defined, default to the 1.5.x compatible subproject mode: +m4_if(_LTDL_MODE, [], + [m4_define([_LTDL_MODE], m4_default([$2], [subproject])) + m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])], + [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])]) + +AC_ARG_WITH([included_ltdl], + [AS_HELP_STRING([--with-included-ltdl], + [use the GNU ltdl sources included here])]) + +if test "x$with_included_ltdl" != xyes; then + # We are not being forced to use the included libltdl sources, so + # decide whether there is a useful installed version we can use. + AC_CHECK_HEADER([ltdl.h], + [AC_CHECK_DECL([lt_dlinterface_register], + [AC_CHECK_LIB([ltdl], [lt_dladvise_preload], + [with_included_ltdl=no], + [with_included_ltdl=yes])], + [with_included_ltdl=yes], + [AC_INCLUDES_DEFAULT + #include ])], + [with_included_ltdl=yes], + [AC_INCLUDES_DEFAULT] + ) +fi + +dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE +dnl was called yet, then for old times' sake, we assume libltdl is in an +dnl eponymous directory: +AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])]) + +AC_ARG_WITH([ltdl_include], + [AS_HELP_STRING([--with-ltdl-include=DIR], + [use the ltdl headers installed in DIR])]) + +if test -n "$with_ltdl_include"; then + if test -f "$with_ltdl_include/ltdl.h"; then : + else + AC_MSG_ERROR([invalid ltdl include directory: `$with_ltdl_include']) + fi +else + with_ltdl_include=no +fi + +AC_ARG_WITH([ltdl_lib], + [AS_HELP_STRING([--with-ltdl-lib=DIR], + [use the libltdl.la installed in DIR])]) + +if test -n "$with_ltdl_lib"; then + if test -f "$with_ltdl_lib/libltdl.la"; then : + else + AC_MSG_ERROR([invalid ltdl library directory: `$with_ltdl_lib']) + fi +else + with_ltdl_lib=no +fi + +case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in + ,yes,no,no,) + m4_case(m4_default(_LTDL_TYPE, [convenience]), + [convenience], [_LTDL_CONVENIENCE], + [installable], [_LTDL_INSTALLABLE], + [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)]) + ;; + ,no,no,no,) + # If the included ltdl is not to be used, then use the + # preinstalled libltdl we found. + AC_DEFINE([HAVE_LTDL], [1], + [Define this if a modern libltdl is already installed]) + LIBLTDL=-lltdl + LTDLDEPS= + LTDLINCL= + ;; + ,no*,no,*) + AC_MSG_ERROR([`--with-ltdl-include' and `--with-ltdl-lib' options must be used together]) + ;; + *) with_included_ltdl=no + LIBLTDL="-L$with_ltdl_lib -lltdl" + LTDLDEPS= + LTDLINCL="-I$with_ltdl_include" + ;; +esac +INCLTDL="$LTDLINCL" + +# Report our decision... +AC_MSG_CHECKING([where to find libltdl headers]) +AC_MSG_RESULT([$LTDLINCL]) +AC_MSG_CHECKING([where to find libltdl library]) +AC_MSG_RESULT([$LIBLTDL]) + +_LTDL_SETUP + +dnl restore autoconf definition. +m4_popdef([AC_LIBOBJ]) +m4_popdef([AC_LIBSOURCES]) + +AC_CONFIG_COMMANDS_PRE([ + _ltdl_libobjs= + _ltdl_ltlibobjs= + if test -n "$_LT_LIBOBJS"; then + # Remove the extension. + _lt_sed_drop_objext='s/\.o$//;s/\.obj$//' + for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do + _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext" + _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo" + done + fi + AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs]) + AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs]) +]) + +# Only expand once: +m4_define([LTDL_INIT]) +]) +m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)]) +m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AC_DEFUN([AC_LIB_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIB_LTDL' is obsolete. +You should run autoupdate.])dnl +LTDL_INIT($@)]) +m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)]) +m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AC_DEFUN([AC_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_WITH_LTDL' is obsolete. +You should run autoupdate.])dnl +LTDL_INIT($@)]) +m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)]) +m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AC_DEFUN([LT_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `LT_WITH_LTDL' is obsolete. +You should run autoupdate.])dnl +LTDL_INIT($@)]) +m4trace:/usr/share/aclocal/ltdl.m4:367: -1- AC_DEFUN([_LTDL_SETUP], [AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_SYS_MODULE_EXT])dnl +AC_REQUIRE([LT_SYS_MODULE_PATH])dnl +AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl +AC_REQUIRE([LT_LIB_DLLOAD])dnl +AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl +AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl +AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl +AC_REQUIRE([gl_FUNC_ARGZ])dnl + +m4_require([_LT_CHECK_OBJDIR])dnl +m4_require([_LT_HEADER_DLFCN])dnl +m4_require([_LT_CHECK_DLPREOPEN])dnl +m4_require([_LT_DECL_SED])dnl + +dnl Don't require this, or it will be expanded earlier than the code +dnl that sets the variables it relies on: +_LT_ENABLE_INSTALL + +dnl _LTDL_MODE specific code must be called at least once: +_LTDL_MODE_DISPATCH + +# In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS +# the user used. This is so that ltdl.h can pick up the parent projects +# config.h file, The first file in AC_CONFIG_HEADERS must contain the +# definitions required by ltdl.c. +# FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility). +AC_CONFIG_COMMANDS_PRE([dnl +m4_pattern_allow([^LT_CONFIG_H$])dnl +m4_ifset([AH_HEADER], + [LT_CONFIG_H=AH_HEADER], + [m4_ifset([AC_LIST_HEADERS], + [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's,^[[ ]]*,,;s,[[ :]].*$,,'`], + [])])]) +AC_SUBST([LT_CONFIG_H]) + +AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h], + [], [], [AC_INCLUDES_DEFAULT]) + +AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])]) +AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])]) + +m4_pattern_allow([LT_LIBEXT])dnl +AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension]) + +name= +eval "lt_libprefix=\"$libname_spec\"" +m4_pattern_allow([LT_LIBPREFIX])dnl +AC_DEFINE_UNQUOTED([LT_LIBPREFIX],["$lt_libprefix"],[The archive prefix]) + +name=ltdl +eval "LTDLOPEN=\"$libname_spec\"" +AC_SUBST([LTDLOPEN]) +]) +m4trace:/usr/share/aclocal/ltdl.m4:443: -1- AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_CACHE_CHECK([whether deplibs are loaded by dlopen], + [lt_cv_sys_dlopen_deplibs], + [# PORTME does your system automatically load deplibs for dlopen? + # or its logical equivalent (e.g. shl_load for HP-UX < 11) + # For now, we just catch OSes we know something about -- in the + # future, we'll try test this programmatically. + lt_cv_sys_dlopen_deplibs=unknown + case $host_os in + aix3*|aix4.1.*|aix4.2.*) + # Unknown whether this is true for these versions of AIX, but + # we want this `case' here to explicitly catch those versions. + lt_cv_sys_dlopen_deplibs=unknown + ;; + aix[[4-9]]*) + lt_cv_sys_dlopen_deplibs=yes + ;; + amigaos*) + case $host_cpu in + powerpc) + lt_cv_sys_dlopen_deplibs=no + ;; + esac + ;; + darwin*) + # Assuming the user has installed a libdl from somewhere, this is true + # If you are looking for one http://www.opendarwin.org/projects/dlcompat + lt_cv_sys_dlopen_deplibs=yes + ;; + freebsd* | dragonfly*) + lt_cv_sys_dlopen_deplibs=yes + ;; + gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu) + # GNU and its variants, using gnu ld.so (Glibc) + lt_cv_sys_dlopen_deplibs=yes + ;; + hpux10*|hpux11*) + lt_cv_sys_dlopen_deplibs=yes + ;; + interix*) + lt_cv_sys_dlopen_deplibs=yes + ;; + irix[[12345]]*|irix6.[[01]]*) + # Catch all versions of IRIX before 6.2, and indicate that we don't + # know how it worked for any of those versions. + lt_cv_sys_dlopen_deplibs=unknown + ;; + irix*) + # The case above catches anything before 6.2, and it's known that + # at 6.2 and later dlopen does load deplibs. + lt_cv_sys_dlopen_deplibs=yes + ;; + netbsd* | netbsdelf*-gnu) + lt_cv_sys_dlopen_deplibs=yes + ;; + openbsd*) + lt_cv_sys_dlopen_deplibs=yes + ;; + osf[[1234]]*) + # dlopen did load deplibs (at least at 4.x), but until the 5.x series, + # it did *not* use an RPATH in a shared library to find objects the + # library depends on, so we explicitly say `no'. + lt_cv_sys_dlopen_deplibs=no + ;; + osf5.0|osf5.0a|osf5.1) + # dlopen *does* load deplibs and with the right loader patch applied + # it even uses RPATH in a shared library to search for shared objects + # that the library depends on, but there's no easy way to know if that + # patch is installed. Since this is the case, all we can really + # say is unknown -- it depends on the patch being installed. If + # it is, this changes to `yes'. Without it, it would be `no'. + lt_cv_sys_dlopen_deplibs=unknown + ;; + osf*) + # the two cases above should catch all versions of osf <= 5.1. Read + # the comments above for what we know about them. + # At > 5.1, deplibs are loaded *and* any RPATH in a shared library + # is used to find them so we can finally say `yes'. + lt_cv_sys_dlopen_deplibs=yes + ;; + qnx*) + lt_cv_sys_dlopen_deplibs=yes + ;; + solaris*) + lt_cv_sys_dlopen_deplibs=yes + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + libltdl_cv_sys_dlopen_deplibs=yes + ;; + esac + ]) +if test "$lt_cv_sys_dlopen_deplibs" != yes; then + AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1], + [Define if the OS needs help to load dependent libraries for dlopen().]) +fi +]) +m4trace:/usr/share/aclocal/ltdl.m4:542: -1- AU_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:542: -1- AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYS_DLOPEN_DEPLIBS' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:549: -1- AC_DEFUN([LT_SYS_MODULE_EXT], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl +AC_CACHE_CHECK([which extension is used for runtime loadable modules], + [libltdl_cv_shlibext], +[ +module=yes +eval libltdl_cv_shlibext=$shrext_cmds +module=no +eval libltdl_cv_shrext=$shrext_cmds + ]) +if test -n "$libltdl_cv_shlibext"; then + m4_pattern_allow([LT_MODULE_EXT])dnl + AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"], + [Define to the extension used for runtime loadable modules, say, ".so".]) +fi +if test "$libltdl_cv_shrext" != "$libltdl_cv_shlibext"; then + m4_pattern_allow([LT_SHARED_EXT])dnl + AC_DEFINE_UNQUOTED([LT_SHARED_EXT], ["$libltdl_cv_shrext"], + [Define to the shared library suffix, say, ".dylib".]) +fi +]) +m4trace:/usr/share/aclocal/ltdl.m4:572: -1- AU_DEFUN([AC_LTDL_SHLIBEXT], [m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:572: -1- AC_DEFUN([AC_LTDL_SHLIBEXT], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBEXT' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:579: -1- AC_DEFUN([LT_SYS_MODULE_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl +AC_CACHE_CHECK([which variable specifies run-time module search path], + [lt_cv_module_path_var], [lt_cv_module_path_var="$shlibpath_var"]) +if test -n "$lt_cv_module_path_var"; then + m4_pattern_allow([LT_MODULE_PATH_VAR])dnl + AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"], + [Define to the name of the environment variable that determines the run-time module search path.]) +fi +]) +m4trace:/usr/share/aclocal/ltdl.m4:591: -1- AU_DEFUN([AC_LTDL_SHLIBPATH], [m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:591: -1- AC_DEFUN([AC_LTDL_SHLIBPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBPATH' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:598: -1- AC_DEFUN([LT_SYS_DLSEARCH_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl +AC_CACHE_CHECK([for the default library search path], + [lt_cv_sys_dlsearch_path], + [lt_cv_sys_dlsearch_path="$sys_lib_dlsearch_path_spec"]) +if test -n "$lt_cv_sys_dlsearch_path"; then + sys_dlsearch_path= + for dir in $lt_cv_sys_dlsearch_path; do + if test -z "$sys_dlsearch_path"; then + sys_dlsearch_path="$dir" + else + sys_dlsearch_path="$sys_dlsearch_path$PATH_SEPARATOR$dir" + fi + done + m4_pattern_allow([LT_DLSEARCH_PATH])dnl + AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"], + [Define to the system default library search path.]) +fi +]) +m4trace:/usr/share/aclocal/ltdl.m4:619: -1- AU_DEFUN([AC_LTDL_SYSSEARCHPATH], [m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:619: -1- AC_DEFUN([AC_LTDL_SYSSEARCHPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYSSEARCHPATH' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:645: -1- AC_DEFUN([LT_LIB_DLLOAD], [m4_pattern_allow([^LT_DLLOADERS$]) +LT_DLLOADERS= +AC_SUBST([LT_DLLOADERS]) + +AC_LANG_PUSH([C]) + +LIBADD_DLOPEN= +AC_SEARCH_LIBS([dlopen], [dl], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.]) + if test "$ac_cv_search_dlopen" != "none required" ; then + LIBADD_DLOPEN="-ldl" + fi + libltdl_cv_lib_dl_dlopen="yes" + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], + [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H +# include +#endif + ]], [[dlopen(0, 0);]])], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.]) + libltdl_cv_func_dlopen="yes" + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], + [AC_CHECK_LIB([svld], [dlopen], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.]) + LIBADD_DLOPEN="-lsvld" libltdl_cv_func_dlopen="yes" + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])]) +if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes +then + lt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBADD_DLOPEN" + AC_CHECK_FUNCS([dlerror]) + LIBS="$lt_save_LIBS" +fi +AC_SUBST([LIBADD_DLOPEN]) + +LIBADD_SHL_LOAD= +AC_CHECK_FUNC([shl_load], + [AC_DEFINE([HAVE_SHL_LOAD], [1], + [Define if you have the shl_load function.]) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"], + [AC_CHECK_LIB([dld], [shl_load], + [AC_DEFINE([HAVE_SHL_LOAD], [1], + [Define if you have the shl_load function.]) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la" + LIBADD_SHL_LOAD="-ldld"])]) +AC_SUBST([LIBADD_SHL_LOAD]) + +case $host_os in +darwin[[1567]].*) +# We only want this for pre-Mac OS X 10.4. + AC_CHECK_FUNC([_dyld_func_lookup], + [AC_DEFINE([HAVE_DYLD], [1], + [Define if you have the _dyld_func_lookup function.]) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"]) + ;; +beos*) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la" + ;; +cygwin* | mingw* | os2* | pw32*) + AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include ]]) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la" + ;; +esac + +AC_CHECK_LIB([dld], [dld_link], + [AC_DEFINE([HAVE_DLD], [1], + [Define if you have the GNU dld library.]) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"]) +AC_SUBST([LIBADD_DLD_LINK]) + +m4_pattern_allow([^LT_DLPREOPEN$]) +LT_DLPREOPEN= +if test -n "$LT_DLLOADERS" +then + for lt_loader in $LT_DLLOADERS; do + LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader " + done + AC_DEFINE([HAVE_LIBDLLOADER], [1], + [Define if libdlloader will be built on this platform]) +fi +AC_SUBST([LT_DLPREOPEN]) + +dnl This isn't used anymore, but set it for backwards compatibility +LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD" +AC_SUBST([LIBADD_DL]) + +AC_LANG_POP +]) +m4trace:/usr/share/aclocal/ltdl.m4:738: -1- AU_DEFUN([AC_LTDL_DLLIB], [m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:738: -1- AC_DEFUN([AC_LTDL_DLLIB], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLLIB' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:746: -1- AC_DEFUN([LT_SYS_SYMBOL_USCORE], [m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +AC_CACHE_CHECK([for _ prefix in compiled symbols], + [lt_cv_sys_symbol_underscore], + [lt_cv_sys_symbol_underscore=no + cat > conftest.$ac_ext <<_LT_EOF +void nm_test_func(){} +int main(){nm_test_func;return 0;} +_LT_EOF + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + ac_nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then + # See whether the symbols have a leading underscore. + if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then + lt_cv_sys_symbol_underscore=yes + else + if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then + : + else + echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD + fi + fi + else + echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.c >&AS_MESSAGE_LOG_FD + fi + rm -rf conftest* + ]) + sys_symbol_underscore=$lt_cv_sys_symbol_underscore + AC_SUBST([sys_symbol_underscore]) +]) +m4trace:/usr/share/aclocal/ltdl.m4:783: -1- AU_DEFUN([AC_LTDL_SYMBOL_USCORE], [m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:783: -1- AC_DEFUN([AC_LTDL_SYMBOL_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYMBOL_USCORE' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:790: -1- AC_DEFUN([LT_FUNC_DLSYM_USCORE], [AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl +if test x"$lt_cv_sys_symbol_underscore" = xyes; then + if test x"$libltdl_cv_func_dlopen" = xyes || + test x"$libltdl_cv_lib_dl_dlopen" = xyes ; then + AC_CACHE_CHECK([whether we have to add an underscore for dlsym], + [libltdl_cv_need_uscore], + [libltdl_cv_need_uscore=unknown + save_LIBS="$LIBS" + LIBS="$LIBS $LIBADD_DLOPEN" + _LT_TRY_DLOPEN_SELF( + [libltdl_cv_need_uscore=no], [libltdl_cv_need_uscore=yes], + [], [libltdl_cv_need_uscore=cross]) + LIBS="$save_LIBS" + ]) + fi +fi + +if test x"$libltdl_cv_need_uscore" = xyes; then + AC_DEFINE([NEED_USCORE], [1], + [Define if dlsym() requires a leading underscore in symbol names.]) +fi +]) +m4trace:/usr/share/aclocal/ltdl.m4:815: -1- AU_DEFUN([AC_LTDL_DLSYM_USCORE], [m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:815: -1- AC_DEFUN([AC_LTDL_DLSYM_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLSYM_USCORE' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])]) +m4trace:/usr/share/aclocal/pkg.m4:27: -1- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +]) +m4trace:/usr/share/aclocal/pkg.m4:60: -1- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) +m4trace:/usr/share/aclocal/pkg.m4:86: -1- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +]) +m4trace:/usr/share/aclocal/pkg.m4:106: -1- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $1]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:58: -1- AC_DEFUN([XORG_PROG_RAWCPP], [ +AC_REQUIRE([AC_PROG_CPP]) +AC_PATH_PROGS(RAWCPP, [cpp], [${CPP}], + [$PATH:/bin:/usr/bin:/usr/lib:/usr/libexec:/usr/ccs/lib:/usr/ccs/lbin:/lib]) + +# Check for flag to avoid builtin definitions - assumes unix is predefined, +# which is not the best choice for supporting other OS'es, but covers most +# of the ones we need for now. +AC_MSG_CHECKING([if $RAWCPP requires -undef]) +AC_LANG_CONFTEST([AC_LANG_SOURCE([[Does cpp redefine unix ?]])]) +if test `${RAWCPP} < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then + AC_MSG_RESULT([no]) +else + if test `${RAWCPP} -undef < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then + RAWCPPFLAGS=-undef + AC_MSG_RESULT([yes]) + # under Cygwin unix is still defined even with -undef + elif test `${RAWCPP} -undef -ansi < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then + RAWCPPFLAGS="-undef -ansi" + AC_MSG_RESULT([yes, with -ansi]) + else + AC_MSG_ERROR([${RAWCPP} defines unix with or without -undef. I don't know what to do.]) + fi +fi +rm -f conftest.$ac_ext + +AC_MSG_CHECKING([if $RAWCPP requires -traditional]) +AC_LANG_CONFTEST([AC_LANG_SOURCE([[Does cpp preserve "whitespace"?]])]) +if test `${RAWCPP} < conftest.$ac_ext | grep -c 'preserve \"'` -eq 1 ; then + AC_MSG_RESULT([no]) +else + if test `${RAWCPP} -traditional < conftest.$ac_ext | grep -c 'preserve \"'` -eq 1 ; then + RAWCPPFLAGS="${RAWCPPFLAGS} -traditional" + AC_MSG_RESULT([yes]) + else + AC_MSG_ERROR([${RAWCPP} does not preserve whitespace with or without -traditional. I don't know what to do.]) + fi +fi +rm -f conftest.$ac_ext +AC_SUBST(RAWCPPFLAGS) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:111: -1- AC_DEFUN([XORG_MANPAGE_SECTIONS], [ +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_SED]) + +if test x$APP_MAN_SUFFIX = x ; then + APP_MAN_SUFFIX=1 +fi +if test x$APP_MAN_DIR = x ; then + APP_MAN_DIR='$(mandir)/man$(APP_MAN_SUFFIX)' +fi + +if test x$LIB_MAN_SUFFIX = x ; then + LIB_MAN_SUFFIX=3 +fi +if test x$LIB_MAN_DIR = x ; then + LIB_MAN_DIR='$(mandir)/man$(LIB_MAN_SUFFIX)' +fi + +if test x$FILE_MAN_SUFFIX = x ; then + case $host_os in + solaris*) FILE_MAN_SUFFIX=4 ;; + *) FILE_MAN_SUFFIX=5 ;; + esac +fi +if test x$FILE_MAN_DIR = x ; then + FILE_MAN_DIR='$(mandir)/man$(FILE_MAN_SUFFIX)' +fi + +if test x$MISC_MAN_SUFFIX = x ; then + case $host_os in + solaris*) MISC_MAN_SUFFIX=5 ;; + *) MISC_MAN_SUFFIX=7 ;; + esac +fi +if test x$MISC_MAN_DIR = x ; then + MISC_MAN_DIR='$(mandir)/man$(MISC_MAN_SUFFIX)' +fi + +if test x$DRIVER_MAN_SUFFIX = x ; then + case $host_os in + solaris*) DRIVER_MAN_SUFFIX=7 ;; + *) DRIVER_MAN_SUFFIX=4 ;; + esac +fi +if test x$DRIVER_MAN_DIR = x ; then + DRIVER_MAN_DIR='$(mandir)/man$(DRIVER_MAN_SUFFIX)' +fi + +if test x$ADMIN_MAN_SUFFIX = x ; then + case $host_os in + solaris*) ADMIN_MAN_SUFFIX=1m ;; + *) ADMIN_MAN_SUFFIX=8 ;; + esac +fi +if test x$ADMIN_MAN_DIR = x ; then + ADMIN_MAN_DIR='$(mandir)/man$(ADMIN_MAN_SUFFIX)' +fi + + +AC_SUBST([APP_MAN_SUFFIX]) +AC_SUBST([LIB_MAN_SUFFIX]) +AC_SUBST([FILE_MAN_SUFFIX]) +AC_SUBST([MISC_MAN_SUFFIX]) +AC_SUBST([DRIVER_MAN_SUFFIX]) +AC_SUBST([ADMIN_MAN_SUFFIX]) +AC_SUBST([APP_MAN_DIR]) +AC_SUBST([LIB_MAN_DIR]) +AC_SUBST([FILE_MAN_DIR]) +AC_SUBST([MISC_MAN_DIR]) +AC_SUBST([DRIVER_MAN_DIR]) +AC_SUBST([ADMIN_MAN_DIR]) + +XORG_MAN_PAGE="X Version 11" +AC_SUBST([XORG_MAN_PAGE]) +MAN_SUBSTS="\ + -e 's|__vendorversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \ + -e 's|__xorgversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \ + -e 's|__xservername__|Xorg|g' \ + -e 's|__xconfigfile__|xorg.conf|g' \ + -e 's|__projectroot__|\$(prefix)|g' \ + -e 's|__apploaddir__|\$(appdefaultdir)|g' \ + -e 's|__appmansuffix__|\$(APP_MAN_SUFFIX)|g' \ + -e 's|__drivermansuffix__|\$(DRIVER_MAN_SUFFIX)|g' \ + -e 's|__adminmansuffix__|\$(ADMIN_MAN_SUFFIX)|g' \ + -e 's|__libmansuffix__|\$(LIB_MAN_SUFFIX)|g' \ + -e 's|__miscmansuffix__|\$(MISC_MAN_SUFFIX)|g' \ + -e 's|__filemansuffix__|\$(FILE_MAN_SUFFIX)|g'" +AC_SUBST([MAN_SUBSTS]) + +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:208: -1- AC_DEFUN([XORG_CHECK_SGML_DOCTOOLS], [ +AC_MSG_CHECKING([for X.Org SGML entities m4_ifval([$1],[>= $1])]) +XORG_SGML_PATH= +PKG_CHECK_EXISTS([xorg-sgml-doctools m4_ifval([$1],[>= $1])], + [XORG_SGML_PATH=`$PKG_CONFIG --variable=sgmlrootdir xorg-sgml-doctools`], + [m4_ifval([$1],[:], + [if test x"$cross_compiling" != x"yes" ; then + AC_CHECK_FILE([$prefix/share/sgml/X11/defs.ent], + [XORG_SGML_PATH=$prefix/share/sgml]) + fi]) + ]) + +# Define variables STYLESHEET_SRCDIR and XSL_STYLESHEET containing +# the path and the name of the doc stylesheet +if test "x$XORG_SGML_PATH" != "x" ; then + AC_MSG_RESULT([$XORG_SGML_PATH]) + STYLESHEET_SRCDIR=$XORG_SGML_PATH/X11 + XSL_STYLESHEET=$STYLESHEET_SRCDIR/xorg.xsl +else + AC_MSG_RESULT([no]) +fi + +AC_SUBST(XORG_SGML_PATH) +AC_SUBST(STYLESHEET_SRCDIR) +AC_SUBST(XSL_STYLESHEET) +AM_CONDITIONAL([HAVE_STYLESHEETS], [test "x$XSL_STYLESHEET" != "x"]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:244: -1- AC_DEFUN([XORG_CHECK_LINUXDOC], [ +AC_REQUIRE([XORG_CHECK_SGML_DOCTOOLS]) +AC_REQUIRE([XORG_WITH_PS2PDF]) + +AC_PATH_PROG(LINUXDOC, linuxdoc) + +AC_MSG_CHECKING([whether to build documentation]) + +if test x$XORG_SGML_PATH != x && test x$LINUXDOC != x ; then + BUILDDOC=yes +else + BUILDDOC=no +fi + +AM_CONDITIONAL(BUILD_LINUXDOC, [test x$BUILDDOC = xyes]) + +AC_MSG_RESULT([$BUILDDOC]) + +AC_MSG_CHECKING([whether to build pdf documentation]) + +if test x$have_ps2pdf != xno && test x$BUILD_PDFDOC != xno; then + BUILDPDFDOC=yes +else + BUILDPDFDOC=no +fi + +AM_CONDITIONAL(BUILD_PDFDOC, [test x$BUILDPDFDOC = xyes]) + +AC_MSG_RESULT([$BUILDPDFDOC]) + +MAKE_TEXT="SGML_SEARCH_PATH=$XORG_SGML_PATH GROFF_NO_SGR=y $LINUXDOC -B txt -f" +MAKE_PS="SGML_SEARCH_PATH=$XORG_SGML_PATH $LINUXDOC -B latex --papersize=letter --output=ps" +MAKE_PDF="$PS2PDF" +MAKE_HTML="SGML_SEARCH_PATH=$XORG_SGML_PATH $LINUXDOC -B html --split=0" + +AC_SUBST(MAKE_TEXT) +AC_SUBST(MAKE_PS) +AC_SUBST(MAKE_PDF) +AC_SUBST(MAKE_HTML) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:293: -1- AC_DEFUN([XORG_CHECK_DOCBOOK], [ +AC_REQUIRE([XORG_CHECK_SGML_DOCTOOLS]) + +BUILDTXTDOC=no +BUILDPDFDOC=no +BUILDPSDOC=no +BUILDHTMLDOC=no + +AC_PATH_PROG(DOCBOOKPS, docbook2ps) +AC_PATH_PROG(DOCBOOKPDF, docbook2pdf) +AC_PATH_PROG(DOCBOOKHTML, docbook2html) +AC_PATH_PROG(DOCBOOKTXT, docbook2txt) + +AC_MSG_CHECKING([whether to build text documentation]) +if test x$XORG_SGML_PATH != x && test x$DOCBOOKTXT != x && + test x$BUILD_TXTDOC != xno; then + BUILDTXTDOC=yes +fi +AM_CONDITIONAL(BUILD_TXTDOC, [test x$BUILDTXTDOC = xyes]) +AC_MSG_RESULT([$BUILDTXTDOC]) + +AC_MSG_CHECKING([whether to build PDF documentation]) +if test x$XORG_SGML_PATH != x && test x$DOCBOOKPDF != x && + test x$BUILD_PDFDOC != xno; then + BUILDPDFDOC=yes +fi +AM_CONDITIONAL(BUILD_PDFDOC, [test x$BUILDPDFDOC = xyes]) +AC_MSG_RESULT([$BUILDPDFDOC]) + +AC_MSG_CHECKING([whether to build PostScript documentation]) +if test x$XORG_SGML_PATH != x && test x$DOCBOOKPS != x && + test x$BUILD_PSDOC != xno; then + BUILDPSDOC=yes +fi +AM_CONDITIONAL(BUILD_PSDOC, [test x$BUILDPSDOC = xyes]) +AC_MSG_RESULT([$BUILDPSDOC]) + +AC_MSG_CHECKING([whether to build HTML documentation]) +if test x$XORG_SGML_PATH != x && test x$DOCBOOKHTML != x && + test x$BUILD_HTMLDOC != xno; then + BUILDHTMLDOC=yes +fi +AM_CONDITIONAL(BUILD_HTMLDOC, [test x$BUILDHTMLDOC = xyes]) +AC_MSG_RESULT([$BUILDHTMLDOC]) + +MAKE_TEXT="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKTXT" +MAKE_PS="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKPS" +MAKE_PDF="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKPDF" +MAKE_HTML="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKHTML" + +AC_SUBST(MAKE_TEXT) +AC_SUBST(MAKE_PS) +AC_SUBST(MAKE_PDF) +AC_SUBST(MAKE_HTML) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:374: -1- AC_DEFUN([XORG_WITH_XMLTO], [ +AC_ARG_VAR([XMLTO], [Path to xmlto command]) +m4_define([_defopt], m4_default([$2], [auto])) +AC_ARG_WITH(xmlto, + AS_HELP_STRING([--with-xmlto], + [Use xmlto to regenerate documentation (default: ]_defopt[)]), + [use_xmlto=$withval], [use_xmlto=]_defopt) +m4_undefine([_defopt]) + +if test "x$use_xmlto" = x"auto"; then + AC_PATH_PROG([XMLTO], [xmlto]) + if test "x$XMLTO" = "x"; then + AC_MSG_WARN([xmlto not found - documentation targets will be skipped]) + have_xmlto=no + else + have_xmlto=yes + fi +elif test "x$use_xmlto" = x"yes" ; then + AC_PATH_PROG([XMLTO], [xmlto]) + if test "x$XMLTO" = "x"; then + AC_MSG_ERROR([--with-xmlto=yes specified but xmlto not found in PATH]) + fi + have_xmlto=yes +elif test "x$use_xmlto" = x"no" ; then + if test "x$XMLTO" != "x"; then + AC_MSG_WARN([ignoring XMLTO environment variable since --with-xmlto=no was specified]) + fi + have_xmlto=no +else + AC_MSG_ERROR([--with-xmlto expects 'yes' or 'no']) +fi + +# Test for a minimum version of xmlto, if provided. +m4_ifval([$1], +[if test "$have_xmlto" = yes; then + # scrape the xmlto version + AC_MSG_CHECKING([the xmlto version]) + xmlto_version=`$XMLTO --version 2>/dev/null | cut -d' ' -f3` + AC_MSG_RESULT([$xmlto_version]) + AS_VERSION_COMPARE([$xmlto_version], [$1], + [if test "x$use_xmlto" = xauto; then + AC_MSG_WARN([xmlto version $xmlto_version found, but $1 needed]) + have_xmlto=no + else + AC_MSG_ERROR([xmlto version $xmlto_version found, but $1 needed]) + fi]) +fi]) + +# Test for the ability of xmlto to generate a text target +have_xmlto_text=no +cat > conftest.xml << "EOF" +EOF +AS_IF([test "$have_xmlto" = yes], + [AS_IF([$XMLTO --skip-validation txt conftest.xml >/dev/null 2>&1], + [have_xmlto_text=yes], + [AC_MSG_WARN([xmlto cannot generate text format, this format skipped])])]) +rm -f conftest.xml +AM_CONDITIONAL([HAVE_XMLTO_TEXT], [test $have_xmlto_text = yes]) +AM_CONDITIONAL([HAVE_XMLTO], [test "$have_xmlto" = yes]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:458: -1- AC_DEFUN([XORG_WITH_XSLTPROC], [ +AC_ARG_VAR([XSLTPROC], [Path to xsltproc command]) +# Preserves the interface, should it be implemented later +m4_ifval([$1], [m4_warn([syntax], [Checking for xsltproc MIN-VERSION is not implemented])]) +m4_define([_defopt], m4_default([$2], [auto])) +AC_ARG_WITH(xsltproc, + AS_HELP_STRING([--with-xsltproc], + [Use xsltproc for the transformation of XML documents (default: ]_defopt[)]), + [use_xsltproc=$withval], [use_xsltproc=]_defopt) +m4_undefine([_defopt]) + +if test "x$use_xsltproc" = x"auto"; then + AC_PATH_PROG([XSLTPROC], [xsltproc]) + if test "x$XSLTPROC" = "x"; then + AC_MSG_WARN([xsltproc not found - cannot transform XML documents]) + have_xsltproc=no + else + have_xsltproc=yes + fi +elif test "x$use_xsltproc" = x"yes" ; then + AC_PATH_PROG([XSLTPROC], [xsltproc]) + if test "x$XSLTPROC" = "x"; then + AC_MSG_ERROR([--with-xsltproc=yes specified but xsltproc not found in PATH]) + fi + have_xsltproc=yes +elif test "x$use_xsltproc" = x"no" ; then + if test "x$XSLTPROC" != "x"; then + AC_MSG_WARN([ignoring XSLTPROC environment variable since --with-xsltproc=no was specified]) + fi + have_xsltproc=no +else + AC_MSG_ERROR([--with-xsltproc expects 'yes' or 'no']) +fi + +AM_CONDITIONAL([HAVE_XSLTPROC], [test "$have_xsltproc" = yes]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:515: -1- AC_DEFUN([XORG_WITH_PERL], [ +AC_ARG_VAR([PERL], [Path to perl command]) +# Preserves the interface, should it be implemented later +m4_ifval([$1], [m4_warn([syntax], [Checking for perl MIN-VERSION is not implemented])]) +m4_define([_defopt], m4_default([$2], [auto])) +AC_ARG_WITH(perl, + AS_HELP_STRING([--with-perl], + [Use perl for extracting information from files (default: ]_defopt[)]), + [use_perl=$withval], [use_perl=]_defopt) +m4_undefine([_defopt]) + +if test "x$use_perl" = x"auto"; then + AC_PATH_PROG([PERL], [perl]) + if test "x$PERL" = "x"; then + AC_MSG_WARN([perl not found - cannot extract information and report]) + have_perl=no + else + have_perl=yes + fi +elif test "x$use_perl" = x"yes" ; then + AC_PATH_PROG([PERL], [perl]) + if test "x$PERL" = "x"; then + AC_MSG_ERROR([--with-perl=yes specified but perl not found in PATH]) + fi + have_perl=yes +elif test "x$use_perl" = x"no" ; then + if test "x$PERL" != "x"; then + AC_MSG_WARN([ignoring PERL environment variable since --with-perl=no was specified]) + fi + have_perl=no +else + AC_MSG_ERROR([--with-perl expects 'yes' or 'no']) +fi + +AM_CONDITIONAL([HAVE_PERL], [test "$have_perl" = yes]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:573: -1- AC_DEFUN([XORG_WITH_ASCIIDOC], [ +AC_ARG_VAR([ASCIIDOC], [Path to asciidoc command]) +m4_define([_defopt], m4_default([$2], [auto])) +AC_ARG_WITH(asciidoc, + AS_HELP_STRING([--with-asciidoc], + [Use asciidoc to regenerate documentation (default: ]_defopt[)]), + [use_asciidoc=$withval], [use_asciidoc=]_defopt) +m4_undefine([_defopt]) + +if test "x$use_asciidoc" = x"auto"; then + AC_PATH_PROG([ASCIIDOC], [asciidoc]) + if test "x$ASCIIDOC" = "x"; then + AC_MSG_WARN([asciidoc not found - documentation targets will be skipped]) + have_asciidoc=no + else + have_asciidoc=yes + fi +elif test "x$use_asciidoc" = x"yes" ; then + AC_PATH_PROG([ASCIIDOC], [asciidoc]) + if test "x$ASCIIDOC" = "x"; then + AC_MSG_ERROR([--with-asciidoc=yes specified but asciidoc not found in PATH]) + fi + have_asciidoc=yes +elif test "x$use_asciidoc" = x"no" ; then + if test "x$ASCIIDOC" != "x"; then + AC_MSG_WARN([ignoring ASCIIDOC environment variable since --with-asciidoc=no was specified]) + fi + have_asciidoc=no +else + AC_MSG_ERROR([--with-asciidoc expects 'yes' or 'no']) +fi +m4_ifval([$1], +[if test "$have_asciidoc" = yes; then + # scrape the asciidoc version + AC_MSG_CHECKING([the asciidoc version]) + asciidoc_version=`$ASCIIDOC --version 2>/dev/null | cut -d' ' -f2` + AC_MSG_RESULT([$asciidoc_version]) + AS_VERSION_COMPARE([$asciidoc_version], [$1], + [if test "x$use_asciidoc" = xauto; then + AC_MSG_WARN([asciidoc version $asciidoc_version found, but $1 needed]) + have_asciidoc=no + else + AC_MSG_ERROR([asciidoc version $asciidoc_version found, but $1 needed]) + fi]) +fi]) +AM_CONDITIONAL([HAVE_ASCIIDOC], [test "$have_asciidoc" = yes]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:642: -1- AC_DEFUN([XORG_WITH_DOXYGEN], [ +AC_ARG_VAR([DOXYGEN], [Path to doxygen command]) +m4_define([_defopt], m4_default([$2], [auto])) +AC_ARG_WITH(doxygen, + AS_HELP_STRING([--with-doxygen], + [Use doxygen to regenerate documentation (default: ]_defopt[)]), + [use_doxygen=$withval], [use_doxygen=]_defopt) +m4_undefine([_defopt]) + +if test "x$use_doxygen" = x"auto"; then + AC_PATH_PROG([DOXYGEN], [doxygen]) + if test "x$DOXYGEN" = "x"; then + AC_MSG_WARN([doxygen not found - documentation targets will be skipped]) + have_doxygen=no + else + have_doxygen=yes + fi +elif test "x$use_doxygen" = x"yes" ; then + AC_PATH_PROG([DOXYGEN], [doxygen]) + if test "x$DOXYGEN" = "x"; then + AC_MSG_ERROR([--with-doxygen=yes specified but doxygen not found in PATH]) + fi + have_doxygen=yes +elif test "x$use_doxygen" = x"no" ; then + if test "x$DOXYGEN" != "x"; then + AC_MSG_WARN([ignoring DOXYGEN environment variable since --with-doxygen=no was specified]) + fi + have_doxygen=no +else + AC_MSG_ERROR([--with-doxygen expects 'yes' or 'no']) +fi +m4_ifval([$1], +[if test "$have_doxygen" = yes; then + # scrape the doxygen version + AC_MSG_CHECKING([the doxygen version]) + doxygen_version=`$DOXYGEN --version 2>/dev/null` + AC_MSG_RESULT([$doxygen_version]) + AS_VERSION_COMPARE([$doxygen_version], [$1], + [if test "x$use_doxygen" = xauto; then + AC_MSG_WARN([doxygen version $doxygen_version found, but $1 needed]) + have_doxygen=no + else + AC_MSG_ERROR([doxygen version $doxygen_version found, but $1 needed]) + fi]) +fi]) +AM_CONDITIONAL([HAVE_DOXYGEN], [test "$have_doxygen" = yes]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:727: -1- AC_DEFUN([XORG_WITH_GROFF], [ +AC_ARG_VAR([GROFF], [Path to groff command]) +m4_define([_defopt], m4_default([$1], [auto])) +AC_ARG_WITH(groff, + AS_HELP_STRING([--with-groff], + [Use groff to regenerate documentation (default: ]_defopt[)]), + [use_groff=$withval], [use_groff=]_defopt) +m4_undefine([_defopt]) + +if test "x$use_groff" = x"auto"; then + AC_PATH_PROG([GROFF], [groff]) + if test "x$GROFF" = "x"; then + AC_MSG_WARN([groff not found - documentation targets will be skipped]) + have_groff=no + else + have_groff=yes + fi +elif test "x$use_groff" = x"yes" ; then + AC_PATH_PROG([GROFF], [groff]) + if test "x$GROFF" = "x"; then + AC_MSG_ERROR([--with-groff=yes specified but groff not found in PATH]) + fi + have_groff=yes +elif test "x$use_groff" = x"no" ; then + if test "x$GROFF" != "x"; then + AC_MSG_WARN([ignoring GROFF environment variable since --with-groff=no was specified]) + fi + have_groff=no +else + AC_MSG_ERROR([--with-groff expects 'yes' or 'no']) +fi + +# We have groff, test for the presence of the macro packages +if test "x$have_groff" = x"yes"; then + AC_MSG_CHECKING([for ${GROFF} -ms macros]) + if ${GROFF} -ms -I. /dev/null >/dev/null 2>&1 ; then + groff_ms_works=yes + else + groff_ms_works=no + fi + AC_MSG_RESULT([$groff_ms_works]) + AC_MSG_CHECKING([for ${GROFF} -mm macros]) + if ${GROFF} -mm -I. /dev/null >/dev/null 2>&1 ; then + groff_mm_works=yes + else + groff_mm_works=no + fi + AC_MSG_RESULT([$groff_mm_works]) +fi + +# We have groff, test for HTML dependencies, one command per package +if test "x$have_groff" = x"yes"; then + AC_PATH_PROGS(GS_PATH, [gs gswin32c]) + AC_PATH_PROG(PNMTOPNG_PATH, [pnmtopng]) + AC_PATH_PROG(PSSELECT_PATH, [psselect]) + if test "x$GS_PATH" != "x" -a "x$PNMTOPNG_PATH" != "x" -a "x$PSSELECT_PATH" != "x"; then + have_groff_html=yes + else + have_groff_html=no + AC_MSG_WARN([grohtml dependencies not found - HTML Documentation skipped. Refer to grohtml man pages]) + fi +fi + +# Set Automake conditionals for Makefiles +AM_CONDITIONAL([HAVE_GROFF], [test "$have_groff" = yes]) +AM_CONDITIONAL([HAVE_GROFF_MS], [test "$groff_ms_works" = yes]) +AM_CONDITIONAL([HAVE_GROFF_MM], [test "$groff_mm_works" = yes]) +AM_CONDITIONAL([HAVE_GROFF_HTML], [test "$have_groff_html" = yes]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:819: -1- AC_DEFUN([XORG_WITH_FOP], [ +AC_ARG_VAR([FOP], [Path to fop command]) +m4_define([_defopt], m4_default([$2], [auto])) +AC_ARG_WITH(fop, + AS_HELP_STRING([--with-fop], + [Use fop to regenerate documentation (default: ]_defopt[)]), + [use_fop=$withval], [use_fop=]_defopt) +m4_undefine([_defopt]) + +if test "x$use_fop" = x"auto"; then + AC_PATH_PROG([FOP], [fop]) + if test "x$FOP" = "x"; then + AC_MSG_WARN([fop not found - documentation targets will be skipped]) + have_fop=no + else + have_fop=yes + fi +elif test "x$use_fop" = x"yes" ; then + AC_PATH_PROG([FOP], [fop]) + if test "x$FOP" = "x"; then + AC_MSG_ERROR([--with-fop=yes specified but fop not found in PATH]) + fi + have_fop=yes +elif test "x$use_fop" = x"no" ; then + if test "x$FOP" != "x"; then + AC_MSG_WARN([ignoring FOP environment variable since --with-fop=no was specified]) + fi + have_fop=no +else + AC_MSG_ERROR([--with-fop expects 'yes' or 'no']) +fi + +# Test for a minimum version of fop, if provided. +m4_ifval([$1], +[if test "$have_fop" = yes; then + # scrape the fop version + AC_MSG_CHECKING([for fop minimum version]) + fop_version=`$FOP -version 2>/dev/null | cut -d' ' -f3` + AC_MSG_RESULT([$fop_version]) + AS_VERSION_COMPARE([$fop_version], [$1], + [if test "x$use_fop" = xauto; then + AC_MSG_WARN([fop version $fop_version found, but $1 needed]) + have_fop=no + else + AC_MSG_ERROR([fop version $fop_version found, but $1 needed]) + fi]) +fi]) +AM_CONDITIONAL([HAVE_FOP], [test "$have_fop" = yes]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:890: -1- AC_DEFUN([XORG_WITH_PS2PDF], [ +AC_ARG_VAR([PS2PDF], [Path to ps2pdf command]) +m4_define([_defopt], m4_default([$1], [auto])) +AC_ARG_WITH(ps2pdf, + AS_HELP_STRING([--with-ps2pdf], + [Use ps2pdf to regenerate documentation (default: ]_defopt[)]), + [use_ps2pdf=$withval], [use_ps2pdf=]_defopt) +m4_undefine([_defopt]) + +if test "x$use_ps2pdf" = x"auto"; then + AC_PATH_PROG([PS2PDF], [ps2pdf]) + if test "x$PS2PDF" = "x"; then + AC_MSG_WARN([ps2pdf not found - documentation targets will be skipped]) + have_ps2pdf=no + else + have_ps2pdf=yes + fi +elif test "x$use_ps2pdf" = x"yes" ; then + AC_PATH_PROG([PS2PDF], [ps2pdf]) + if test "x$PS2PDF" = "x"; then + AC_MSG_ERROR([--with-ps2pdf=yes specified but ps2pdf not found in PATH]) + fi + have_ps2pdf=yes +elif test "x$use_ps2pdf" = x"no" ; then + if test "x$PS2PDF" != "x"; then + AC_MSG_WARN([ignoring PS2PDF environment variable since --with-ps2pdf=no was specified]) + fi + have_ps2pdf=no +else + AC_MSG_ERROR([--with-ps2pdf expects 'yes' or 'no']) +fi +AM_CONDITIONAL([HAVE_PS2PDF], [test "$have_ps2pdf" = yes]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:947: -1- AC_DEFUN([XORG_ENABLE_DOCS], [ +m4_define([docs_default], m4_default([$1], [yes])) +AC_ARG_ENABLE(docs, + AS_HELP_STRING([--enable-docs], + [Enable building the documentation (default: ]docs_default[)]), + [build_docs=$enableval], [build_docs=]docs_default) +m4_undefine([docs_default]) +AM_CONDITIONAL(ENABLE_DOCS, [test x$build_docs = xyes]) +AC_MSG_CHECKING([whether to build documentation]) +AC_MSG_RESULT([$build_docs]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:980: -1- AC_DEFUN([XORG_ENABLE_DEVEL_DOCS], [ +m4_define([devel_default], m4_default([$1], [yes])) +AC_ARG_ENABLE(devel-docs, + AS_HELP_STRING([--enable-devel-docs], + [Enable building the developer documentation (default: ]devel_default[)]), + [build_devel_docs=$enableval], [build_devel_docs=]devel_default) +m4_undefine([devel_default]) +AM_CONDITIONAL(ENABLE_DEVEL_DOCS, [test x$build_devel_docs = xyes]) +AC_MSG_CHECKING([whether to build developer documentation]) +AC_MSG_RESULT([$build_devel_docs]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1013: -1- AC_DEFUN([XORG_ENABLE_SPECS], [ +m4_define([spec_default], m4_default([$1], [yes])) +AC_ARG_ENABLE(specs, + AS_HELP_STRING([--enable-specs], + [Enable building the specs (default: ]spec_default[)]), + [build_specs=$enableval], [build_specs=]spec_default) +m4_undefine([spec_default]) +AM_CONDITIONAL(ENABLE_SPECS, [test x$build_specs = xyes]) +AC_MSG_CHECKING([whether to build functional specifications]) +AC_MSG_RESULT([$build_specs]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1045: -1- AC_DEFUN([XORG_ENABLE_UNIT_TESTS], [ +AC_BEFORE([$0], [XORG_WITH_GLIB]) +AC_BEFORE([$0], [XORG_LD_WRAP]) +AC_REQUIRE([XORG_MEMORY_CHECK_FLAGS]) +m4_define([_defopt], m4_default([$1], [auto])) +AC_ARG_ENABLE(unit-tests, AS_HELP_STRING([--enable-unit-tests], + [Enable building unit test cases (default: ]_defopt[)]), + [enable_unit_tests=$enableval], [enable_unit_tests=]_defopt) +m4_undefine([_defopt]) +AM_CONDITIONAL(ENABLE_UNIT_TESTS, [test "x$enable_unit_tests" != xno]) +AC_MSG_CHECKING([whether to build unit test cases]) +AC_MSG_RESULT([$enable_unit_tests]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1078: -1- AC_DEFUN([XORG_ENABLE_INTEGRATION_TESTS], [ +AC_REQUIRE([XORG_MEMORY_CHECK_FLAGS]) +m4_define([_defopt], m4_default([$1], [auto])) +AC_ARG_ENABLE(integration-tests, AS_HELP_STRING([--enable-integration-tests], + [Enable building integration test cases (default: ]_defopt[)]), + [enable_integration_tests=$enableval], + [enable_integration_tests=]_defopt) +m4_undefine([_defopt]) +AM_CONDITIONAL([ENABLE_INTEGRATION_TESTS], + [test "x$enable_integration_tests" != xno]) +AC_MSG_CHECKING([whether to build unit test cases]) +AC_MSG_RESULT([$enable_integration_tests]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1112: -1- AC_DEFUN([XORG_WITH_GLIB], [ +AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +m4_define([_defopt], m4_default([$2], [auto])) +AC_ARG_WITH(glib, AS_HELP_STRING([--with-glib], + [Use GLib library for unit testing (default: ]_defopt[)]), + [with_glib=$withval], [with_glib=]_defopt) +m4_undefine([_defopt]) + +have_glib=no +# Do not probe GLib if user explicitly disabled unit testing +if test "x$enable_unit_tests" != x"no"; then + # Do not probe GLib if user explicitly disabled it + if test "x$with_glib" != x"no"; then + m4_ifval( + [$1], + [PKG_CHECK_MODULES([GLIB], [glib-2.0 >= $1], [have_glib=yes], [have_glib=no])], + [PKG_CHECK_MODULES([GLIB], [glib-2.0], [have_glib=yes], [have_glib=no])] + ) + fi +fi + +# Not having GLib when unit testing has been explicitly requested is an error +if test "x$enable_unit_tests" = x"yes"; then + if test "x$have_glib" = x"no"; then + AC_MSG_ERROR([--enable-unit-tests=yes specified but glib-2.0 not found]) + fi +fi + +# Having unit testing disabled when GLib has been explicitly requested is an error +if test "x$enable_unit_tests" = x"no"; then + if test "x$with_glib" = x"yes"; then + AC_MSG_ERROR([--enable-unit-tests=yes specified but glib-2.0 not found]) + fi +fi + +# Not having GLib when it has been explicitly requested is an error +if test "x$with_glib" = x"yes"; then + if test "x$have_glib" = x"no"; then + AC_MSG_ERROR([--with-glib=yes specified but glib-2.0 not found]) + fi +fi + +AM_CONDITIONAL([HAVE_GLIB], [test "$have_glib" = yes]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1171: -1- AC_DEFUN([XORG_LD_WRAP], [ +XORG_CHECK_LINKER_FLAGS([-Wl,-wrap,exit],[have_ld_wrap=yes],[have_ld_wrap=no], + [AC_LANG_PROGRAM([#include + void __wrap_exit(int status) { return; }], + [exit(0);])]) +# Not having ld wrap when unit testing has been explicitly requested is an error +if test "x$enable_unit_tests" = x"yes" -a "x$1" != "xoptional"; then + if test "x$have_ld_wrap" = x"no"; then + AC_MSG_ERROR([--enable-unit-tests=yes specified but ld -wrap support is not available]) + fi +fi +AM_CONDITIONAL([HAVE_LD_WRAP], [test "$have_ld_wrap" = yes]) +# +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1235: -1- AC_DEFUN([XORG_CHECK_LINKER_FLAGS], [AC_MSG_CHECKING([whether the linker accepts $1]) +dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname: +AS_LITERAL_IF([$1], + [AC_CACHE_VAL(AS_TR_SH(xorg_cv_linker_flags_[$1]), [ + ax_save_FLAGS=$LDFLAGS + LDFLAGS="$1" + AC_LINK_IFELSE([m4_default([$4],[AC_LANG_PROGRAM()])], + AS_TR_SH(xorg_cv_linker_flags_[$1])=yes, + AS_TR_SH(xorg_cv_linker_flags_[$1])=no) + LDFLAGS=$ax_save_FLAGS])], + [ax_save_FLAGS=$LDFLAGS + LDFLAGS="$1" + AC_LINK_IFELSE([AC_LANG_PROGRAM()], + eval AS_TR_SH(xorg_cv_linker_flags_[$1])=yes, + eval AS_TR_SH(xorg_cv_linker_flags_[$1])=no) + LDFLAGS=$ax_save_FLAGS]) +eval xorg_check_linker_flags=$AS_TR_SH(xorg_cv_linker_flags_[$1]) +AC_MSG_RESULT($xorg_check_linker_flags) +if test "x$xorg_check_linker_flags" = xyes; then + m4_default([$2], :) +else + m4_default([$3], :) +fi +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1275: -1- AC_DEFUN([XORG_MEMORY_CHECK_FLAGS], [ + +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_ARG_VAR([XORG_MALLOC_DEBUG_ENV], + [Environment variables to enable memory checking in tests]) + +# Check for different types of support on different platforms +case $host_os in + solaris*) + AC_CHECK_LIB([umem], [umem_alloc], + [malloc_debug_env='LD_PRELOAD=libumem.so UMEM_DEBUG=default']) + ;; + *-gnu*) # GNU libc - Value is used as a single byte bit pattern, + # both directly and inverted, so should not be 0 or 255. + malloc_debug_env='MALLOC_PERTURB_=15' + ;; + darwin*) + malloc_debug_env='MallocPreScribble=1 MallocScribble=1 DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib' + ;; + *bsd*) + malloc_debug_env='MallocPreScribble=1 MallocScribble=1' + ;; +esac + +# User supplied flags override default flags +if test "x$XORG_MALLOC_DEBUG_ENV" != "x"; then + malloc_debug_env="$XORG_MALLOC_DEBUG_ENV" +fi + +AC_SUBST([XORG_MALLOC_DEBUG_ENV],[$malloc_debug_env]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1314: -1- AC_DEFUN([XORG_CHECK_MALLOC_ZERO], [ +AC_ARG_ENABLE(malloc0returnsnull, + AS_HELP_STRING([--enable-malloc0returnsnull], + [malloc(0) returns NULL (default: auto)]), + [MALLOC_ZERO_RETURNS_NULL=$enableval], + [MALLOC_ZERO_RETURNS_NULL=auto]) + +AC_MSG_CHECKING([whether malloc(0) returns NULL]) +if test "x$MALLOC_ZERO_RETURNS_NULL" = xauto; then + AC_RUN_IFELSE([AC_LANG_PROGRAM([ +#include +],[ + char *m0, *r0, *c0, *p; + m0 = malloc(0); + p = malloc(10); + r0 = realloc(p,0); + c0 = calloc(0,10); + exit((m0 == 0 || r0 == 0 || c0 == 0) ? 0 : 1); +])], + [MALLOC_ZERO_RETURNS_NULL=yes], + [MALLOC_ZERO_RETURNS_NULL=no], + [MALLOC_ZERO_RETURNS_NULL=yes]) +fi +AC_MSG_RESULT([$MALLOC_ZERO_RETURNS_NULL]) + +if test "x$MALLOC_ZERO_RETURNS_NULL" = xyes; then + MALLOC_ZERO_CFLAGS="-DMALLOC_0_RETURNS_NULL" + XMALLOC_ZERO_CFLAGS=$MALLOC_ZERO_CFLAGS + XTMALLOC_ZERO_CFLAGS="$MALLOC_ZERO_CFLAGS -DXTMALLOC_BC" +else + MALLOC_ZERO_CFLAGS="" + XMALLOC_ZERO_CFLAGS="" + XTMALLOC_ZERO_CFLAGS="" +fi + +AC_SUBST([MALLOC_ZERO_CFLAGS]) +AC_SUBST([XMALLOC_ZERO_CFLAGS]) +AC_SUBST([XTMALLOC_ZERO_CFLAGS]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1375: -1- AC_DEFUN([XORG_WITH_LINT], [ + +AC_ARG_VAR([LINT], [Path to a lint-style command]) +AC_ARG_VAR([LINT_FLAGS], [Flags for the lint-style command]) +AC_ARG_WITH(lint, [AS_HELP_STRING([--with-lint], + [Use a lint-style source code checker (default: disabled)])], + [use_lint=$withval], [use_lint=no]) + +# Obtain platform specific info like program name and options +# The lint program on FreeBSD and NetBSD is different from the one on Solaris +case $host_os in + *linux* | *openbsd* | kfreebsd*-gnu | darwin* | cygwin*) + lint_name=splint + lint_options="-badflag" + ;; + *freebsd* | *netbsd*) + lint_name=lint + lint_options="-u -b" + ;; + *solaris*) + lint_name=lint + lint_options="-u -b -h -erroff=E_INDISTING_FROM_TRUNC2" + ;; +esac + +# Test for the presence of the program (either guessed by the code or spelled out by the user) +if test "x$use_lint" = x"yes" ; then + AC_PATH_PROG([LINT], [$lint_name]) + if test "x$LINT" = "x"; then + AC_MSG_ERROR([--with-lint=yes specified but lint-style tool not found in PATH]) + fi +elif test "x$use_lint" = x"no" ; then + if test "x$LINT" != "x"; then + AC_MSG_WARN([ignoring LINT environment variable since --with-lint=no was specified]) + fi +else + AC_MSG_ERROR([--with-lint expects 'yes' or 'no'. Use LINT variable to specify path.]) +fi + +# User supplied flags override default flags +if test "x$LINT_FLAGS" != "x"; then + lint_options=$LINT_FLAGS +fi + +AC_SUBST([LINT_FLAGS],[$lint_options]) +AM_CONDITIONAL(LINT, [test "x$LINT" != x]) + +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1438: -1- AC_DEFUN([XORG_LINT_LIBRARY], [ +AC_REQUIRE([XORG_WITH_LINT]) +AC_ARG_ENABLE(lint-library, [AS_HELP_STRING([--enable-lint-library], + [Create lint library (default: disabled)])], + [make_lint_lib=$enableval], [make_lint_lib=no]) + +if test "x$make_lint_lib" = x"yes" ; then + LINTLIB=llib-l$1.ln + if test "x$LINT" = "x"; then + AC_MSG_ERROR([Cannot make lint library without --with-lint]) + fi +elif test "x$make_lint_lib" != x"no" ; then + AC_MSG_ERROR([--enable-lint-library expects 'yes' or 'no'.]) +fi + +AC_SUBST(LINTLIB) +AM_CONDITIONAL(MAKE_LINT_LIB, [test x$make_lint_lib != xno]) + +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1469: -1- AC_DEFUN([XORG_COMPILER_BRAND], [ +AC_LANG_CASE( + [C], [ + AC_REQUIRE([AC_PROG_CC_C99]) + ], + [C++], [ + AC_REQUIRE([AC_PROG_CXX]) + ] +) +AC_CHECK_DECL([__clang__], [CLANGCC="yes"], [CLANGCC="no"]) +AC_CHECK_DECL([__INTEL_COMPILER], [INTELCC="yes"], [INTELCC="no"]) +AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1496: -1- AC_DEFUN([XORG_TESTSET_CFLAG], [ +m4_if([$#], 0, [m4_fatal([XORG_TESTSET_CFLAG was given with an unsupported number of arguments])]) +m4_if([$#], 1, [m4_fatal([XORG_TESTSET_CFLAG was given with an unsupported number of arguments])]) + +AC_LANG_COMPILER_REQUIRE + +AC_LANG_CASE( + [C], [ + AC_REQUIRE([AC_PROG_CC_C99]) + define([PREFIX], [C]) + define([CACHE_PREFIX], [cc]) + define([COMPILER], [$CC]) + ], + [C++], [ + define([PREFIX], [CXX]) + define([CACHE_PREFIX], [cxx]) + define([COMPILER], [$CXX]) + ] +) + +[xorg_testset_save_]PREFIX[FLAGS]="$PREFIX[FLAGS]" + +if test "x$[xorg_testset_]CACHE_PREFIX[_unknown_warning_option]" = "x" ; then + PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option" + AC_CACHE_CHECK([if ]COMPILER[ supports -Werror=unknown-warning-option], + [xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option], + AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], + [xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option=yes], + [xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option=no])) + [xorg_testset_]CACHE_PREFIX[_unknown_warning_option]=$[xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option] + PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]" +fi + +if test "x$[xorg_testset_]CACHE_PREFIX[_unused_command_line_argument]" = "x" ; then + if test "x$[xorg_testset_]CACHE_PREFIX[_unknown_warning_option]" = "xyes" ; then + PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option" + fi + PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unused-command-line-argument" + AC_CACHE_CHECK([if ]COMPILER[ supports -Werror=unused-command-line-argument], + [xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument], + AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], + [xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument=yes], + [xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument=no])) + [xorg_testset_]CACHE_PREFIX[_unused_command_line_argument]=$[xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument] + PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]" +fi + +found="no" +m4_foreach([flag], m4_cdr($@), [ + if test $found = "no" ; then + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then + PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option" + fi + + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then + PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unused-command-line-argument" + fi + + PREFIX[FLAGS]="$PREFIX[FLAGS] ]flag[" + +dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname + AC_MSG_CHECKING([if ]COMPILER[ supports]flag[]) + cacheid=AS_TR_SH([xorg_cv_]CACHE_PREFIX[_flag_]flag[]) + AC_CACHE_VAL($cacheid, + [AC_LINK_IFELSE([AC_LANG_PROGRAM([int i;])], + [eval $cacheid=yes], + [eval $cacheid=no])]) + + PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]" + + eval supported=\$$cacheid + AC_MSG_RESULT([$supported]) + if test "$supported" = "yes" ; then + $1="$$1 ]flag[" + found="yes" + fi + fi +]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1588: -1- AC_DEFUN([XORG_COMPILER_FLAGS], [ +AC_REQUIRE([XORG_COMPILER_BRAND]) + +AC_ARG_ENABLE(selective-werror, + AS_HELP_STRING([--disable-selective-werror], + [Turn off selective compiler errors. (default: enabled)]), + [SELECTIVE_WERROR=$enableval], + [SELECTIVE_WERROR=yes]) + +AC_LANG_CASE( + [C], [ + define([PREFIX], [C]) + ], + [C++], [ + define([PREFIX], [CXX]) + ] +) +# -v is too short to test reliably with XORG_TESTSET_CFLAG +if test "x$SUNCC" = "xyes"; then + [BASE_]PREFIX[FLAGS]="-v" +else + [BASE_]PREFIX[FLAGS]="" +fi + +# This chunk of warnings were those that existed in the legacy CWARNFLAGS +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wall]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wpointer-arith]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-declarations]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wformat=2], [-Wformat]) + +AC_LANG_CASE( + [C], [ + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wstrict-prototypes]) + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-prototypes]) + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wnested-externs]) + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wbad-function-cast]) + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wold-style-definition]) + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wdeclaration-after-statement]) + ] +) + +# This chunk adds additional warnings that could catch undesired effects. +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wunused]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wuninitialized]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wshadow]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-qual]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-noreturn]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-format-attribute]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wredundant-decls]) + +# These are currently disabled because they are noisy. They will be enabled +# in the future once the codebase is sufficiently modernized to silence +# them. For now, I don't want them to drown out the other warnings. +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wlogical-op]) +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wparentheses]) +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-align]) + +# Turn some warnings into errors, so we don't accidently get successful builds +# when there are problems that should be fixed. + +if test "x$SELECTIVE_WERROR" = "xyes" ; then +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=implicit], [-errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=nonnull]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=init-self]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=main]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=missing-braces]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=sequence-point]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=return-type], [-errwarn=E_FUNC_HAS_NO_RETURN_STMT]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=trigraphs]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=array-bounds]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=write-strings]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=address]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=int-to-pointer-cast], [-errwarn=E_BAD_PTR_INT_COMBINATION]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=pointer-to-int-cast]) # Also -errwarn=E_BAD_PTR_INT_COMBINATION +else +AC_MSG_WARN([You have chosen not to turn some select compiler warnings into errors. This should not be necessary. Please report why you needed to do so in a bug report at $PACKAGE_BUGREPORT]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wimplicit]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wnonnull]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Winit-self]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmain]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-braces]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wsequence-point]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wreturn-type]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wtrigraphs]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Warray-bounds]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wwrite-strings]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Waddress]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wint-to-pointer-cast]) +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wpointer-to-int-cast]) +fi + +AC_SUBST([BASE_]PREFIX[FLAGS]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1694: -1- AC_DEFUN([XORG_CWARNFLAGS], [ +AC_REQUIRE([XORG_COMPILER_FLAGS]) +AC_REQUIRE([XORG_COMPILER_BRAND]) +AC_LANG_CASE( + [C], [ + CWARNFLAGS="$BASE_CFLAGS" + if test "x$GCC" = xyes ; then + CWARNFLAGS="$CWARNFLAGS -fno-strict-aliasing" + fi + AC_SUBST(CWARNFLAGS) + ] +) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1719: -1- AC_DEFUN([XORG_STRICT_OPTION], [ +AC_REQUIRE([XORG_CWARNFLAGS]) +AC_REQUIRE([XORG_COMPILER_FLAGS]) + +AC_ARG_ENABLE(strict-compilation, + AS_HELP_STRING([--enable-strict-compilation], + [Enable all warnings from compiler and make them errors (default: disabled)]), + [STRICT_COMPILE=$enableval], [STRICT_COMPILE=no]) + +AC_LANG_CASE( + [C], [ + define([PREFIX], [C]) + ], + [C++], [ + define([PREFIX], [CXX]) + ] +) + +[STRICT_]PREFIX[FLAGS]="" +XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-pedantic]) +XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-Werror], [-errwarn]) + +# Earlier versions of gcc (eg: 4.2) support -Werror=attributes, but do not +# activate it with -Werror, so we add it here explicitly. +XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-Werror=attributes]) + +if test "x$STRICT_COMPILE" = "xyes"; then + [BASE_]PREFIX[FLAGS]="$[BASE_]PREFIX[FLAGS] $[STRICT_]PREFIX[FLAGS]" + AC_LANG_CASE([C], [CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS"]) +fi +AC_SUBST([STRICT_]PREFIX[FLAGS]) +AC_SUBST([BASE_]PREFIX[FLAGS]) +AC_LANG_CASE([C], AC_SUBST([CWARNFLAGS])) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1760: -1- AC_DEFUN([XORG_DEFAULT_OPTIONS], [ +AC_REQUIRE([AC_PROG_INSTALL]) +XORG_COMPILER_FLAGS +XORG_CWARNFLAGS +XORG_STRICT_OPTION +XORG_RELEASE_VERSION +XORG_CHANGELOG +XORG_INSTALL +XORG_MANPAGE_SECTIONS +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])], + [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1780: -1- AC_DEFUN([XORG_INSTALL], [ +AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +macros_datadir=`$PKG_CONFIG --print-errors --variable=pkgdatadir xorg-macros` +INSTALL_CMD="(cp -f "$macros_datadir/INSTALL" \$(top_srcdir)/.INSTALL.tmp && \ +mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \ +|| (rm -f \$(top_srcdir)/.INSTALL.tmp; touch \$(top_srcdir)/INSTALL; \ +echo 'util-macros \"pkgdatadir\" from xorg-macros.pc not found: installing possibly empty INSTALL.' >&2)" +AC_SUBST([INSTALL_CMD]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1818: -1- AC_DEFUN([XORG_RELEASE_VERSION], [ + AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MAJOR], + [`echo $PACKAGE_VERSION | cut -d . -f 1`], + [Major version of this package]) + PVM=`echo $PACKAGE_VERSION | cut -d . -f 2 | cut -d - -f 1` + if test "x$PVM" = "x"; then + PVM="0" + fi + AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MINOR], + [$PVM], + [Minor version of this package]) + PVP=`echo $PACKAGE_VERSION | cut -d . -f 3 | cut -d - -f 1` + if test "x$PVP" = "x"; then + PVP="0" + fi + AC_DEFINE_UNQUOTED([PACKAGE_VERSION_PATCHLEVEL], + [$PVP], + [Patch version of this package]) +]) +m4trace:/usr/share/aclocal/xorg-macros.m4:1846: -1- AC_DEFUN([XORG_CHANGELOG], [ +CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp && \ +mv \$(top_srcdir)/.changelog.tmp \$(top_srcdir)/ChangeLog) \ +|| (rm -f \$(top_srcdir)/.changelog.tmp; touch \$(top_srcdir)/ChangeLog; \ +echo 'git directory not found: installing possibly empty changelog.' >&2)" +AC_SUBST([CHANGELOG_CMD]) +]) +m4trace:/usr/share/aclocal-1.14/amversion.m4:14: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.14' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.14.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) +m4trace:/usr/share/aclocal-1.14/amversion.m4:33: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.14.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) +m4trace:/usr/share/aclocal-1.14/auxdir.m4:47: -1- AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) +m4trace:/usr/share/aclocal-1.14/cond.m4:12: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) +m4trace:/usr/share/aclocal-1.14/depend.m4:26: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) +m4trace:/usr/share/aclocal-1.14/depend.m4:163: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) +m4trace:/usr/share/aclocal-1.14/depend.m4:171: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) +m4trace:/usr/share/aclocal-1.14/depout.m4:12: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} +]) +m4trace:/usr/share/aclocal-1.14/depout.m4:71: -1- AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) +m4trace:/usr/share/aclocal-1.14/init.m4:29: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi]) +m4trace:/usr/share/aclocal-1.14/init.m4:182: -1- AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) +m4trace:/usr/share/aclocal-1.14/install-sh.m4:11: -1- AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) +m4trace:/usr/share/aclocal-1.14/lead-dot.m4:10: -1- AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) +m4trace:/usr/share/aclocal-1.14/maintainer.m4:16: -1- AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), + [enable], [m4_define([am_maintainer_other], [disable])], + [disable], [m4_define([am_maintainer_other], [enable])], + [m4_define([am_maintainer_other], [enable]) + m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) +AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + dnl maintainer-mode's default is 'disable' unless 'enable' is passed + AC_ARG_ENABLE([maintainer-mode], + [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], + am_maintainer_other[ make rules and dependencies not useful + (and sometimes confusing) to the casual installer])], + [USE_MAINTAINER_MODE=$enableval], + [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) + AC_MSG_RESULT([$USE_MAINTAINER_MODE]) + AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST([MAINT])dnl + +]) +m4trace:/usr/share/aclocal-1.14/make.m4:12: -1- AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) +m4trace:/usr/share/aclocal-1.14/missing.m4:11: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) +m4trace:/usr/share/aclocal-1.14/missing.m4:20: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) +m4trace:/usr/share/aclocal-1.14/options.m4:11: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) +m4trace:/usr/share/aclocal-1.14/options.m4:17: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) +m4trace:/usr/share/aclocal-1.14/options.m4:23: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) +m4trace:/usr/share/aclocal-1.14/options.m4:29: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) +m4trace:/usr/share/aclocal-1.14/prog-cc-c-o.m4:12: -1- AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) +m4trace:/usr/share/aclocal-1.14/prog-cc-c-o.m4:47: -1- AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) +m4trace:/usr/share/aclocal-1.14/runlog.m4:12: -1- AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) +m4trace:/usr/share/aclocal-1.14/sanity.m4:11: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) +m4trace:/usr/share/aclocal-1.14/silent.m4:12: -1- AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) +m4trace:/usr/share/aclocal-1.14/strip.m4:17: -1- AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) +m4trace:/usr/share/aclocal-1.14/substnot.m4:12: -1- AC_DEFUN([_AM_SUBST_NOTMAKE]) +m4trace:/usr/share/aclocal-1.14/substnot.m4:17: -1- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) +m4trace:/usr/share/aclocal-1.14/tar.m4:23: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) +m4trace:m4/ax_gcc_builtin.m4:95: -1- AC_DEFUN([AX_GCC_BUILTIN], [ + AS_VAR_PUSHDEF([ac_var], [ax_cv_have_$1]) + + AC_CACHE_CHECK([for $1], [ac_var], [ + AC_LINK_IFELSE([AC_LANG_PROGRAM([], [ + m4_case([$1], + [__builtin_assume_aligned], [$1("", 0)], + [__builtin_bswap32], [$1(0)], + [__builtin_bswap64], [$1(0)], + [__builtin_choose_expr], [$1(0, 0, 0)], + [__builtin___clear_cache], [$1("", "")], + [__builtin_clrsb], [$1(0)], + [__builtin_clrsbl], [$1(0)], + [__builtin_clrsbll], [$1(0)], + [__builtin_clz], [$1(0)], + [__builtin_clzl], [$1(0)], + [__builtin_clzll], [$1(0)], + [__builtin_complex], [$1(0.0, 0.0)], + [__builtin_constant_p], [$1(0)], + [__builtin_ctz], [$1(0)], + [__builtin_ctzl], [$1(0)], + [__builtin_ctzll], [$1(0)], + [__builtin_expect], [$1(0, 0)], + [__builtin_ffs], [$1(0)], + [__builtin_ffsl], [$1(0)], + [__builtin_ffsll], [$1(0)], + [__builtin_fpclassify], [$1(0, 1, 2, 3, 4, 0.0)], + [__builtin_huge_val], [$1()], + [__builtin_huge_valf], [$1()], + [__builtin_huge_vall], [$1()], + [__builtin_inf], [$1()], + [__builtin_infd128], [$1()], + [__builtin_infd32], [$1()], + [__builtin_infd64], [$1()], + [__builtin_inff], [$1()], + [__builtin_infl], [$1()], + [__builtin_isinf_sign], [$1(0.0)], + [__builtin_nan], [$1("")], + [__builtin_nand128], [$1("")], + [__builtin_nand32], [$1("")], + [__builtin_nand64], [$1("")], + [__builtin_nanf], [$1("")], + [__builtin_nanl], [$1("")], + [__builtin_nans], [$1("")], + [__builtin_nansf], [$1("")], + [__builtin_nansl], [$1("")], + [__builtin_object_size], [$1("", 0)], + [__builtin_parity], [$1(0)], + [__builtin_parityl], [$1(0)], + [__builtin_parityll], [$1(0)], + [__builtin_popcount], [$1(0)], + [__builtin_popcountl], [$1(0)], + [__builtin_popcountll], [$1(0)], + [__builtin_powi], [$1(0, 0)], + [__builtin_powif], [$1(0, 0)], + [__builtin_powil], [$1(0, 0)], + [__builtin_prefetch], [$1("")], + [__builtin_trap], [$1()], + [__builtin_types_compatible_p], [$1(int, int)], + [__builtin_unreachable], [$1()], + [m4_warn([syntax], [Unsupported built-in $1, the test may fail]) + $1()] + ) + ])], + [AS_VAR_SET([ac_var], [yes])], + [AS_VAR_SET([ac_var], [no])]) + ]) + + AS_IF([test yes = AS_VAR_GET([ac_var])], + [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$1), 1, + [Define to 1 if the system has the `$1' built-in function])], []) + + AS_VAR_POPDEF([ac_var]) +]) +m4trace:m4/libtool.m4:69: -1- AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +]) +m4trace:m4/libtool.m4:107: -1- AU_DEFUN([AC_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) +m4trace:m4/libtool.m4:107: -1- AC_DEFUN([AC_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) +m4trace:m4/libtool.m4:108: -1- AU_DEFUN([AM_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) +m4trace:m4/libtool.m4:108: -1- AC_DEFUN([AM_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_LIBTOOL' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) +m4trace:m4/libtool.m4:609: -1- AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +\`$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test $[#] != 0 +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try \`$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try \`$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test "$silent" = yes && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +]) +m4trace:m4/libtool.m4:790: -1- AC_DEFUN([LT_SUPPORTED_TAG], []) +m4trace:m4/libtool.m4:801: -1- AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +]) +m4trace:m4/libtool.m4:893: -1- AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +m4trace:m4/libtool.m4:893: -1- AC_DEFUN([AC_LIBTOOL_CXX], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_CXX' is obsolete. +You should run autoupdate.])dnl +LT_LANG(C++)]) +m4trace:m4/libtool.m4:894: -1- AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +m4trace:m4/libtool.m4:894: -1- AC_DEFUN([AC_LIBTOOL_F77], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_F77' is obsolete. +You should run autoupdate.])dnl +LT_LANG(Fortran 77)]) +m4trace:m4/libtool.m4:895: -1- AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +m4trace:m4/libtool.m4:895: -1- AC_DEFUN([AC_LIBTOOL_FC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_FC' is obsolete. +You should run autoupdate.])dnl +LT_LANG(Fortran)]) +m4trace:m4/libtool.m4:896: -1- AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +m4trace:m4/libtool.m4:896: -1- AC_DEFUN([AC_LIBTOOL_GCJ], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_GCJ' is obsolete. +You should run autoupdate.])dnl +LT_LANG(Java)]) +m4trace:m4/libtool.m4:897: -1- AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +m4trace:m4/libtool.m4:897: -1- AC_DEFUN([AC_LIBTOOL_RC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_RC' is obsolete. +You should run autoupdate.])dnl +LT_LANG(Windows Resource)]) +m4trace:m4/libtool.m4:1225: -1- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[ --with-sysroot[=DIR] Search for dependent libraries within DIR + (or the compiler's sysroot if not specified).], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([${with_sysroot}]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and in which our libraries should be installed.])]) +m4trace:m4/libtool.m4:1515: -1- AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test x"[$]$2" = xyes; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +]) +m4trace:m4/libtool.m4:1557: -1- AU_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])]) +m4trace:m4/libtool.m4:1557: -1- AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_COMPILER_OPTION' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])]) +m4trace:m4/libtool.m4:1566: -1- AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +]) +m4trace:m4/libtool.m4:1601: -1- AU_DEFUN([AC_LIBTOOL_LINKER_OPTION], [m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])]) +m4trace:m4/libtool.m4:1601: -1- AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_LINKER_OPTION' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])]) +m4trace:m4/libtool.m4:1608: -1- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +]) +m4trace:m4/libtool.m4:1747: -1- AU_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])]) +m4trace:m4/libtool.m4:1747: -1- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_SYS_MAX_CMD_LEN' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])]) +m4trace:m4/libtool.m4:1858: -1- AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +]) +m4trace:m4/libtool.m4:1975: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])]) +m4trace:m4/libtool.m4:1975: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN_SELF' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])]) +m4trace:m4/libtool.m4:2945: -1- AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +]) +m4trace:m4/libtool.m4:3007: -1- AU_DEFUN([AC_PATH_TOOL_PREFIX], [m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])]) +m4trace:m4/libtool.m4:3007: -1- AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_DIAGNOSE([obsolete], [The macro `AC_PATH_TOOL_PREFIX' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])]) +m4trace:m4/libtool.m4:3030: -1- AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi]) +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +]) +m4trace:m4/libtool.m4:3500: -1- AU_DEFUN([AM_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) +m4trace:m4/libtool.m4:3500: -1- AC_DEFUN([AM_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_NM' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) +m4trace:m4/libtool.m4:3501: -1- AU_DEFUN([AC_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) +m4trace:m4/libtool.m4:3501: -1- AC_DEFUN([AC_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_NM' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) +m4trace:m4/libtool.m4:3571: -1- AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +AC_SUBST([LIBM]) +]) +m4trace:m4/libtool.m4:3590: -1- AU_DEFUN([AC_CHECK_LIBM], [m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])]) +m4trace:m4/libtool.m4:3590: -1- AC_DEFUN([AC_CHECK_LIBM], [AC_DIAGNOSE([obsolete], [The macro `AC_CHECK_LIBM' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])]) +m4trace:m4/libtool.m4:7637: -1- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) +m4trace:m4/libtool.m4:7646: -1- AU_DEFUN([LT_AC_PROG_GCJ], [m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])]) +m4trace:m4/libtool.m4:7646: -1- AC_DEFUN([LT_AC_PROG_GCJ], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_GCJ' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])]) +m4trace:m4/libtool.m4:7653: -1- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) +]) +m4trace:m4/libtool.m4:7660: -1- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) +]) +m4trace:m4/libtool.m4:7665: -1- AU_DEFUN([LT_AC_PROG_RC], [m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])]) +m4trace:m4/libtool.m4:7665: -1- AC_DEFUN([LT_AC_PROG_RC], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_RC' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])]) +m4trace:m4/libtool.m4:7785: -1- AU_DEFUN([LT_AC_PROG_SED], [m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])]) +m4trace:m4/libtool.m4:7785: -1- AC_DEFUN([LT_AC_PROG_SED], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_SED' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])]) +m4trace:m4/ltoptions.m4:14: -1- AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) +m4trace:m4/ltoptions.m4:111: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `dlopen' option into LT_INIT's first parameter.]) +]) +m4trace:m4/ltoptions.m4:111: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN' is obsolete. +You should run autoupdate.])dnl +_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `dlopen' option into LT_INIT's first parameter.]) +]) +m4trace:m4/ltoptions.m4:146: -1- AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `win32-dll' option into LT_INIT's first parameter.]) +]) +m4trace:m4/ltoptions.m4:146: -1- AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_WIN32_DLL' is obsolete. +You should run autoupdate.])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `win32-dll' option into LT_INIT's first parameter.]) +]) +m4trace:m4/ltoptions.m4:195: -1- AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) +m4trace:m4/ltoptions.m4:199: -1- AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) +m4trace:m4/ltoptions.m4:203: -1- AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +m4trace:m4/ltoptions.m4:203: -1- AC_DEFUN([AM_ENABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_SHARED' is obsolete. +You should run autoupdate.])dnl +AC_ENABLE_SHARED($@)]) +m4trace:m4/ltoptions.m4:204: -1- AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +m4trace:m4/ltoptions.m4:204: -1- AC_DEFUN([AM_DISABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_SHARED' is obsolete. +You should run autoupdate.])dnl +AC_DISABLE_SHARED($@)]) +m4trace:m4/ltoptions.m4:249: -1- AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) +m4trace:m4/ltoptions.m4:253: -1- AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) +]) +m4trace:m4/ltoptions.m4:257: -1- AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +m4trace:m4/ltoptions.m4:257: -1- AC_DEFUN([AM_ENABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_STATIC' is obsolete. +You should run autoupdate.])dnl +AC_ENABLE_STATIC($@)]) +m4trace:m4/ltoptions.m4:258: -1- AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +m4trace:m4/ltoptions.m4:258: -1- AC_DEFUN([AM_DISABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_STATIC' is obsolete. +You should run autoupdate.])dnl +AC_DISABLE_STATIC($@)]) +m4trace:m4/ltoptions.m4:303: -1- AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `fast-install' option into LT_INIT's first parameter.]) +]) +m4trace:m4/ltoptions.m4:303: -1- AC_DEFUN([AC_ENABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_ENABLE_FAST_INSTALL' is obsolete. +You should run autoupdate.])dnl +_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `fast-install' option into LT_INIT's first parameter.]) +]) +m4trace:m4/ltoptions.m4:310: -1- AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `disable-fast-install' option into LT_INIT's first parameter.]) +]) +m4trace:m4/ltoptions.m4:310: -1- AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_DISABLE_FAST_INSTALL' is obsolete. +You should run autoupdate.])dnl +_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `disable-fast-install' option into LT_INIT's first parameter.]) +]) +m4trace:m4/ltoptions.m4:358: -1- AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `pic-only' option into LT_INIT's first parameter.]) +]) +m4trace:m4/ltoptions.m4:358: -1- AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_PICMODE' is obsolete. +You should run autoupdate.])dnl +_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `pic-only' option into LT_INIT's first parameter.]) +]) +m4trace:m4/ltsugar.m4:13: -1- AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) +m4trace:m4/ltversion.m4:18: -1- AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.2' +macro_revision='1.3337' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) +m4trace:m4/lt~obsolete.m4:36: -1- AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) +m4trace:m4/lt~obsolete.m4:40: -1- AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH]) +m4trace:m4/lt~obsolete.m4:41: -1- AC_DEFUN([_LT_AC_SHELL_INIT]) +m4trace:m4/lt~obsolete.m4:42: -1- AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX]) +m4trace:m4/lt~obsolete.m4:44: -1- AC_DEFUN([_LT_AC_TAGVAR]) +m4trace:m4/lt~obsolete.m4:45: -1- AC_DEFUN([AC_LTDL_ENABLE_INSTALL]) +m4trace:m4/lt~obsolete.m4:46: -1- AC_DEFUN([AC_LTDL_PREOPEN]) +m4trace:m4/lt~obsolete.m4:47: -1- AC_DEFUN([_LT_AC_SYS_COMPILER]) +m4trace:m4/lt~obsolete.m4:48: -1- AC_DEFUN([_LT_AC_LOCK]) +m4trace:m4/lt~obsolete.m4:49: -1- AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE]) +m4trace:m4/lt~obsolete.m4:50: -1- AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF]) +m4trace:m4/lt~obsolete.m4:51: -1- AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O]) +m4trace:m4/lt~obsolete.m4:52: -1- AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS]) +m4trace:m4/lt~obsolete.m4:53: -1- AC_DEFUN([AC_LIBTOOL_OBJDIR]) +m4trace:m4/lt~obsolete.m4:54: -1- AC_DEFUN([AC_LTDL_OBJDIR]) +m4trace:m4/lt~obsolete.m4:55: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH]) +m4trace:m4/lt~obsolete.m4:56: -1- AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP]) +m4trace:m4/lt~obsolete.m4:57: -1- AC_DEFUN([AC_PATH_MAGIC]) +m4trace:m4/lt~obsolete.m4:58: -1- AC_DEFUN([AC_PROG_LD_GNU]) +m4trace:m4/lt~obsolete.m4:59: -1- AC_DEFUN([AC_PROG_LD_RELOAD_FLAG]) +m4trace:m4/lt~obsolete.m4:60: -1- AC_DEFUN([AC_DEPLIBS_CHECK_METHOD]) +m4trace:m4/lt~obsolete.m4:61: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI]) +m4trace:m4/lt~obsolete.m4:62: -1- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE]) +m4trace:m4/lt~obsolete.m4:63: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC]) +m4trace:m4/lt~obsolete.m4:64: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS]) +m4trace:m4/lt~obsolete.m4:65: -1- AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP]) +m4trace:m4/lt~obsolete.m4:66: -1- AC_DEFUN([LT_AC_PROG_EGREP]) +m4trace:m4/lt~obsolete.m4:71: -1- AC_DEFUN([_AC_PROG_LIBTOOL]) +m4trace:m4/lt~obsolete.m4:72: -1- AC_DEFUN([AC_LIBTOOL_SETUP]) +m4trace:m4/lt~obsolete.m4:73: -1- AC_DEFUN([_LT_AC_CHECK_DLFCN]) +m4trace:m4/lt~obsolete.m4:74: -1- AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER]) +m4trace:m4/lt~obsolete.m4:75: -1- AC_DEFUN([_LT_AC_TAGCONFIG]) +m4trace:m4/lt~obsolete.m4:77: -1- AC_DEFUN([_LT_AC_LANG_CXX]) +m4trace:m4/lt~obsolete.m4:78: -1- AC_DEFUN([_LT_AC_LANG_F77]) +m4trace:m4/lt~obsolete.m4:79: -1- AC_DEFUN([_LT_AC_LANG_GCJ]) +m4trace:m4/lt~obsolete.m4:80: -1- AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG]) +m4trace:m4/lt~obsolete.m4:81: -1- AC_DEFUN([_LT_AC_LANG_C_CONFIG]) +m4trace:m4/lt~obsolete.m4:82: -1- AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG]) +m4trace:m4/lt~obsolete.m4:83: -1- AC_DEFUN([_LT_AC_LANG_CXX_CONFIG]) +m4trace:m4/lt~obsolete.m4:84: -1- AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG]) +m4trace:m4/lt~obsolete.m4:85: -1- AC_DEFUN([_LT_AC_LANG_F77_CONFIG]) +m4trace:m4/lt~obsolete.m4:86: -1- AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG]) +m4trace:m4/lt~obsolete.m4:87: -1- AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG]) +m4trace:m4/lt~obsolete.m4:88: -1- AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG]) +m4trace:m4/lt~obsolete.m4:89: -1- AC_DEFUN([_LT_AC_LANG_RC_CONFIG]) +m4trace:m4/lt~obsolete.m4:90: -1- AC_DEFUN([AC_LIBTOOL_CONFIG]) +m4trace:m4/lt~obsolete.m4:91: -1- AC_DEFUN([_LT_AC_FILE_LTDLL_C]) +m4trace:m4/lt~obsolete.m4:93: -1- AC_DEFUN([_LT_AC_PROG_CXXCPP]) +m4trace:m4/lt~obsolete.m4:96: -1- AC_DEFUN([_LT_PROG_F77]) +m4trace:m4/lt~obsolete.m4:97: -1- AC_DEFUN([_LT_PROG_FC]) +m4trace:m4/lt~obsolete.m4:98: -1- AC_DEFUN([_LT_PROG_CXX]) +m4trace:configure.ac:25: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.ac:25: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.ac:25: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) +m4trace:configure.ac:25: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.ac:25: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.ac:25: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.ac:25: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^SHELL$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PATH_SEPARATOR$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^exec_prefix$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^prefix$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^program_transform_name$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^bindir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^sbindir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^libexecdir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^datarootdir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^datadir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^sysconfdir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^sharedstatedir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^localstatedir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^includedir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^oldincludedir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^docdir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^infodir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^htmldir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^dvidir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^pdfdir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^psdir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^libdir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^mandir$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^DEFS$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^ECHO_C$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^ECHO_N$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^ECHO_T$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^build_alias$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^host_alias$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^target_alias$]) +m4trace:configure.ac:30: -1- AC_CONFIG_MACRO_DIR([m4]) +m4trace:configure.ac:34: -1- AM_INIT_AUTOMAKE([foreign dist-xz no-dist-gzip subdir-objects color-tests parallel-tests check-news]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) +m4trace:configure.ac:34: -1- AM_SET_CURRENT_AUTOMAKE_VERSION +m4trace:configure.ac:34: -1- AM_AUTOMAKE_VERSION([1.14.1]) +m4trace:configure.ac:34: -1- _AM_AUTOCONF_VERSION([2.69]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^INSTALL_DATA$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^am__isrc$]) +m4trace:configure.ac:34: -1- _AM_SUBST_NOTMAKE([am__isrc]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^CYGPATH_W$]) +m4trace:configure.ac:34: -1- _AM_SET_OPTIONS([foreign dist-xz no-dist-gzip subdir-objects color-tests parallel-tests check-news]) +m4trace:configure.ac:34: -1- _AM_SET_OPTION([foreign]) +m4trace:configure.ac:34: -2- _AM_MANGLE_OPTION([foreign]) +m4trace:configure.ac:34: -1- _AM_SET_OPTION([dist-xz]) +m4trace:configure.ac:34: -2- _AM_MANGLE_OPTION([dist-xz]) +m4trace:configure.ac:34: -1- _AM_SET_OPTION([no-dist-gzip]) +m4trace:configure.ac:34: -2- _AM_MANGLE_OPTION([no-dist-gzip]) +m4trace:configure.ac:34: -1- _AM_SET_OPTION([subdir-objects]) +m4trace:configure.ac:34: -2- _AM_MANGLE_OPTION([subdir-objects]) +m4trace:configure.ac:34: -1- _AM_SET_OPTION([color-tests]) +m4trace:configure.ac:34: -2- _AM_MANGLE_OPTION([color-tests]) +m4trace:configure.ac:34: -1- _AM_SET_OPTION([parallel-tests]) +m4trace:configure.ac:34: -2- _AM_MANGLE_OPTION([parallel-tests]) +m4trace:configure.ac:34: -1- _AM_SET_OPTION([check-news]) +m4trace:configure.ac:34: -2- _AM_MANGLE_OPTION([check-news]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:34: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])]) +m4trace:configure.ac:34: -2- _AM_MANGLE_OPTION([no-define]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:34: -1- AM_SANITY_CHECK +m4trace:configure.ac:34: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +m4trace:configure.ac:34: -1- AM_MISSING_HAS_RUN +m4trace:configure.ac:34: -1- AM_AUX_DIR_EXPAND +m4trace:configure.ac:34: -1- m4_pattern_allow([^ACLOCAL$]) +m4trace:configure.ac:34: -1- AM_MISSING_PROG([AUTOCONF], [autoconf]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AUTOCONF$]) +m4trace:configure.ac:34: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AUTOMAKE$]) +m4trace:configure.ac:34: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AUTOHEADER$]) +m4trace:configure.ac:34: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^MAKEINFO$]) +m4trace:configure.ac:34: -1- AM_PROG_INSTALL_SH +m4trace:configure.ac:34: -1- m4_pattern_allow([^install_sh$]) +m4trace:configure.ac:34: -1- AM_PROG_INSTALL_STRIP +m4trace:configure.ac:34: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^MKDIR_P$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^mkdir_p$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AWK$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^SET_MAKE$]) +m4trace:configure.ac:34: -1- AM_SET_LEADING_DOT +m4trace:configure.ac:34: -1- m4_pattern_allow([^am__leading_dot$]) +m4trace:configure.ac:34: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +m4trace:configure.ac:34: -2- _AM_MANGLE_OPTION([tar-ustar]) +m4trace:configure.ac:34: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])]) +m4trace:configure.ac:34: -2- _AM_MANGLE_OPTION([tar-pax]) +m4trace:configure.ac:34: -1- _AM_PROG_TAR([v7]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AMTAR$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^am__tar$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^am__untar$]) +m4trace:configure.ac:34: -1- _AM_IF_OPTION([no-dependencies], [], [AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +m4trace:configure.ac:34: -2- _AM_MANGLE_OPTION([no-dependencies]) +m4trace:configure.ac:34: -1- AM_SILENT_RULES +m4trace:configure.ac:34: -1- m4_pattern_allow([^AM_V$]) +m4trace:configure.ac:34: -1- AM_SUBST_NOTMAKE([AM_V]) +m4trace:configure.ac:34: -1- _AM_SUBST_NOTMAKE([AM_V]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AM_DEFAULT_V$]) +m4trace:configure.ac:34: -1- AM_SUBST_NOTMAKE([AM_DEFAULT_V]) +m4trace:configure.ac:34: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$]) +m4trace:configure.ac:34: -1- m4_pattern_allow([^AM_BACKSLASH$]) +m4trace:configure.ac:34: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH]) +m4trace:configure.ac:35: -1- AM_MAINTAINER_MODE([enable]) +m4trace:configure.ac:35: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MAINTAINER_MODE_TRUE$]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MAINTAINER_MODE_FALSE$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_TRUE]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_FALSE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MAINT$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CFLAGS$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^ac_ct_CC$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^EXEEXT$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^OBJEXT$]) +m4trace:configure.ac:38: -1- _AM_PROG_CC_C_O +m4trace:configure.ac:38: -1- AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) +m4trace:configure.ac:38: -1- _AM_DEPENDENCIES([CC]) +m4trace:configure.ac:38: -1- AM_SET_DEPDIR +m4trace:configure.ac:38: -1- m4_pattern_allow([^DEPDIR$]) +m4trace:configure.ac:38: -1- AM_OUTPUT_DEPENDENCY_COMMANDS +m4trace:configure.ac:38: -1- AM_MAKE_INCLUDE +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__include$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__quote$]) +m4trace:configure.ac:38: -1- AM_DEP_TRACK +m4trace:configure.ac:38: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEP_TRUE$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEP_FALSE$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__nodep$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__nodep]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CCDEPMODE$]) +m4trace:configure.ac:38: -1- AM_CONDITIONAL([am__fastdepCC], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:38: -1- AC_PROG_EGREP +m4trace:configure.ac:38: -1- m4_pattern_allow([^GREP$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^EGREP$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^STDC_HEADERS$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_SOURCE$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_1_SOURCE$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_MINIX$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__EXTENSIONS__$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_ALL_SOURCE$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_GNU_SOURCE$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_PTHREAD_SEMANTICS$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_TANDEM_SOURCE$]) +m4trace:configure.ac:41: -1- LT_INIT +m4trace:configure.ac:41: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$]) +m4trace:configure.ac:41: -1- LTOPTIONS_VERSION +m4trace:configure.ac:41: -1- LTSUGAR_VERSION +m4trace:configure.ac:41: -1- LTVERSION_VERSION +m4trace:configure.ac:41: -1- LTOBSOLETE_VERSION +m4trace:configure.ac:41: -1- _LT_PROG_LTMAIN +m4trace:configure.ac:41: -1- m4_pattern_allow([^LIBTOOL$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^build$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^build_cpu$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^build_vendor$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^build_os$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^host$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^host_cpu$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^host_vendor$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^host_os$]) +m4trace:configure.ac:41: -1- _LT_PREPARE_SED_QUOTE_VARS +m4trace:configure.ac:41: -1- _LT_PROG_ECHO_BACKSLASH +m4trace:configure.ac:41: -1- LT_PATH_LD +m4trace:configure.ac:41: -1- m4_pattern_allow([^SED$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^FGREP$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^GREP$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^LD$]) +m4trace:configure.ac:41: -1- LT_PATH_NM +m4trace:configure.ac:41: -1- m4_pattern_allow([^DUMPBIN$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^ac_ct_DUMPBIN$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^DUMPBIN$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^NM$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^LN_S$]) +m4trace:configure.ac:41: -1- LT_CMD_MAX_LEN +m4trace:configure.ac:41: -1- m4_pattern_allow([^OBJDUMP$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^OBJDUMP$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^DLLTOOL$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^DLLTOOL$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^ac_ct_AR$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:41: -1- _LT_WITH_SYSROOT +m4trace:configure.ac:41: -1- m4_pattern_allow([LT_OBJDIR]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^LT_OBJDIR$]) +m4trace:configure.ac:41: -1- _LT_CC_BASENAME([$compiler]) +m4trace:configure.ac:41: -1- _LT_PATH_TOOL_PREFIX([${ac_tool_prefix}file], [/usr/bin$PATH_SEPARATOR$PATH]) +m4trace:configure.ac:41: -1- _LT_PATH_TOOL_PREFIX([file], [/usr/bin$PATH_SEPARATOR$PATH]) +m4trace:configure.ac:41: -1- LT_SUPPORTED_TAG([CC]) +m4trace:configure.ac:41: -1- _LT_COMPILER_BOILERPLATE +m4trace:configure.ac:41: -1- _LT_LINKER_BOILERPLATE +m4trace:configure.ac:41: -1- _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], [lt_cv_prog_compiler_rtti_exceptions], [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, )="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, ) -fno-rtti -fno-exceptions"]) +m4trace:configure.ac:41: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, ) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, )], [$_LT_TAGVAR(lt_prog_compiler_pic, )@&t@m4_if([],[],[ -DPIC],[m4_if([],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, ) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, )=" $_LT_TAGVAR(lt_prog_compiler_pic, )" ;; + esac], [_LT_TAGVAR(lt_prog_compiler_pic, )= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, )=no]) +m4trace:configure.ac:41: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, )=]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^MANIFEST_TOOL$]) +m4trace:configure.ac:41: -1- _LT_REQUIRED_DARWIN_CHECKS +m4trace:configure.ac:41: -1- m4_pattern_allow([^DSYMUTIL$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^NMEDIT$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^LIPO$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^OTOOL$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^OTOOL64$]) +m4trace:configure.ac:41: -1- _LT_LINKER_OPTION([if $CC understands -b], [lt_cv_prog_compiler__b], [-b], [_LT_TAGVAR(archive_cmds, )='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, )='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags']) +m4trace:configure.ac:41: -1- LT_SYS_DLOPEN_SELF +m4trace:configure.ac:41: -1- m4_pattern_allow([^HAVE_DLFCN_H$]) +m4trace:configure.ac:47: -1- XORG_DEFAULT_OPTIONS +m4trace:configure.ac:47: -1- XORG_COMPILER_FLAGS +m4trace:configure.ac:47: -1- XORG_COMPILER_BRAND +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wall]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wpointer-arith]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-declarations]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wformat=2], [-Wformat]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wstrict-prototypes]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-prototypes]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wnested-externs]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wbad-function-cast]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wold-style-definition]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wdeclaration-after-statement]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wunused]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wuninitialized]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wshadow]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-qual]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-noreturn]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-format-attribute]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wredundant-decls]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=implicit], [-errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=nonnull]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=init-self]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=main]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=missing-braces]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=sequence-point]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=return-type], [-errwarn=E_FUNC_HAS_NO_RETURN_STMT]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=trigraphs]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=array-bounds]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=write-strings]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=address]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=int-to-pointer-cast], [-errwarn=E_BAD_PTR_INT_COMBINATION]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=pointer-to-int-cast]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wimplicit]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wnonnull]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Winit-self]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmain]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-braces]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wsequence-point]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wreturn-type]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wtrigraphs]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Warray-bounds]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wwrite-strings]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Waddress]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wint-to-pointer-cast]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wpointer-to-int-cast]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^BASE_CFLAGS$]) +m4trace:configure.ac:47: -1- XORG_CWARNFLAGS +m4trace:configure.ac:47: -1- m4_pattern_allow([^CWARNFLAGS$]) +m4trace:configure.ac:47: -1- XORG_STRICT_OPTION +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-pedantic]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-Werror], [-errwarn]) +m4trace:configure.ac:47: -1- XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-Werror=attributes]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^STRICT_CFLAGS$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^BASE_CFLAGS$]) +m4trace:configure.ac:47: -2- m4_pattern_allow([^CWARNFLAGS$]) +m4trace:configure.ac:47: -1- XORG_RELEASE_VERSION +m4trace:configure.ac:47: -1- m4_pattern_allow([^PACKAGE_VERSION_MAJOR$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PACKAGE_VERSION_MINOR$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PACKAGE_VERSION_PATCHLEVEL$]) +m4trace:configure.ac:47: -1- XORG_CHANGELOG +m4trace:configure.ac:47: -1- m4_pattern_allow([^CHANGELOG_CMD$]) +m4trace:configure.ac:47: -1- XORG_INSTALL +m4trace:configure.ac:47: -1- PKG_PROG_PKG_CONFIG +m4trace:configure.ac:47: -1- m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PKG_CONFIG_PATH$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PKG_CONFIG_LIBDIR$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^INSTALL_CMD$]) +m4trace:configure.ac:47: -1- XORG_MANPAGE_SECTIONS +m4trace:configure.ac:47: -1- m4_pattern_allow([^APP_MAN_SUFFIX$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^LIB_MAN_SUFFIX$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^FILE_MAN_SUFFIX$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^MISC_MAN_SUFFIX$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^DRIVER_MAN_SUFFIX$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^ADMIN_MAN_SUFFIX$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^APP_MAN_DIR$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^LIB_MAN_DIR$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^FILE_MAN_DIR$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^MISC_MAN_DIR$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^DRIVER_MAN_DIR$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^ADMIN_MAN_DIR$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^XORG_MAN_PAGE$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^MAN_SUBSTS$]) +m4trace:configure.ac:47: -1- AM_SILENT_RULES([yes]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^AM_V$]) +m4trace:configure.ac:47: -1- AM_SUBST_NOTMAKE([AM_V]) +m4trace:configure.ac:47: -1- _AM_SUBST_NOTMAKE([AM_V]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^AM_DEFAULT_V$]) +m4trace:configure.ac:47: -1- AM_SUBST_NOTMAKE([AM_DEFAULT_V]) +m4trace:configure.ac:47: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^AM_BACKSLASH$]) +m4trace:configure.ac:47: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH]) +m4trace:configure.ac:48: -1- XORG_MEMORY_CHECK_FLAGS +m4trace:configure.ac:48: -1- m4_pattern_allow([^XORG_MALLOC_DEBUG_ENV$]) +m4trace:configure.ac:48: -1- m4_pattern_allow([^XORG_MALLOC_DEBUG_ENV$]) +m4trace:configure.ac:49: -1- XORG_ENABLE_DOCS +m4trace:configure.ac:49: -1- AM_CONDITIONAL([ENABLE_DOCS], [test x$build_docs = xyes]) +m4trace:configure.ac:49: -1- m4_pattern_allow([^ENABLE_DOCS_TRUE$]) +m4trace:configure.ac:49: -1- m4_pattern_allow([^ENABLE_DOCS_FALSE$]) +m4trace:configure.ac:49: -1- _AM_SUBST_NOTMAKE([ENABLE_DOCS_TRUE]) +m4trace:configure.ac:49: -1- _AM_SUBST_NOTMAKE([ENABLE_DOCS_FALSE]) +m4trace:configure.ac:50: -1- XORG_WITH_DOXYGEN +m4trace:configure.ac:50: -1- m4_pattern_allow([^DOXYGEN$]) +m4trace:configure.ac:50: -1- m4_pattern_allow([^DOXYGEN$]) +m4trace:configure.ac:50: -1- m4_pattern_allow([^DOXYGEN$]) +m4trace:configure.ac:50: -1- AM_CONDITIONAL([HAVE_DOXYGEN], [test "$have_doxygen" = yes]) +m4trace:configure.ac:50: -1- m4_pattern_allow([^HAVE_DOXYGEN_TRUE$]) +m4trace:configure.ac:50: -1- m4_pattern_allow([^HAVE_DOXYGEN_FALSE$]) +m4trace:configure.ac:50: -1- _AM_SUBST_NOTMAKE([HAVE_DOXYGEN_TRUE]) +m4trace:configure.ac:50: -1- _AM_SUBST_NOTMAKE([HAVE_DOXYGEN_FALSE]) +m4trace:configure.ac:53: -1- AM_PROG_CC_C_O +m4trace:configure.ac:60: -1- PKG_PROG_PKG_CONFIG +m4trace:configure.ac:60: -1- m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4trace:configure.ac:60: -1- m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4trace:configure.ac:60: -1- m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +m4trace:configure.ac:60: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:60: -1- m4_pattern_allow([^PKG_CONFIG_PATH$]) +m4trace:configure.ac:60: -1- m4_pattern_allow([^PKG_CONFIG_LIBDIR$]) +m4trace:configure.ac:60: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:64: -1- m4_pattern_allow([^YACC$]) +m4trace:configure.ac:64: -1- m4_pattern_allow([^YACC$]) +m4trace:configure.ac:64: -1- m4_pattern_allow([^YFLAGS$]) +m4trace:configure.ac:65: -1- m4_pattern_allow([^YACC_INST$]) +m4trace:configure.ac:85: -1- AX_GCC_BUILTIN([__builtin_expect]) +m4trace:configure.ac:85: -1- m4_pattern_allow([^HAVE___BUILTIN_EXPECT$]) +m4trace:configure.ac:89: -1- AM_CONDITIONAL([BUILD_LINUX_TESTS], [test "x$ac_cv_header_linux_input_h" = xyes]) +m4trace:configure.ac:89: -1- m4_pattern_allow([^BUILD_LINUX_TESTS_TRUE$]) +m4trace:configure.ac:89: -1- m4_pattern_allow([^BUILD_LINUX_TESTS_FALSE$]) +m4trace:configure.ac:89: -1- _AM_SUBST_NOTMAKE([BUILD_LINUX_TESTS_TRUE]) +m4trace:configure.ac:89: -1- _AM_SUBST_NOTMAKE([BUILD_LINUX_TESTS_FALSE]) +m4trace:configure.ac:91: -1- XORG_TESTSET_CFLAG([BASE_CFLAGS], [-fvisibility=hidden]) +m4trace:configure.ac:92: -1- XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wextra -Wno-unused-parameter -Wno-missing-field-initializers]) +m4trace:configure.ac:93: -1- XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wdocumentation]) +m4trace:configure.ac:101: -1- XORG_CHECK_LINKER_FLAGS([-Wl,--no-undefined], [have_no_undefined=yes]) +m4trace:configure.ac:104: -1- AM_CONDITIONAL([HAVE_NO_UNDEFINED], [test "x$have_no_undefined" = xyes]) +m4trace:configure.ac:104: -1- m4_pattern_allow([^HAVE_NO_UNDEFINED_TRUE$]) +m4trace:configure.ac:104: -1- m4_pattern_allow([^HAVE_NO_UNDEFINED_FALSE$]) +m4trace:configure.ac:104: -1- _AM_SUBST_NOTMAKE([HAVE_NO_UNDEFINED_TRUE]) +m4trace:configure.ac:104: -1- _AM_SUBST_NOTMAKE([HAVE_NO_UNDEFINED_FALSE]) +m4trace:configure.ac:106: -1- m4_pattern_allow([^RT_LIBS$]) +m4trace:configure.ac:106: -1- m4_pattern_allow([^RT_LIBS$]) +m4trace:configure.ac:121: -1- m4_pattern_allow([^XKBCONFIGROOT$]) +m4trace:configure.ac:129: -1- m4_pattern_allow([^XLOCALEDIR$]) +m4trace:configure.ac:136: -1- m4_pattern_allow([^DEFAULT_XKB_RULES$]) +m4trace:configure.ac:144: -1- m4_pattern_allow([^DEFAULT_XKB_MODEL$]) +m4trace:configure.ac:152: -1- m4_pattern_allow([^DEFAULT_XKB_LAYOUT$]) +m4trace:configure.ac:160: -1- m4_pattern_allow([^DEFAULT_XKB_VARIANT$]) +m4trace:configure.ac:170: -1- m4_pattern_allow([^DEFAULT_XKB_OPTIONS$]) +m4trace:configure.ac:179: -1- PKG_CHECK_MODULES([XCB_XKB], [xcb xcb-xkb >= 1.10], [], [AC_MSG_ERROR([xkbcommon-x11 requires xcb-xkb >= 1.10 which was not found. \ +You can disable X11 support with --disable-x11.])]) +m4trace:configure.ac:179: -1- m4_pattern_allow([^XCB_XKB_CFLAGS$]) +m4trace:configure.ac:179: -1- m4_pattern_allow([^XCB_XKB_LIBS$]) +m4trace:configure.ac:179: -1- PKG_CHECK_EXISTS([xcb xcb-xkb >= 1.10], [pkg_cv_[]XCB_XKB_CFLAGS=`$PKG_CONFIG --[]cflags "xcb xcb-xkb >= 1.10" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) +m4trace:configure.ac:179: -1- PKG_CHECK_EXISTS([xcb xcb-xkb >= 1.10], [pkg_cv_[]XCB_XKB_LIBS=`$PKG_CONFIG --[]libs "xcb xcb-xkb >= 1.10" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) +m4trace:configure.ac:179: -1- _PKG_SHORT_ERRORS_SUPPORTED +m4trace:configure.ac:184: -1- AM_CONDITIONAL([ENABLE_X11], [test "x$enable_x11" = xyes]) +m4trace:configure.ac:184: -1- m4_pattern_allow([^ENABLE_X11_TRUE$]) +m4trace:configure.ac:184: -1- m4_pattern_allow([^ENABLE_X11_FALSE$]) +m4trace:configure.ac:184: -1- _AM_SUBST_NOTMAKE([ENABLE_X11_TRUE]) +m4trace:configure.ac:184: -1- _AM_SUBST_NOTMAKE([ENABLE_X11_FALSE]) +m4trace:configure.ac:194: -1- m4_pattern_allow([^LIB@&t@OBJS$]) +m4trace:configure.ac:194: -1- m4_pattern_allow([^LTLIBOBJS$]) +m4trace:configure.ac:194: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) +m4trace:configure.ac:194: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) +m4trace:configure.ac:194: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) +m4trace:configure.ac:194: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) +m4trace:configure.ac:194: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) +m4trace:configure.ac:194: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"]) +m4trace:configure.ac:194: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS +m4trace:configure.ac:194: -1- _LT_PROG_LTMAIN diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/ylwrap b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/ylwrap new file mode 100755 index 0000000..8f072a8 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/build-aux/ylwrap @@ -0,0 +1,247 @@ +#! /bin/sh +# ylwrap - wrapper for lex/yacc invocations. + +scriptversion=2013-01-12.17; # UTC + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# +# Written by Tom Tromey . +# +# 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 2, 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +get_dirname () +{ + case $1 in + */*|*\\*) printf '%s\n' "$1" | sed -e 's|\([\\/]\)[^\\/]*$|\1|';; + # Otherwise, we want the empty string (not "."). + esac +} + +# guard FILE +# ---------- +# The CPP macro used to guard inclusion of FILE. +guard () +{ + printf '%s\n' "$1" \ + | sed \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ + -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g' \ + -e 's/__*/_/g' +} + +# quote_for_sed [STRING] +# ---------------------- +# Return STRING (or stdin) quoted to be used as a sed pattern. +quote_for_sed () +{ + case $# in + 0) cat;; + 1) printf '%s\n' "$1";; + esac \ + | sed -e 's|[][\\.*]|\\&|g' +} + +case "$1" in + '') + echo "$0: No files given. Try '$0 --help' for more information." 1>&2 + exit 1 + ;; + --basedir) + basedir=$2 + shift 2 + ;; + -h|--h*) + cat <<\EOF +Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]... + +Wrapper for lex/yacc invocations, renaming files as desired. + + INPUT is the input file + OUTPUT is one file PROG generates + DESIRED is the file we actually want instead of OUTPUT + PROGRAM is program to run + ARGS are passed to PROG + +Any number of OUTPUT,DESIRED pairs may be used. + +Report bugs to . +EOF + exit $? + ;; + -v|--v*) + echo "ylwrap $scriptversion" + exit $? + ;; +esac + + +# The input. +input=$1 +shift +# We'll later need for a correct munging of "#line" directives. +input_sub_rx=`get_dirname "$input" | quote_for_sed` +case $input in + [\\/]* | ?:[\\/]*) + # Absolute path; do nothing. + ;; + *) + # Relative path. Make it absolute. + input=`pwd`/$input + ;; +esac +input_rx=`get_dirname "$input" | quote_for_sed` + +# Since DOS filename conventions don't allow two dots, +# the DOS version of Bison writes out y_tab.c instead of y.tab.c +# and y_tab.h instead of y.tab.h. Test to see if this is the case. +y_tab_nodot=false +if test -f y_tab.c || test -f y_tab.h; then + y_tab_nodot=true +fi + +# The parser itself, the first file, is the destination of the .y.c +# rule in the Makefile. +parser=$1 + +# A sed program to s/FROM/TO/g for all the FROM/TO so that, for +# instance, we rename #include "y.tab.h" into #include "parse.h" +# during the conversion from y.tab.c to parse.c. +sed_fix_filenames= + +# Also rename header guards, as Bison 2.7 for instance uses its header +# guard in its implementation file. +sed_fix_header_guards= + +while test $# -ne 0; do + if test x"$1" = x"--"; then + shift + break + fi + from=$1 + # Handle y_tab.c and y_tab.h output by DOS + if $y_tab_nodot; then + case $from in + "y.tab.c") from=y_tab.c;; + "y.tab.h") from=y_tab.h;; + esac + fi + shift + to=$1 + shift + sed_fix_filenames="${sed_fix_filenames}s|"`quote_for_sed "$from"`"|$to|g;" + sed_fix_header_guards="${sed_fix_header_guards}s|"`guard "$from"`"|"`guard "$to"`"|g;" +done + +# The program to run. +prog=$1 +shift +# Make any relative path in $prog absolute. +case $prog in + [\\/]* | ?:[\\/]*) ;; + *[\\/]*) prog=`pwd`/$prog ;; +esac + +dirname=ylwrap$$ +do_exit="cd '`pwd`' && rm -rf $dirname > /dev/null 2>&1;"' (exit $ret); exit $ret' +trap "ret=129; $do_exit" 1 +trap "ret=130; $do_exit" 2 +trap "ret=141; $do_exit" 13 +trap "ret=143; $do_exit" 15 +mkdir $dirname || exit 1 + +cd $dirname + +case $# in + 0) "$prog" "$input" ;; + *) "$prog" "$@" "$input" ;; +esac +ret=$? + +if test $ret -eq 0; then + for from in * + do + to=`printf '%s\n' "$from" | sed "$sed_fix_filenames"` + if test -f "$from"; then + # If $2 is an absolute path name, then just use that, + # otherwise prepend '../'. + case $to in + [\\/]* | ?:[\\/]*) target=$to;; + *) target=../$to;; + esac + + # Do not overwrite unchanged header files to avoid useless + # recompilations. Always update the parser itself: it is the + # destination of the .y.c rule in the Makefile. Divert the + # output of all other files to a temporary file so we can + # compare them to existing versions. + if test $from != $parser; then + realtarget=$target + target=tmp-`printf '%s\n' "$target" | sed 's|.*[\\/]||g'` + fi + + # Munge "#line" or "#" directives. Don't let the resulting + # debug information point at an absolute srcdir. Use the real + # output file name, not yy.lex.c for instance. Adjust the + # include guards too. + sed -e "/^#/!b" \ + -e "s|$input_rx|$input_sub_rx|" \ + -e "$sed_fix_filenames" \ + -e "$sed_fix_header_guards" \ + "$from" >"$target" || ret=$? + + # Check whether files must be updated. + if test "$from" != "$parser"; then + if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then + echo "$to is unchanged" + rm -f "$target" + else + echo "updating $to" + mv -f "$target" "$realtarget" + fi + fi + else + # A missing file is only an error for the parser. This is a + # blatant hack to let us support using "yacc -d". If -d is not + # specified, don't fail when the header file is "missing". + if test "$from" = "$parser"; then + ret=1 + fi + fi + done +fi + +# Remove the directory. +cd .. +rm -rf $dirname + +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/configure.ac b/app/src/main/jni/libxkbcommon/xkbcommon/configure.ac new file mode 100644 index 0000000..cb176ee --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/configure.ac @@ -0,0 +1,214 @@ +dnl Copyright © 2008 Dan Nicholson +dnl +dnl Permission to use, copy, modify, distribute, and sell this software and its +dnl documentation for any purpose is hereby granted without fee, provided that +dnl the above copyright notice appear in all copies and that both that +dnl copyright notice and this permission notice appear in supporting +dnl documentation, and that the name of Keith Packard not be used in +dnl advertising or publicity pertaining to distribution of the software without +dnl specific, written prior permission. Keith Packard makes no +dnl representations about the suitability of this software for any purpose. It +dnl is provided "as is" without express or implied warranty. +dnl +dnl DAN NICHOLSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +dnl INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +dnl EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR +dnl CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +dnl DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +dnl TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +dnl PERFORMANCE OF THIS SOFTWARE. +dnl +dnl Process this file with autoconf to create configure. + +# Initialize Autoconf +AC_PREREQ([2.62]) +AC_INIT([libxkbcommon], [0.5.0], + [https://bugs.freedesktop.org/enter_bug.cgi?product=libxkbcommon], + [libxkbcommon], [http://xkbcommon.org]) +AC_CONFIG_SRCDIR([Makefile.am]) +AC_CONFIG_HEADERS([src/config.h]) +AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_AUX_DIR([build-aux]) + +# Initialize Automake +AM_INIT_AUTOMAKE([foreign dist-xz no-dist-gzip subdir-objects color-tests parallel-tests check-news]) +AM_MAINTAINER_MODE([enable]) + +# Get _GNU_SOURCE and friends +AC_USE_SYSTEM_EXTENSIONS + +# Initialize libtool +LT_INIT + +# Add xorg-macros stuff +m4_ifndef([XORG_MACROS_VERSION], + [m4_fatal([must install xorg-macros 1.16 or later before running autoconf/autogen])]) +XORG_MACROS_VERSION(1.16) +XORG_DEFAULT_OPTIONS +XORG_MEMORY_CHECK_FLAGS +XORG_ENABLE_DOCS +XORG_WITH_DOXYGEN + +# Needed in older Automakes for subdir-objects +AM_PROG_CC_C_O + +# Check for compiler features +AC_C_INLINE + +# Check for programs +AC_PROG_MKDIR_P +PKG_PROG_PKG_CONFIG + +# Note: we use some yacc extensions, which work with either GNU bison +# (preferred) or byacc. Other yacc's may or may not work. +AC_PROG_YACC +AC_PATH_PROG([YACC_INST], [$YACC]) +AS_IF([test ! -f "src/xkbcomp/parser.c" -a "x$YACC_INST" = x], [ + AC_MSG_ERROR([yacc not found - unable to compile src/xkbcomp/parser.y]) +]) + +# Checks for library functions. +AC_CHECK_FUNCS([strcasecmp strncasecmp]) +AS_IF([test "x$ac_cv_func_strcasecmp" = xno -o \ + "x$ac_cv_func_strncasecmp" = xno], [ + AC_MSG_ERROR([C library does not support strcasecmp/strncasecmp]) +]) + +AC_CHECK_FUNCS([eaccess euidaccess mmap]) + +AC_CHECK_FUNCS([secure_getenv __secure_getenv]) +AS_IF([test "x$ac_cv_func_secure_getenv" = xno -a \ + "x$ac_cv_func___secure_getenv" = xno], [ + AC_MSG_WARN([C library does not support secure_getenv, using getenv instead]) +]) + +AX_GCC_BUILTIN(__builtin_expect) + +# Some tests use Linux-specific headers +AC_CHECK_HEADER([linux/input.h]) +AM_CONDITIONAL(BUILD_LINUX_TESTS, [test "x$ac_cv_header_linux_input_h" = xyes]) + +XORG_TESTSET_CFLAG([BASE_CFLAGS], [-fvisibility=hidden]) +XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wextra -Wno-unused-parameter -Wno-missing-field-initializers]) +XORG_TESTSET_CFLAG([BASE_CFLAGS], [-Wdocumentation]) + +# OpenBSD does not have DT_NEEDED entries for libc by design +# so when these flags are passed to ld via libtool the checks will fail +case "$host_os" in +openbsd*) + ;; +*) + XORG_CHECK_LINKER_FLAGS([-Wl,--no-undefined], [have_no_undefined=yes]) ;; +esac + +AM_CONDITIONAL([HAVE_NO_UNDEFINED], [test "x$have_no_undefined" = xyes]) + +AC_CHECK_LIB(rt, clock_gettime, + [AC_SUBST(RT_LIBS, "-lrt")], + [AC_SUBST(RT_LIBS, "")], + [-lrt]) + +# Define a configuration option for the XKB config root +xkb_base=`$PKG_CONFIG --variable=xkb_base xkeyboard-config` +AS_IF([test "x$xkb_base" = x], [ + xkb_base="$datadir/X11/xkb" +]) +AC_ARG_WITH([xkb_config_root], + [AS_HELP_STRING([--with-xkb-config-root=], + [Set default XKB config root (default: xkeyboard-config install path)])], + [XKBCONFIGROOT="$withval"], + [XKBCONFIGROOT="$xkb_base"]) +AC_SUBST([XKBCONFIGROOT]) + +# Define a configuration option for the X locale directory for compose +AC_ARG_WITH([x_locale_root], + [AS_HELP_STRING([--with-x-locale-root=], + [Set X locale root (default: $datadir/X11/locale)])], + [XLOCALEDIR="$withval"], + [XLOCALEDIR="$datadir/X11/locale"]) +AC_SUBST([XLOCALEDIR]) + +AC_ARG_WITH([default_rules], + [AS_HELP_STRING([--with-default-rules=], + [Default XKB ruleset (default: evdev)])], + [DEFAULT_XKB_RULES="$withval"], + [DEFAULT_XKB_RULES="evdev"]) +AC_DEFINE_UNQUOTED([DEFAULT_XKB_RULES], ["$DEFAULT_XKB_RULES"], + [Default XKB ruleset]) + +AC_ARG_WITH([default_model], + [AS_HELP_STRING([--with-default-model=], + [Default XKB model (default: pc105)])], + [DEFAULT_XKB_MODEL="$withval"], + [DEFAULT_XKB_MODEL="pc105"]) +AC_DEFINE_UNQUOTED([DEFAULT_XKB_MODEL], ["$DEFAULT_XKB_MODEL"], + [Default XKB model]) + +AC_ARG_WITH([default_layout], + [AS_HELP_STRING([--with-default-layout=], + [Default XKB layout (default: us)])], + [DEFAULT_XKB_LAYOUT="$withval"], + [DEFAULT_XKB_LAYOUT="us"]) +AC_DEFINE_UNQUOTED([DEFAULT_XKB_LAYOUT], ["$DEFAULT_XKB_LAYOUT"], + [Default XKB layout]) + +AC_ARG_WITH([default_variant], + [AS_HELP_STRING([--with-default-variant=], + [Default XKB variant (default: (none))])], + [DEFAULT_XKB_VARIANT="$withval"], + [DEFAULT_XKB_VARIANT=]) +AS_IF([test "x$DEFAULT_XKB_VARIANT" != x], [ + AC_DEFINE_UNQUOTED([DEFAULT_XKB_VARIANT], ["$DEFAULT_XKB_VARIANT"], + [Default XKB variant]) +]) + +AC_ARG_WITH([default_options], + [AS_HELP_STRING([--with-default-options=], + [Default XKB options (default: (none))])], + [DEFAULT_XKB_OPTIONS="$withval"], + [DEFAULT_XKB_OPTIONS=]) +AS_IF([test "x$DEFAULT_XKB_OPTIONS" != x], [ + AC_DEFINE_UNQUOTED([DEFAULT_XKB_OPTIONS], ["$DEFAULT_XKB_OPTIONS"], + [Default XKB options]) +]) + +AC_ARG_ENABLE([x11], + [AS_HELP_STRING([--disable-x11], + [Disable support for creating keymaps with the X11 protocol (default: enabled)])], + [], [enable_x11=yes]) +AS_IF([test "x$enable_x11" = xyes], [ + PKG_CHECK_MODULES([XCB_XKB], [xcb xcb-xkb >= 1.10], [], + [AC_MSG_ERROR([xkbcommon-x11 requires xcb-xkb >= 1.10 which was not found. \ +You can disable X11 support with --disable-x11.])]) +], [enable_x11=no]) +AM_CONDITIONAL([ENABLE_X11], [test "x$enable_x11" = xyes]) + +AC_CONFIG_FILES([ + Makefile + xkbcommon-uninstalled.pc + xkbcommon.pc + xkbcommon-x11.pc + xkbcommon-x11-uninstalled.pc + doc/Doxyfile +]) +AC_OUTPUT + +AC_MSG_RESULT([ + $PACKAGE_NAME $VERSION + + libxkbcommon: yes + libxkbcommon-x11: ${enable_x11} + documentation: ${build_docs} + + default XKB rules: ${DEFAULT_XKB_RULES} + default XKB model: ${DEFAULT_XKB_MODEL} + default XKB layout: ${DEFAULT_XKB_LAYOUT} + default XKB variant: ${DEFAULT_XKB_VARIANT} + default XKB options: ${DEFAULT_XKB_OPTIONS} + + prefix: ${prefix} + includedir: ${includedir} + lib dir: ${libdir} + XKB config root: ${XKBCONFIGROOT} + X11 locale root: ${XLOCALEDIR} +]) diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/doc/.gitignore b/app/src/main/jni/libxkbcommon/xkbcommon/doc/.gitignore new file mode 100644 index 0000000..3e70371 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/doc/.gitignore @@ -0,0 +1,3 @@ +Doxyfile +html/ +stamp-doxygen diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/doc/Doxyfile.in b/app/src/main/jni/libxkbcommon/xkbcommon/doc/Doxyfile.in new file mode 100644 index 0000000..5881ff9 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/doc/Doxyfile.in @@ -0,0 +1,1886 @@ +# Doxyfile 1.8.4 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed +# in front of the TAG it is preceding . +# All text after a hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" "). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or sequence of words) that should +# identify the project. Note that if you do not use Doxywizard you need +# to put quotes around the project name if it contains spaces. + +PROJECT_NAME = @PACKAGE_NAME@ + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = @PACKAGE_VERSION@ + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer +# a quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify an logo or icon that is +# included in the documentation. The maximum height of the logo should not +# exceed 55 pixels and the maximum width should not exceed 200 pixels. +# Doxygen will copy the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = doc + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English +# messages), Korean, Korean-en, Latvian, Lithuanian, Norwegian, Macedonian, +# Persian, Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, +# Slovak, Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = NO + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. Note that you specify absolute paths here, but also +# relative paths, which will be relative from the directory where doxygen is +# started. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful if your file system +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = YES + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding +# "class=itcl::class" will allow you to use the command class in the +# itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, +# and language is one of the parsers supported by doxygen: IDL, Java, +# Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, +# C++. For instance to make doxygen treat .inc files as Fortran files (default +# is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note +# that for custom extensions you also need to set FILE_PATTERNS otherwise the +# files are not read by doxygen. + +EXTENSION_MAPPING = no_extension=md + +# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all +# comments according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you +# can mix doxygen, HTML, and XML commands with Markdown formatting. +# Disable only in case of backward compatibilities issues. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by by putting a % sign in front of the word +# or globally by setting AUTOLINK_SUPPORT to NO. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also makes the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES (the +# default) will make doxygen replace the get and set methods by a property in +# the documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and +# unions are shown inside the group in which they are included (e.g. using +# @ingroup) instead of on a separate page (for HTML and Man pages) or +# section (for LaTeX and RTF). + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and +# unions with only public data fields or simple typedef fields will be shown +# inline in the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO (the default), structs, classes, and unions are shown on a separate +# page (for HTML and Man pages) or section (for LaTeX and RTF). + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can +# be an expensive process and often the same symbol appear multiple times in +# the code, doxygen keeps a cache of pre-resolved symbols. If the cache is too +# small doxygen will become slower. If the cache is too large, memory is wasted. +# The cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid +# range is 0..9, the default is 0, corresponding to a cache size of 2^16 = 65536 +# symbols. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal +# scope will be included in the documentation. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespaces are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen +# will list include files with double quotes in the documentation +# rather than with sharp brackets. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = NO + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen +# will sort the (brief and detailed) documentation of class members so that +# constructors and destructors are listed first. If set to NO (the default) +# the constructors will appear in the respective orders defined by +# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. +# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO +# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to +# do proper type resolution of all parameters of a function it will reject a +# match between the prototype and the implementation of a member function even +# if there is only one candidate or it is obvious which candidate to choose +# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen +# will still accept a match between prototype and implementation in such cases. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if section-label ... \endif +# and \cond section-label ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or macro consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and macros in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. +# This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. +# You can optionally specify a file name after the option, if omitted +# DoxygenLayout.xml will be used as the name of the layout file. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files +# containing the references data. This must be a list of .bib files. The +# .bib extension is automatically appended if omitted. Using this command +# requires the bibtex tool to be installed. See also +# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style +# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this +# feature you need bibtex and perl available in the search path. Do not use +# file names with spaces, bibtex cannot handle them. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = NO + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# The WARN_NO_PARAMDOC option can be enabled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = @abs_top_srcdir@/README.md \ + @abs_top_srcdir@/doc/quick-guide.md \ + @abs_top_srcdir@/doc/compat.md \ + @abs_top_srcdir@/xkbcommon/xkbcommon.h \ + @abs_top_srcdir@/xkbcommon/xkbcommon-names.h \ + @abs_top_srcdir@/xkbcommon/xkbcommon-x11.h \ + @abs_top_srcdir@/xkbcommon/xkbcommon-compose.h \ + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh +# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py +# *.f90 *.f *.for *.vhd *.vhdl + +FILE_PATTERNS = *.c \ + *.h + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. +# If FILTER_PATTERNS is specified, this tag will be ignored. +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. +# Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. +# The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty or if +# non of the patterns match the file name, INPUT_FILTER is applied. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) +# and it is also possible to disable source filtering for a specific pattern +# using *.ext= (so without naming a filter). This option only has effect when +# FILTER_SOURCE_FILES is enabled. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = README.md + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C, C++ and Fortran comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. +# Otherwise they will link to the documentation. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = xkb_ \ + XKB_ + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. Note that when using a custom header you are responsible +# for the proper inclusion of any scripts and style sheets that doxygen +# needs, which is dependent on the configuration options used. +# It is advised to generate a default header using "doxygen -w html +# header.html footer.html stylesheet.css YourConfigFile" and then modify +# that header. Note that the header is subject to change so you typically +# have to redo this when upgrading to a newer version of doxygen or when +# changing the value of configuration settings such as GENERATE_TREEVIEW! + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If left blank doxygen will +# generate a default style sheet. Note that it is recommended to use +# HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this +# tag will in the future become obsolete. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional +# user-defined cascading style sheet that is included after the standard +# style sheets created by doxygen. Using this option one can overrule +# certain style aspects. This is preferred over using HTML_STYLESHEET +# since it does not replace the standard style sheet and is therefor more +# robust against future updates. Doxygen will copy the style sheet file to +# the output directory. + +HTML_EXTRA_STYLESHEET = @abs_top_srcdir@/doc/doxygen-extra.css + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that +# the files will be copied as-is; there are no commands or markers available. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. +# Doxygen will adjust the colors in the style sheet and background images +# according to this color. Hue is specified as an angle on a colorwheel, +# see http://en.wikipedia.org/wiki/Hue for more information. +# For instance the value 0 represents red, 60 is yellow, 120 is green, +# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. +# The allowed range is 0 to 359. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of +# the colors in the HTML output. For a value of 0 the output will use +# grayscales only. A value of 255 will produce the most vivid colors. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to +# the luminance component of the colors in the HTML output. Values below +# 100 gradually make the output lighter, whereas values above 100 make +# the output darker. The value divided by 100 is the actual gamma applied, +# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, +# and 100 does not change the gamma. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting +# this to NO can help when comparing the output of multiple runs. + +HTML_TIMESTAMP = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of +# entries shown in the various tree structured indices initially; the user +# can expand and collapse entries dynamically later on. Doxygen will expand +# the tree to such a level that at most the specified number of entries are +# visible (unless a fully collapsed tree already exceeds this amount). +# So setting the number of entries 1 will produce a full collapsed tree by +# default. 0 is a special value representing an infinite number of entries +# and will result in a full expanded tree by default. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely +# identify the documentation publisher. This should be a reverse domain-name +# style string, e.g. com.mycompany.MyDocSet.documentation. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated +# that can be used as input for Qt's qhelpgenerator to generate a +# Qt Compressed Help (.qch) of the generated HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#namespace + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#virtual-folders + +QHP_VIRTUAL_FOLDER = doc + +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to +# add. For more information please see +# http://doc.trolltech.com/qthelpproject.html#custom-filters + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see +# +# Qt Help Project / Custom Filters. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's +# filter section matches. +# +# Qt Help Project / Filter Attributes. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files +# will be generated, which together with the HTML files, form an Eclipse help +# plugin. To install this plugin and make it available under the help contents +# menu in Eclipse, the contents of the directory containing the HTML and XML +# files needs to be copied into the plugins directory of eclipse. The name of +# the directory within the plugins directory should be the same as +# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before +# the help appears. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have +# this name. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) +# at top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. Since the tabs have the same information as the +# navigation tree you can set this option to NO if you already set +# GENERATE_TREEVIEW to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to YES, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). +# Windows users are probably better off using the HTML help feature. +# Since the tree basically has the same information as the tab index you +# could consider to set DISABLE_INDEX to NO when enabling this option. + +GENERATE_TREEVIEW = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values +# (range [0,1..20]) that doxygen will group on one line in the generated HTML +# documentation. Note that a value of 0 will completely suppress the enum +# values from appearing in the overview section. + +ENUM_VALUES_PER_LINE = 1 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open +# links to external symbols imported via tag files in a separate window. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are +# not supported properly for IE 6.0, but are supported on all modern browsers. +# Note that when changing this option you need to delete any form_*.png files +# in the HTML output before the changes have effect. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax +# (see http://www.mathjax.org) which uses client side Javascript for the +# rendering instead of using prerendered bitmaps. Use this if you do not +# have LaTeX installed or if you want to formulas look prettier in the HTML +# output. When enabled you may also need to install MathJax separately and +# configure the path to it using the MATHJAX_RELPATH option. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and +# SVG. The default value is HTML-CSS, which is slower, but has the best +# compatibility. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the +# HTML output directory using the MATHJAX_RELPATH option. The destination +# directory should contain the MathJax.js script. For instance, if the mathjax +# directory is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to +# the MathJax Content Delivery Network so you can quickly see the result without +# installing MathJax. +# However, it is strongly recommended to install a local +# copy of MathJax from http://www.mathjax.org before deployment. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension +# names that should be enabled during MathJax rendering. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript +# pieces of code that will be used on startup of the MathJax code. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box +# for the HTML output. The underlying search engine uses javascript +# and DHTML and should work on any modern browser. Note that when using +# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets +# (GENERATE_DOCSET) there is already a search function so this one should +# typically be disabled. For large projects the javascript based search engine +# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. + +SEARCHENGINE = NO + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a web server instead of a web client using Javascript. +# There are two flavours of web server based search depending on the +# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for +# searching and an index file used by the script. When EXTERNAL_SEARCH is +# enabled the indexing and searching needs to be provided by external tools. +# See the manual for details. + +SERVER_BASED_SEARCH = NO + +# When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP +# script for searching. Instead the search results are written to an XML file +# which needs to be processed by an external indexer. Doxygen will invoke an +# external search engine pointed to by the SEARCHENGINE_URL option to obtain +# the search results. Doxygen ships with an example indexer (doxyindexer) and +# search engine (doxysearch.cgi) which are based on the open source search +# engine library Xapian. See the manual for configuration details. + +EXTERNAL_SEARCH = NO + +# The SEARCHENGINE_URL should point to a search engine hosted by a web server +# which will returned the search results when EXTERNAL_SEARCH is enabled. +# Doxygen ships with an example search engine (doxysearch) which is based on +# the open source search engine library Xapian. See the manual for configuration +# details. + +SEARCHENGINE_URL = + +# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed +# search data is written to a file for indexing by an external tool. With the +# SEARCHDATA_FILE tag the name of this file can be specified. + +SEARCHDATA_FILE = searchdata.xml + +# When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the +# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is +# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple +# projects and redirect the results back to the right project. + +EXTERNAL_SEARCH_ID = + +# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen +# projects other than the one defined by this configuration file, but that are +# all added to the same external search index. Each project needs to have a +# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id +# of to a relative location where the documentation can be found. +# The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ... + +EXTRA_SEARCH_MAPPINGS = + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. +# Note that when enabling USE_PDFLATEX this option is only used for +# generating bitmaps for formulas in the HTML output, but not in the +# Makefile that is written to the output directory. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, letter, legal and +# executive. If left blank a4 will be used. + +PAPER_TYPE = a4 + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for +# the generated latex document. The footer should contain everything after +# the last chapter. If it is left blank doxygen will generate a +# standard footer. Notice: only use this tag if you know what you are doing! + +LATEX_FOOTER = + +# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images +# or other source files which should be copied to the LaTeX output directory. +# Note that the files will be copied as-is; there are no commands or markers +# available. + +LATEX_EXTRA_FILES = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +# If LATEX_SOURCE_CODE is set to YES then doxygen will include +# source code with syntax highlighting in the LaTeX output. +# Note that which sources are shown also depends on other settings +# such as SOURCE_BROWSER. + +LATEX_SOURCE_CODE = NO + +# The LATEX_BIB_STYLE tag can be used to specify the style to use for the +# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See +# http://en.wikipedia.org/wiki/BibTeX for more info. + +LATEX_BIB_STYLE = plain + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load style sheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options related to the DOCBOOK output +#--------------------------------------------------------------------------- + +# If the GENERATE_DOCBOOK tag is set to YES Doxygen will generate DOCBOOK files +# that can be used to generate PDF. + +GENERATE_DOCBOOK = NO + +# The DOCBOOK_OUTPUT tag is used to specify where the DOCBOOK pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in +# front of it. If left blank docbook will be used as the default path. + +DOCBOOK_OUTPUT = docbook + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. +# This is useful +# if you want to understand what is going on. +# On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# pointed to by INCLUDE_PATH will be searched when a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition that +# overrules the definition found in the source code. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all references to function-like macros +# that are alone on a line, have an all uppercase name, and do not end with a +# semicolon, because these will confuse the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. For each +# tag file the location of the external documentation should be added. The +# format of a tag file without this location is as follows: +# +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths +# or URLs. Note that each tag file must have a unique name (where the name does +# NOT include the path). If a tag file is not located in the directory in which +# doxygen is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed +# in the related pages index. If set to NO, only the current project's +# pages will be listed. + +EXTERNAL_PAGES = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option also works with HAVE_DOT disabled, but it is recommended to +# install and use dot, since it yields more powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is +# allowed to run in parallel. When set to 0 (the default) doxygen will +# base this on the number of processors available in the system. You can set it +# explicitly to a value larger than 0 to get control over the balance +# between CPU load and processing speed. + +DOT_NUM_THREADS = 0 + +# By default doxygen will use the Helvetica font for all dot files that +# doxygen generates. When you want a differently looking font you can specify +# the font name using DOT_FONTNAME. You need to make sure dot is able to find +# the font, which can be done by putting it in a standard location or by setting +# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the +# directory containing the font. + +DOT_FONTNAME = Helvetica + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the Helvetica font. +# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to +# set the path where dot can find it. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If the UML_LOOK tag is enabled, the fields and methods are shown inside +# the class node. If there are many fields or methods and many nodes the +# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS +# threshold limits the number of items for each type to make the size more +# manageable. Set this to 0 for no limit. Note that the threshold may be +# exceeded by 50% before the limit is enforced. + +UML_LIMIT_NUM_FIELDS = 10 + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will generate a graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are svg, png, jpg, or gif. +# If left blank png will be used. If you choose svg you need to set +# HTML_FILE_EXTENSION to xhtml in order to make the SVG files +# visible in IE 9+ (other browsers do not have this requirement). + +DOT_IMAGE_FORMAT = png + +# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to +# enable generation of interactive SVG images that allow zooming and panning. +# Note that this requires a modern browser other than Internet Explorer. +# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you +# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files +# visible. Older versions of IE do not have SVG support. + +INTERACTIVE_SVG = NO + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the +# \mscfile command). + +MSCFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/doc/compat.md b/app/src/main/jni/libxkbcommon/xkbcommon/doc/compat.md new file mode 100644 index 0000000..63a45e7 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/doc/compat.md @@ -0,0 +1,55 @@ +# Compatibility + +Relative to the XKB 1.1 specification implemented in current X servers, +xkbcommon has removed support for some parts of the specification which +introduced unnecessary complications. Many of these removals were in fact +not implemented, or half-implemented at best, as well as being totally +unused in the standard dataset. + +Notable removals: +- geometry support + + there were very few geometry definitions available, and while + xkbcommon was responsible for parsing this insanely complex format, + it never actually did anything with it + + hopefully someone will develop a companion library which supports + keyboard geometries in a more useful format +- KcCGST (keycodes/compat/geometry/symbols/types) API + + use RMLVO instead; KcCGST is now an implementation detail + + including pre-defined keymap files +- XKM support + + may come in an optional X11 support/compatibility library +- around half of the interpret actions + + pointer device, message and redirect actions in particular +- non-virtual modifiers + + core and virtual modifiers have been collapsed into the same + namespace, with a 'significant' flag that largely parallels the + core/virtual split +- radio groups + + completely unused in current keymaps, never fully implemented +- overlays + + almost completely unused in current keymaps +- key behaviors + + used to implement radio groups and overlays, and to deal with things + like keys that physically lock; unused in current keymaps +- indicator behaviours such as LED-controls-key + + the only supported LED behaviour is key-controls-LED; again this + was never really used in current keymaps + +On the other hand, some features and extensions were added. + +Notable additions: +- 32-bit keycodes +- extended number of modifiers (planned) +- extended number of groups (planned) +- multiple keysyms per level + + this requires incompatible dataset changes, such that X11 would + not be able to parse these + +## Compose support + +Relative to the standard implementation in libX11 (described in the +Compose(5) man-page), some features are not supported: + +- the (! MODIFIER) syntax +- using modifier keysyms in Compose sequences +- several interactions with Braille keysyms diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/doc/doxygen-extra.css b/app/src/main/jni/libxkbcommon/xkbcommon/doc/doxygen-extra.css new file mode 100644 index 0000000..632ebad --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/doc/doxygen-extra.css @@ -0,0 +1,9 @@ +div#top, div.header, div.contents { + margin-left: auto; + margin-right: auto; + width: 960px; +} + +.footer { + display: none; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/doc/keymap-format-text-v1.txt b/app/src/main/jni/libxkbcommon/xkbcommon/doc/keymap-format-text-v1.txt new file mode 100644 index 0000000..95849fc --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/doc/keymap-format-text-v1.txt @@ -0,0 +1,359 @@ +The xkb_keycodes section +======================== + +This is the simplest section type, and is the first one to be +compiled. The purpose of this is mostly to map between the +hardware/evdev scancodes and xkb keycodes. Each key is given a name +by which it can be referred to later, e.g. in the symbols section. + +Keycode statements +------------------ +Statements of the form: + + = 49; + = 10; + +The above would let 49 and 10 be valid keycodes in the keymap, and +assign them the names TLDE and AE01 respectively. The format is +always used to refer to a key by name. + +[The naming convention just denoted the position of the key +in the main alphanumric section of the keyboard, with the two letters +specifying the row and the two digits specifying the column, from +the bottom left.] + +In the common case this just maps to the evdev scancodes from +/usr/include/linux/input.h, e.g. the following definitions: + + #define KEY_GRAVE 41 + #define KEY_1 2 + +correspond to the ones above. Similar definitions appear in the +xf86-input-keyboard driver. Note that in all current keymaps there's a +constant offset of 8 (for historical reasons). + +If there's a conflict, like the same name given to different keycodes, +or same keycode given different names, it is resolved according to the +merge mode which applies to the definitions. + +Alias statements +---------------- +Statements of the form: + + alias = ; + +Allows to refer to a previously defined key (here ) by another +name (here ). Conflicts are handled similarly to keycode +statements. + +LED name statements +------------------- +Statements of the form: + + indicator 1 = "Caps Lock"; + indicator 2 = "Num Lock"; + indicator 3 = "Scroll Lock"; + +Assigns a name to the keyboard LED (a.k.a indicator) with the given +index. The LED may be referred by this name later in the compat section +and by the user. + + +The xkb_types section +===================== + +This section is the second to be processesed, after xkb_keycodes. +However, it is completely independent and could have been the first +to be processed (it does not refer to specific keys as specified in +the xkb_keycodes section). + +This section defines key types, which, given a key and a keyboard +state (i.e. modifier state and group), determine the shift level to +be used in translating the key to keysyms. These types are assigned +to each group in each key, in the xkb_symbols section. + +Key types are called this way because, in a way, they really describe +the "type" of the key (or more correctly, a specific group of the +key). For example, an ordinary keymap will provide a type called +"KEYPAD", which consists of two levels, with the second level being +chosen according to the state of the Num Lock (or Shift) modifiers. +Another example is a type called "ONE_LEVEL", which is usually +assigned to keys such as Escape; these have just one level and are +not affected by the modifier state. Yet more common examples are +"TWO_LEVEL" (with Shift choosing the second level), "ALPHABETIC" +(where Caps Lock may also choose the second level), etc. + +Type definitions +---------------- +Statements of the form: + + type "FOUR_LEVEL" { ... } + +The above would create a new type named "FOUR_LEVEL". +The body of the definition may include statements of the following +forms: + +- level_name statements (mandatory for each level in the type): + + level_name[Level1] = "Base"; + + Gives each level in this type a descriptive name. It isn't used + for anything. + Note: A level may be specified as Level[1-8] or just a number (can + be more than 8). + +- modifiers statement (mandatory, should be specified only once): + + modifiers = Shift+Lock+LevelThree; + + A mask of real and virtual modifiers. These are the only modifiers + being considered when matching the modifier state against the type. + The other modifiers, whether active or not, are masked out in the + calculation. + +- map entry statements (should have at least as many mappings as there + are levels in the type): + + map[Shift+LevelThree] = Level4; + + If the active modifiers, masked with the type's modifiers (as stated + above), match (i.e. equal) the modifiers inside the map[] statement, + then the level in the right hand side is chosen. For example, in the + above, if in the current keyboard state the Shift and LevelThree + modifiers are active, while the Lock modifier is not, then the + keysym(s) in the 4th level of the group will be returned to the + user. + +- preserve statements: + + map[Shift+Lock+LevelThree] = Level5; + preserve[Shift+Lock+LevelThree] = Lock; + + When a map entry matches the active modifiers and the level it + specified is chosen, then these modifiers are said to be "consumed"; + for example, in a simple US keymap where the "g" key is assigned an + ordinary ALPHABETIC key type, if the Lock (Caps Lock) modifier is + active and the key is pressed, then a "G" keysym is produced (as + opposed to lower-case "g"). This is because the type definition has + a map entry like the following: + + map[Lock] = Level2; + + And as such the Lock modifier is consumed. This information is + relevant for applications which further process the modifiers, + since by then the consumed modifiers have already "done their part" + and should be masked out. + + However, sometimes even if a modifier is actually used to choose + the shift level (as Lock above), it should *not* be reported as + consumed, for various reasons. In this case, a preserve[] statement + can be used to augment the map entry. The modifiers inside the square + brackets should match one of the map[] statements in the type. The + right hand side should consists of modifiers from the left hand + side; these modifiers are then "preserved" and not reported as + consumed. + + +The xkb_compat section +====================== + +This section is the third to be processed, after xkb_keycodes and +xkb_types. + +Interpret statements +-------------------- +Statements of the form: + + interpret Num_Lock+Any { ... } + interpret Shift_Lock+AnyOf(Shift+Lock) { ... } + +The xkb_symbols section (see below) allows the keymap author to perform, +among other things, the following things for each key: + +- Bind an action, like SetMods or LockGroup, to the key. Actions, like + symbols, are specified for each level of each group in the key + separately. + +- Add a virtual modifier to the key's virtual modifier mapping (vmodmap). + +- Specify whether the key should repeat or not. + +However, doing this for each key (or level) is tedious and inflexible. +Interpret's are a mechanism to apply these settings to a bunch of +keys/levels at once. + +Each interpret specifies a condition by which it attaches to certain +levels. The condition consists of two parts: + +- A keysym. If the level has a different (or more than one) keysym, the + match fails. Leaving out the keysym is equivalent to using the NoSymbol + keysym, which always matches successfully. + +- A modifier predicate. The predicate consists of a matching operation + and a mask of (real) modifiers. The modifiers are matched against the + key's modifier map (modmap). The matching operation can be one of the + following: + + * AnyOfOrNone - The modmap must either be empty or include at least + one of the specified modifiers. + * AnyOf - The modmap must include at least one of the specified + modifiers. + * NoneOf - The modmap must not include any of the specified modifiers. + * AllOf - The modmap must include all of the specified modifiers (but + may include others as well). + * Exactly - The modmap must be exactly the same as the specified + modifiers. + + Leaving out the predicate is equivalent to using AnyOfOrNone while + specifying all modifiers. Leaving out just the matching condition + is equivalent to using Exactly. + +An interpret may also include "useModMapMods = level1;" - see below. + +If a level fulfils the conditions of several interpret's, only the +most specific one is used: + +- A specific keysym will always match before a generic NoSymbol + condition. + +- If the keysyms are the same, the interpret with the more specific + matching operation is used. The above list is sorted from least to + most specific. + +- If both the keysyms and the matching operations are the same (but the + modifiers are different), the first interpret is used. + +As described above, once an interpret "attaches" to a level, it can bind +an action to that level, add one virtual modifier to the key's vmodmap, +or set the key's repeat setting. You should note the following: + +- The key repeat is a property of the entire key; it is not level-specific. + In order to avoid confusion, it is only inspected for the first level of + the first group; the interpret's repeat setting is ignored when applied + to other levels. + +- If one of the above fields was set directly for a key in xkb_symbols, + the explicit setting takes precedence over the interpret. + +The body of the statement may include statements of the following +forms (all of which are optional): + +- useModMapMods statement: + + useModMapMods = level1; + + When set to 'level1', the interpret will only match levels which are + the first level of the first group of the keys. This can be useful in + conjunction with e.g. a virtualModifier statement. + +- action statement: + + action = LockMods(modifiers=NumLock); + + Bind this action to the matching levels. + +- virtual modifier statement: + + virtualModifier = NumLock; + + Add this virtual modifier to the key's vmodmap. The given virtual + modifier must be declared at the top level of the file with a + virtual_modifiers statement, e.g.: + + virtual_modifiers NumLock; + +- repeat statement: + + repeat = True; + + Set whether the key should repeat or not. Must be a boolean value. + +LED map statements +------------------ +Statements of the form: + + indicator "Shift Lock" { ... } + +This statement specifies the behavior and binding of the LED (a.k.a +indicator) with the given name ("Shift Lock" above). The name should +have been declared previously in the xkb_keycodes section (see LED +name statement), and given an index there. If it wasn't, it is created +with the next free index. +The body of the statement describes the conditions of the keyboard +state which will cause the LED to be lit. It may include the following +statements: + +- modifiers statement: + + modifiers = ScrollLock; + + If the given modifiers are in the required state (see below), the + LED is lit. + +- whichModifierState statment: + + whichModState = Latched+Locked; + + Can be any combination of: + + * base, latched, locked, effective + * any (i.e. all of the above) + * none (i.e. none of the above) + * compat (legacy value, treated as effective) + + This will cause the respective portion of the modifer state (see + struct xkb_state) to be matched against the modifiers given in the + "modifiers" statement. + + Here's a simple example: + + indicator "Num Lock" { + modifiers = NumLock; + whichModState = Locked; + }; + + Whenever the NumLock modifier is locked, the Num Lock LED will light + up. + +- groups statment: + + groups = All - group1; + + If the given groups are in the required state (see below), the LED + is lit. + +- whichGroupState statment: + + whichGroupState = Effective; + + Can be any combination of: + + * base, latched, locked, effective + * any (i.e. all of the above) + * none (i.e. none of the above) + + This will cause the respective portion of the group state (see + struct xkb_state) to be matched against the groups given in the + "groups" statement. + + Note: the above conditions are disjunctive, i.e. if any of them are + satisfied the LED is lit. + + +The xkb_symbols section +======================= + +This section is the fourth to be processed, after xkb_keycodes, +xkb_types and xkb_compat. + +TODO + + +Virtual modifier statements +=========================== + +Statements of the form: + virtual_modifiers LControl; + +Can appear in the xkb_types, xkb_compat, xkb_symbols sections. +TODO diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/doc/quick-guide.md b/app/src/main/jni/libxkbcommon/xkbcommon/doc/quick-guide.md new file mode 100644 index 0000000..3cf5b3b --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/doc/quick-guide.md @@ -0,0 +1,228 @@ +# Quick Guide + +## Introduction + +This document contains a quick walk-through of the often-used parts of +the library. We will employ a few use-cases to lead the examples: + +1. An evdev client. "evdev" is the Linux kernel's input subsystem; it + only reports to the client which keys are pressed and released. + +2. An X11 client, using the XCB library to communicate with the X + server and the xcb-xkb library for using the XKB protocol. + +3. A Wayland client, using the standard protocol. + +The snippets are not complete, and some support code is omitted. You +can find complete and more complex examples in the source directory: + +1. test/interactive-evdev.c contains an interactive evdev client. + +2. test/interactive-x11.c contains an interactive X11 client. + +Also, the library contains many more functions for examining and using +the library context, the keymap and the keyboard state. See the +hyper-linked reference documentation or go through the header files in +xkbcommon/ for more details. + +## Code + +Before we can do anything interesting, we need a library context. So +let's create one: + +~~~{.c} + #include + + struct xkb_context ctx; + + ctx = xkb_context_new(XKB_CONTEXT_NO_FLAGS); + if (!ctx) +~~~ + +The xkb_context contains the keymap include paths, the log level and +functions, and other general customizable administrativia. + +Next we need to create a keymap, xkb_keymap. This is an immutable object +which contains all of the information about the keys, layouts, etc. There +are different ways to do this. + +If we are an evdev client, we have nothing to go by, so we need to ask +the user for his/her keymap preferences (for example, an Icelandic +keyboard with a Dvorak layout). The configuration format is commonly +called RMLVO (Rules+Model+Layout+Variant+Options), the same format used +by the X server. With it, we can fill a struct called xkb_rule_names; +passing NULL chooses the system's default. + +~~~{.c} + struct xkb_keymap *keymap; + /* Example RMLVO for Icelandic Dvorak. */ + struct xkb_rule_names names = { + .rules = NULL, + .model = "pc105", + .layout = "is", + .variant = "dvorak", + .options = "terminate:ctrl_alt_bksp" + }; + + keymap = xkb_keymap_new_from_names(ctx, &names, + XKB_KEYMAP_COMPILE_NO_FLAGS); + if (!keymap) +~~~ + +If we are a Wayland client, the compositor gives us a string complete +with a keymap. In this case, we can create the keymap object like this: + +~~~{.c} + /* From the wl_keyboard::keymap event. */ + const char *keymap_string = <...>; + + keymap = xkb_keymap_new_from_string(ctx, keymap_string, + XKB_KEYMAP_FORMAT_TEXT_V1, + XKB_KEYMAP_COMPILE_NO_FLAGS); + if (!keymap) +~~~ + +If we are an X11 client, we are better off getting the keymap from the +X server directly. For this we need to choose the XInput device; here +we will use the core keyboard device: + +~~~{.c} + #include + + xcb_connection_t *conn = <...>; + int32_t device_id; + + device_id = xkb_x11_get_core_keyboard_device_id(conn); + if (device_id == -1) + + keymap = xkb_x11_keymap_new_from_device(ctx, conn, device_id, + XKB_KEYMAP_COMPILE_NO_FLAGS); + if (!keymap) +~~~ + +Now that we have the keymap, we are ready to handle the keyboard devices. +For each device, we create an xkb_state, which remembers things like which +keyboard modifiers and LEDs are active: + +~~~{.c} + struct xkb_state *state; + + state = xkb_state_new(keymap); + if (!state) +~~~ + +For X11/XCB clients, this is better: + +~~~{.c} + state = xkb_x11_state_new_from_device(keymap, conn, device_id); + if (!state) +~~~ + +When we have an xkb_state for a device, we can start handling key events +from it. Given a keycode for a key, we can get its keysym: + +~~~{.c} + event; + xkb_keycode_t keycode; + xkb_keysym_t keysym; + + keycode = event->keycode; + keysym = xkb_state_key_get_one_sym(state, keycode); +~~~ + +We can see which keysym we got, and get its name: + +~~~{.c} + char keysym_name[64]; + + if (keysym == XKB_KEY_Space) + + + xkb_keysym_get_name(keysym, keysym_name, sizeof(keysym_name)); +~~~ + +libxkbcommon also supports an extension to the classic XKB, whereby a +single event can result in multiple keysyms. Here's how to use it: + +~~~{.c} + const xkb_keysym_t *keysyms; + int num_keysyms; + + num_keysyms = xkb_state_key_get_syms(state, keycode, &keysyms); +~~~ + +We can also get a UTF-8 string representation for this key: + +~~~{.c} + char *buffer; + int size; + + // First find the needed size; return value is the same as snprintf(3). + size = xkb_state_key_get_utf8(state, keycode, NULL, 0) + 1; + if (size <= 1) + buffer = + + xkb_state_key_get_utf8(state, keycode, buffer, size); +~~~ + +Of course, we also need to keep the xkb_state up-to-date with the +keyboard device, if we want to get the correct keysyms in the future. + +If we are an evdev client, we must let the library know whether a key +is pressed or released at any given time: + +~~~{.c} + enum xkb_state_component changed; + + if () + changed = xkb_state_update_key(state, keycode, XKB_KEY_DOWN); + else if () + changed = xkb_state_update_key(state, keycode, XKB_KEY_UP); +~~~ + +The `changed` return value tells us exactly which parts of the state +have changed. + +If is is a key-repeat event, we can ask the keymap what to do with it: + +~~~{.c} + if ( && !xkb_keymap_key_repeats(keymap, keycode)) + +~~~ + +On the other hand, if we are an X or Wayland client, the server already +does the hard work for us. It notifies us when the device's state +changes, and we can simply use what it tells us (the necessary +information usually comes in a form of some "state changed" event): + +~~~{.c} + changed = xkb_state_update_mask(state, + event->depressed_mods, + event->latched_mods, + event->locked_mods, + event->depressed_layout, + event->latched_layout, + event->locked_layout); +~~~ + +Now that we have an always-up-to-date xkb_state, we can examine it. +For example, we can check whether the Control modifier is active, or +whether the Num Lock LED is active: + +~~~{.c} + if (xkb_state_mod_name_is_active(state, XKB_MOD_NAME_CTRL, + XKB_STATE_MODS_EFFECTIVE) > 0) + + + if (xkb_state_led_name_is_active(state, XKB_LED_NAME_NUM) > 0) + +~~~ + +And that's it! When we're finished, we should free the objects we've +created: + +~~~{.c} + xkb_state_unref(state); + xkb_keymap_unref(keymap); + xkb_context_unref(ctx); +~~~ diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/doc/rules-format.txt b/app/src/main/jni/libxkbcommon/xkbcommon/doc/rules-format.txt new file mode 100644 index 0000000..e8959fd --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/doc/rules-format.txt @@ -0,0 +1,86 @@ +The rules file +============== + +The purpose of the rules file is to map between configuration values +that are easy for a user to specify and understand, and the +configuration values xkbcomp uses and understands. + +xkbcomp uses the xkb_component_names struct, which maps directly to +include statements of the appropriate sections, called for short +KcCGST (see doc/keymap-format-text-v1.txt; 'G' stands for "geometry", +which is not supported). These are not really intuitive or straight- +forward for the uninitiated. + +Instead, the user passes in a xkb_rule_names struct, which consists +of the name of a rules file (in Linux this is usually "evdev"), a +keyboard model (e.g. "pc105"), a set of layouts (which will end up +in different groups, e.g. "us,fr"), variants (used to alter/augment +the respective layout, e.g. "intl,dvorak"), and a set of options +(used to tweak some general behavior of the keyboard, e.g. +"ctrl:nocaps,compose:menu" to make the Caps Lock key act like Ctrl +and the Menu key like Compose). We call these RMLVO. + +Format of the file +------------------ +The file consists of rule sets, each consisting of rules (one per +line), which match the MLVO values on the left hand side, and, if +the values match to the values the user passed in, results in the +values on the right hand side being added to the resulting KcCGST. +Since some values are related and repeated often, it is possible +to group them together and refer to them by a group name in the +rules. + +Along with matching values by simple string equality, and for +membership in a group defined previously, rules may also contain +"wildcard" values - "*" - which always match. These usually appear +near the end. + +Grammar +------- +(It might be helpful to look at a file like rules/evdev along with +this grammer. Comments, whitespace, etc. are not shown.) + +File ::= { "!" (Group | RuleSet) } + +Group ::= GroupName "=" { GroupElement } "\n" +GroupName ::= "$" +GroupElement ::= + +RuleSet ::= Mapping { Rule } + +Mapping ::= { Mlvo } "=" { Kccgst } "\n" +Mlvo ::= "model" | "option" | ("layout" | "variant") [ Index ] +Index ::= "[" 1..XKB_NUM_GROUPS "]" +Kccgst ::= "keycodes" | "symbols" | "types" | "compat" | "geometry" + +Rule ::= { MlvoValue } "=" { KccgstValue } "\n" +MlvoValue ::= "*" | GroupName | +KccgstValue ::= + +Notes: + +- The order of values in a Rule must be the same as the Mapping it + follows. The mapping line determines the meaning of the values in + the rules which follow in the RuleSet. + +- If a Rule is matched, %-expansion is performed on the KccgstValue, + as follows: + + %m, %l, %v: + The model, layout or variant, if only one was given (e.g. + %l for "us,il" is invalid). + + %l[1], %v[1]: + Layout or variant for the specified group Index, if more than + one was given (e.g. %l[1] for "us" is invalid). + + %+m, %+l, %+v, %+l[1], %+v[1] + As above, but prefixed with '+'. Similarly, '|', '-', '_' may be + used instead of '+'. + + %(m), %(l), %(l[1]), %(v), %(v[1]): + As above, but prefixed by '(' and suffixed by ')'. + + In case the expansion is invalid, as described above, it is + skipped (the rest of the string is still processed); this includes + the prefix and suffix (that's why you shouldn't use e.g. "(%v[1])"). diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/m4/ax_gcc_builtin.m4 b/app/src/main/jni/libxkbcommon/xkbcommon/m4/ax_gcc_builtin.m4 new file mode 100644 index 0000000..b28a91b --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/m4/ax_gcc_builtin.m4 @@ -0,0 +1,168 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_gcc_builtin.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_GCC_BUILTIN(BUILTIN) +# +# DESCRIPTION +# +# This macro checks if the compiler supports one of GCC's built-in +# functions; many other compilers also provide those same built-ins. +# +# The BUILTIN parameter is the name of the built-in function. +# +# If BUILTIN is supported define HAVE_. Keep in mind that since +# builtins usually start with two underscores they will be copied over +# into the HAVE_ definition (e.g. HAVE___BUILTIN_EXPECT for +# __builtin_expect()). +# +# The macro caches its result in the ax_cv_have_ variable (e.g. +# ax_cv_have___builtin_expect). +# +# The macro currently supports the following built-in functions: +# +# __builtin_assume_aligned +# __builtin_bswap32 +# __builtin_bswap64 +# __builtin_choose_expr +# __builtin___clear_cache +# __builtin_clrsb +# __builtin_clrsbl +# __builtin_clrsbll +# __builtin_clz +# __builtin_clzl +# __builtin_clzll +# __builtin_complex +# __builtin_constant_p +# __builtin_ctz +# __builtin_ctzl +# __builtin_ctzll +# __builtin_expect +# __builtin_ffs +# __builtin_ffsl +# __builtin_ffsll +# __builtin_fpclassify +# __builtin_huge_val +# __builtin_huge_valf +# __builtin_huge_vall +# __builtin_inf +# __builtin_infd128 +# __builtin_infd32 +# __builtin_infd64 +# __builtin_inff +# __builtin_infl +# __builtin_isinf_sign +# __builtin_nan +# __builtin_nand128 +# __builtin_nand32 +# __builtin_nand64 +# __builtin_nanf +# __builtin_nanl +# __builtin_nans +# __builtin_nansf +# __builtin_nansl +# __builtin_object_size +# __builtin_parity +# __builtin_parityl +# __builtin_parityll +# __builtin_popcount +# __builtin_popcountl +# __builtin_popcountll +# __builtin_powi +# __builtin_powif +# __builtin_powil +# __builtin_prefetch +# __builtin_trap +# __builtin_types_compatible_p +# __builtin_unreachable +# +# Unsuppored built-ins will be tested with an empty parameter set and the +# result of the check might be wrong or meaningless so use with care. +# +# LICENSE +# +# Copyright (c) 2013 Gabriele Svelto +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 2 + +AC_DEFUN([AX_GCC_BUILTIN], [ + AS_VAR_PUSHDEF([ac_var], [ax_cv_have_$1]) + + AC_CACHE_CHECK([for $1], [ac_var], [ + AC_LINK_IFELSE([AC_LANG_PROGRAM([], [ + m4_case([$1], + [__builtin_assume_aligned], [$1("", 0)], + [__builtin_bswap32], [$1(0)], + [__builtin_bswap64], [$1(0)], + [__builtin_choose_expr], [$1(0, 0, 0)], + [__builtin___clear_cache], [$1("", "")], + [__builtin_clrsb], [$1(0)], + [__builtin_clrsbl], [$1(0)], + [__builtin_clrsbll], [$1(0)], + [__builtin_clz], [$1(0)], + [__builtin_clzl], [$1(0)], + [__builtin_clzll], [$1(0)], + [__builtin_complex], [$1(0.0, 0.0)], + [__builtin_constant_p], [$1(0)], + [__builtin_ctz], [$1(0)], + [__builtin_ctzl], [$1(0)], + [__builtin_ctzll], [$1(0)], + [__builtin_expect], [$1(0, 0)], + [__builtin_ffs], [$1(0)], + [__builtin_ffsl], [$1(0)], + [__builtin_ffsll], [$1(0)], + [__builtin_fpclassify], [$1(0, 1, 2, 3, 4, 0.0)], + [__builtin_huge_val], [$1()], + [__builtin_huge_valf], [$1()], + [__builtin_huge_vall], [$1()], + [__builtin_inf], [$1()], + [__builtin_infd128], [$1()], + [__builtin_infd32], [$1()], + [__builtin_infd64], [$1()], + [__builtin_inff], [$1()], + [__builtin_infl], [$1()], + [__builtin_isinf_sign], [$1(0.0)], + [__builtin_nan], [$1("")], + [__builtin_nand128], [$1("")], + [__builtin_nand32], [$1("")], + [__builtin_nand64], [$1("")], + [__builtin_nanf], [$1("")], + [__builtin_nanl], [$1("")], + [__builtin_nans], [$1("")], + [__builtin_nansf], [$1("")], + [__builtin_nansl], [$1("")], + [__builtin_object_size], [$1("", 0)], + [__builtin_parity], [$1(0)], + [__builtin_parityl], [$1(0)], + [__builtin_parityll], [$1(0)], + [__builtin_popcount], [$1(0)], + [__builtin_popcountl], [$1(0)], + [__builtin_popcountll], [$1(0)], + [__builtin_powi], [$1(0, 0)], + [__builtin_powif], [$1(0, 0)], + [__builtin_powil], [$1(0, 0)], + [__builtin_prefetch], [$1("")], + [__builtin_trap], [$1()], + [__builtin_types_compatible_p], [$1(int, int)], + [__builtin_unreachable], [$1()], + [m4_warn([syntax], [Unsupported built-in $1, the test may fail]) + $1()] + ) + ])], + [AS_VAR_SET([ac_var], [yes])], + [AS_VAR_SET([ac_var], [no])]) + ]) + + AS_IF([test yes = AS_VAR_GET([ac_var])], + [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$1), 1, + [Define to 1 if the system has the `$1' built-in function])], []) + + AS_VAR_POPDEF([ac_var]) +]) diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/makekeys.py b/app/src/main/jni/libxkbcommon/xkbcommon/makekeys.py new file mode 100644 index 0000000..4732f8d --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/makekeys.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python + +import re, sys, itertools + +pattern = re.compile(r'^#define\s+XKB_KEY_(?P\w+)\s+(?P0x[0-9a-fA-F]+)\s') +matches = [pattern.match(line) for line in open(sys.argv[1])] +entries = [(m.group("name"), int(m.group("value"), 16)) for m in matches if m] + +print(''' +/** + * This file comes from libxkbcommon and was generated by makekeys.py + * You can always fetch the latest version from: + * https://raw.github.com/xkbcommon/libxkbcommon/master/src/ks_tables.h + */ +''') + +entry_offsets = {} + +print(''' +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Woverlength-strings" +static const char *keysym_names = +'''.strip()) +offs = 0 +for (name, _) in sorted(entries, key=lambda e: e[0].lower()): + entry_offsets[name] = offs + print(' "{name}\\0"'.format(name=name)) + offs += len(name) + 1 +print(''' +; +#pragma GCC diagnostic pop +'''.strip()) + +print(''' +struct name_keysym { + xkb_keysym_t keysym; + uint32_t offset; +};\n''') + +def print_entries(x): + for (name, value) in x: + print(' {{ 0x{value:08x}, {offs} }}, /* {name} */'.format(offs=entry_offsets[name], value=value, name=name)) + +print('static const struct name_keysym name_to_keysym[] = {') +print_entries(sorted(entries, key=lambda e: e[0].lower())) +print('};\n') + +# *.sort() is stable so we always get the first keysym for duplicate +print('static const struct name_keysym keysym_to_name[] = {') +print_entries(next(g[1]) for g in itertools.groupby(sorted(entries, key=lambda e: e[1]), key=lambda e: e[1])) +print('};') diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c new file mode 100644 index 0000000..044f566 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.c @@ -0,0 +1,225 @@ +/*********************************************************** + * Copyright 1987, 1998 The Open Group + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of The Open Group shall not be + * used in advertising or otherwise to promote the sale, use or other dealings + * in this Software without prior written authorization from The Open Group. + * + * + * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + * + * All Rights Reserved + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation, and that the name of Digital not be + * used in advertising or publicity pertaining to distribution of the + * software without specific, written prior permission. + * + * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING + * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL + * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR + * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, + * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + * SOFTWARE. + * + ******************************************************************/ + +/************************************************************ + * Copyright 1994 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +#include "utils.h" +#include "atom.h" + +struct atom_node { + xkb_atom_t left, right; + xkb_atom_t atom; + unsigned int fingerprint; + char *string; +}; + +struct atom_table { + xkb_atom_t root; + darray(struct atom_node) table; +}; + +struct atom_table * +atom_table_new(void) +{ + struct atom_table *table; + + table = calloc(1, sizeof(*table)); + if (!table) + return NULL; + + darray_init(table->table); + /* The original throw-away root is here, at the illegal atom 0. */ + darray_resize0(table->table, 1); + + return table; +} + +void +atom_table_free(struct atom_table *table) +{ + struct atom_node *node; + + if (!table) + return; + + darray_foreach(node, table->table) + free(node->string); + darray_free(table->table); + free(table); +} + +const char * +atom_text(struct atom_table *table, xkb_atom_t atom) +{ + if (atom == XKB_ATOM_NONE || atom >= darray_size(table->table)) + return NULL; + + return darray_item(table->table, atom).string; +} + +static bool +find_atom_pointer(struct atom_table *table, const char *string, size_t len, + xkb_atom_t **atomp_out, unsigned int *fingerprint_out) +{ + xkb_atom_t *atomp = &table->root; + unsigned int fingerprint = 0; + bool found = false; + + for (size_t i = 0; i < (len + 1) / 2; i++) { + fingerprint = fingerprint * 27 + string[i]; + fingerprint = fingerprint * 27 + string[len - 1 - i]; + } + + while (*atomp != XKB_ATOM_NONE) { + struct atom_node *node = &darray_item(table->table, *atomp); + + if (fingerprint < node->fingerprint) { + atomp = &node->left; + } + else if (fingerprint > node->fingerprint) { + atomp = &node->right; + } + else { + /* Now start testing the strings. */ + const int cmp = strncmp(string, node->string, len); + if (cmp < 0 || (cmp == 0 && len < strlen(node->string))) { + atomp = &node->left; + } + else if (cmp > 0) { + atomp = &node->right; + } + else { + found = true; + break; + } + } + } + + if (fingerprint_out) + *fingerprint_out = fingerprint; + if (atomp_out) + *atomp_out = atomp; + return found; +} + +xkb_atom_t +atom_lookup(struct atom_table *table, const char *string, size_t len) +{ + xkb_atom_t *atomp; + + if (!string) + return XKB_ATOM_NONE; + + if (!find_atom_pointer(table, string, len, &atomp, NULL)) + return XKB_ATOM_NONE; + + return *atomp; +} + +/* + * If steal is true, we do not strdup @string; therefore it must be + * dynamically allocated, NUL-terminated, not be free'd by the caller + * and not be used afterwards. Use to avoid some redundant allocations. + */ +xkb_atom_t +atom_intern(struct atom_table *table, const char *string, size_t len, + bool steal) +{ + xkb_atom_t *atomp; + struct atom_node node; + unsigned int fingerprint; + + if (!string) + return XKB_ATOM_NONE; + + if (find_atom_pointer(table, string, len, &atomp, &fingerprint)) { + if (steal) + free(UNCONSTIFY(string)); + return *atomp; + } + + if (steal) { + node.string = UNCONSTIFY(string); + } + else { + node.string = strndup(string, len); + if (!node.string) + return XKB_ATOM_NONE; + } + + node.left = node.right = XKB_ATOM_NONE; + node.fingerprint = fingerprint; + node.atom = darray_size(table->table); + /* Do this before the append, as it may realloc and change the offsets. */ + *atomp = node.atom; + darray_append(table->table, node); + + return node.atom; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.h new file mode 100644 index 0000000..1bf8e49 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/atom.h @@ -0,0 +1,49 @@ +/* + * Copyright © 2009 Dan Nicholson + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef ATOM_H +#define ATOM_H + +typedef uint32_t xkb_atom_t; + +#define XKB_ATOM_NONE 0 + +struct atom_table; + +struct atom_table * +atom_table_new(void); + +void +atom_table_free(struct atom_table *table); + +xkb_atom_t +atom_lookup(struct atom_table *table, const char *string, size_t len); + +xkb_atom_t +atom_intern(struct atom_table *table, const char *string, size_t len, + bool steal); + +const char * +atom_text(struct atom_table *table, xkb_atom_t atom); + +#endif /* ATOM_H */ diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c new file mode 100644 index 0000000..95f0fdd --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.c @@ -0,0 +1,759 @@ +/* + * Copyright © 2013 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +/****************************************************************** + + Copyright 1992 by Oki Technosystems Laboratory, Inc. + Copyright 1992 by Fuji Xerox Co., Ltd. + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and +that both that copyright notice and this permission notice appear +in supporting documentation, and that the name of Oki Technosystems +Laboratory and Fuji Xerox not be used in advertising or publicity +pertaining to distribution of the software without specific, written +prior permission. +Oki Technosystems Laboratory and Fuji Xerox make no representations +about the suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +OKI TECHNOSYSTEMS LABORATORY AND FUJI XEROX DISCLAIM ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OKI TECHNOSYSTEMS +LABORATORY AND FUJI XEROX BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE +OR PERFORMANCE OF THIS SOFTWARE. + + Author: Yasuhiro Kawai Oki Technosystems Laboratory + Author: Kazunori Nishihara Fuji Xerox + +******************************************************************/ + +#include + +#include "utils.h" +#include "scanner-utils.h" +#include "table.h" +#include "paths.h" +#include "utf8.h" +#include "parser.h" + +#define MAX_LHS_LEN 10 +#define MAX_INCLUDE_DEPTH 5 + +#define KEYSYM_FROM_NAME_CACHE_SIZE 8 + +/* + * xkb_keysym_from_name() is fairly slow, because for internal reasons + * it must use strcasecmp(). + * A small cache reduces about 20% from the compilation time of + * en_US.UTF-8/Compose. + */ +struct keysym_from_name_cache { + struct { + char name[64]; + unsigned len; + xkb_keysym_t keysym; + } cache[KEYSYM_FROM_NAME_CACHE_SIZE]; + unsigned next; +}; + +static xkb_keysym_t +cached_keysym_from_name(struct keysym_from_name_cache *cache, + const char *name, size_t len) +{ + xkb_keysym_t keysym; + + if (len >= sizeof(cache->cache[0].name)) + return XKB_KEY_NoSymbol; + + for (unsigned i = 0; i < KEYSYM_FROM_NAME_CACHE_SIZE; i++) + if (cache->cache[i].len == len && + memcmp(cache->cache[i].name, name, len) == 0) + return cache->cache[i].keysym; + + keysym = xkb_keysym_from_name(name, XKB_KEYSYM_NO_FLAGS); + strcpy(cache->cache[cache->next].name, name); + cache->cache[cache->next].len = len; + cache->cache[cache->next].keysym = keysym; + cache->next = (cache->next + 1) % KEYSYM_FROM_NAME_CACHE_SIZE; + return keysym; +} + +/* + * Grammar adapted from libX11/modules/im/ximcp/imLcPrs.c. + * See also the XCompose(5) manpage. + * + * FILE ::= { [PRODUCTION] [COMMENT] "\n" | INCLUDE } + * INCLUDE ::= "include" '"' INCLUDE_STRING '"' + * PRODUCTION ::= LHS ":" RHS [ COMMENT ] + * COMMENT ::= "#" {} + * LHS ::= EVENT { EVENT } + * EVENT ::= [MODIFIER_LIST] "<" keysym ">" + * MODIFIER_LIST ::= ("!" {MODIFIER} ) | "None" + * MODIFIER ::= ["~"] modifier_name + * RHS ::= ( STRING | keysym | STRING keysym ) + * STRING ::= '"' { CHAR } '"' + * CHAR ::= GRAPHIC_CHAR | ESCAPED_CHAR + * GRAPHIC_CHAR ::= locale (codeset) dependent code + * ESCAPED_CHAR ::= ('\\' | '\"' | OCTAL | HEX ) + * OCTAL ::= '\' OCTAL_CHAR [OCTAL_CHAR [OCTAL_CHAR]] + * OCTAL_CHAR ::= (0|1|2|3|4|5|6|7) + * HEX ::= '\' (x|X) HEX_CHAR [HEX_CHAR]] + * HEX_CHAR ::= (0|1|2|3|4|5|6|7|8|9|A|B|C|D|E|F|a|b|c|d|e|f) + * + * INCLUDE_STRING is a filesystem path, with the following %-expansions: + * %% - '%'. + * %H - The user's home directory (the $HOME environment variable). + * %L - The name of the locale specific Compose file (e.g., + * "/usr/share/X11/locale//Compose"). + * %S - The name of the system directory for Compose files (e.g., + * "/usr/share/X11/locale"). + */ + +enum rules_token { + TOK_END_OF_FILE = 0, + TOK_END_OF_LINE, + TOK_INCLUDE, + TOK_INCLUDE_STRING, + TOK_LHS_KEYSYM, + TOK_COLON, + TOK_BANG, + TOK_TILDE, + TOK_STRING, + TOK_IDENT, + TOK_ERROR +}; + +/* Values returned with some tokens, like yylval. */ +union lvalue { + struct { + /* Still \0-terminated. */ + const char *str; + size_t len; + } string; +}; + +static enum rules_token +lex(struct scanner *s, union lvalue *val) +{ +skip_more_whitespace_and_comments: + /* Skip spaces. */ + while (is_space(peek(s))) + if (next(s) == '\n') + return TOK_END_OF_LINE; + + /* Skip comments. */ + if (chr(s, '#')) { + skip_to_eol(s); + goto skip_more_whitespace_and_comments; + } + + /* See if we're done. */ + if (eof(s)) return TOK_END_OF_FILE; + + /* New token. */ + s->token_line = s->line; + s->token_column = s->column; + s->buf_pos = 0; + + /* LHS Keysym. */ + if (chr(s, '<')) { + while (peek(s) != '>' && !eol(s)) + buf_append(s, next(s)); + if (!chr(s, '>')) { + scanner_err(s, "unterminated keysym literal"); + return TOK_ERROR; + } + if (!buf_append(s, '\0')) { + scanner_err(s, "keysym literal is too long"); + return TOK_ERROR; + } + val->string.str = s->buf; + val->string.len = s->buf_pos; + return TOK_LHS_KEYSYM; + } + + /* Colon. */ + if (chr(s, ':')) + return TOK_COLON; + if (chr(s, '!')) + return TOK_BANG; + if (chr(s, '~')) + return TOK_TILDE; + + /* String literal. */ + if (chr(s, '\"')) { + while (!eof(s) && !eol(s) && peek(s) != '\"') { + if (chr(s, '\\')) { + uint8_t o; + if (chr(s, '\\')) { + buf_append(s, '\\'); + } + else if (chr(s, '"')) { + buf_append(s, '"'); + } + else if (chr(s, 'x') || chr(s, 'X')) { + if (hex(s, &o)) + buf_append(s, (char) o); + else + scanner_warn(s, "illegal hexadecimal escape sequence in string literal"); + } + else if (oct(s, &o)) { + buf_append(s, (char) o); + } + else { + scanner_warn(s, "unknown escape sequence (%c) in string literal", peek(s)); + /* Ignore. */ + } + } else { + buf_append(s, next(s)); + } + } + if (!chr(s, '\"')) { + scanner_err(s, "unterminated string literal"); + return TOK_ERROR; + } + if (!buf_append(s, '\0')) { + scanner_err(s, "string literal is too long"); + return TOK_ERROR; + } + if (!is_valid_utf8(s->buf, s->buf_pos - 1)) { + scanner_err(s, "string literal is not a valid UTF-8 string"); + return TOK_ERROR; + } + val->string.str = s->buf; + val->string.len = s->buf_pos; + return TOK_STRING; + } + + /* Identifier or include. */ + if (is_alpha(peek(s)) || peek(s) == '_') { + s->buf_pos = 0; + while (is_alnum(peek(s)) || peek(s) == '_') + buf_append(s, next(s)); + if (!buf_append(s, '\0')) { + scanner_err(s, "identifier is too long"); + return TOK_ERROR; + } + + if (streq(s->buf, "include")) + return TOK_INCLUDE; + + val->string.str = s->buf; + val->string.len = s->buf_pos; + return TOK_IDENT; + } + + /* Discard rest of line. */ + skip_to_eol(s); + + scanner_err(s, "unrecognized token"); + return TOK_ERROR; +} + +static enum rules_token +lex_include_string(struct scanner *s, struct xkb_compose_table *table, + union lvalue *val_out) +{ + while (is_space(peek(s))) + if (next(s) == '\n') + return TOK_END_OF_LINE; + + s->token_line = s->line; + s->token_column = s->column; + s->buf_pos = 0; + + if (!chr(s, '\"')) { + scanner_err(s, "include statement must be followed by a path"); + return TOK_ERROR; + } + + while (!eof(s) && !eol(s) && peek(s) != '\"') { + if (chr(s, '%')) { + if (chr(s, '%')) { + buf_append(s, '%'); + } + else if (chr(s, 'H')) { + const char *home = secure_getenv("HOME"); + if (!home) { + scanner_err(s, "%%H was used in an include statement, but the HOME environment variable is not set"); + return TOK_ERROR; + } + if (!buf_appends(s, home)) { + scanner_err(s, "include path after expanding %%H is too long"); + return TOK_ERROR; + } + } + else if (chr(s, 'L')) { + char *path = get_locale_compose_file_path(table->locale); + if (!path) { + scanner_err(s, "failed to expand %%L to the locale Compose file"); + return TOK_ERROR; + } + if (!buf_appends(s, path)) { + free(path); + scanner_err(s, "include path after expanding %%L is too long"); + return TOK_ERROR; + } + free(path); + } + else if (chr(s, 'S')) { + const char *xlocaledir = get_xlocaledir_path(); + if (!buf_appends(s, xlocaledir)) { + scanner_err(s, "include path after expanding %%S is too long"); + return TOK_ERROR; + } + } + else { + scanner_err(s, "unknown %% format (%c) in include statement", peek(s)); + return TOK_ERROR; + } + } else { + buf_append(s, next(s)); + } + } + if (!chr(s, '\"')) { + scanner_err(s, "unterminated include statement"); + return TOK_ERROR; + } + if (!buf_append(s, '\0')) { + scanner_err(s, "include path is too long"); + return TOK_ERROR; + } + val_out->string.str = s->buf; + val_out->string.len = s->buf_pos; + return TOK_INCLUDE_STRING; +} + +struct production { + xkb_keysym_t lhs[MAX_LHS_LEN]; + unsigned int len; + xkb_keysym_t keysym; + char string[256]; + bool has_keysym; + bool has_string; + + xkb_mod_mask_t mods; + xkb_mod_mask_t modmask; +}; + +static uint32_t +add_node(struct xkb_compose_table *table, xkb_keysym_t keysym) +{ + struct compose_node new = { + .keysym = keysym, + .next = 0, + .is_leaf = true, + }; + darray_append(table->nodes, new); + return darray_size(table->nodes) - 1; +} + +static void +add_production(struct xkb_compose_table *table, struct scanner *s, + const struct production *production) +{ + unsigned lhs_pos; + uint32_t curr; + struct compose_node *node; + + curr = 0; + node = &darray_item(table->nodes, curr); + + /* + * Insert the sequence to the trie, creating new nodes as needed. + * + * TODO: This can be sped up a bit by first trying the path that the + * previous production took, and only then doing the linear search + * through the trie levels. This will work because sequences in the + * Compose files are often clustered by a common prefix; especially + * in the 1st and 2nd keysyms, which is where the largest variation + * (thus, longest search) is. + */ + for (lhs_pos = 0; lhs_pos < production->len; lhs_pos++) { + while (production->lhs[lhs_pos] != node->keysym) { + if (node->next == 0) { + uint32_t next = add_node(table, production->lhs[lhs_pos]); + /* Refetch since add_node could have realloc()ed. */ + node = &darray_item(table->nodes, curr); + node->next = next; + } + + curr = node->next; + node = &darray_item(table->nodes, curr); + } + + if (lhs_pos + 1 == production->len) + break; + + if (node->is_leaf) { + if (node->u.leaf.utf8 != 0 || + node->u.leaf.keysym != XKB_KEY_NoSymbol) { + scanner_warn(s, "a sequence already exists which is a prefix of this sequence; overriding"); + node->u.leaf.utf8 = 0; + node->u.leaf.keysym = XKB_KEY_NoSymbol; + } + + { + uint32_t successor = add_node(table, production->lhs[lhs_pos + 1]); + /* Refetch since add_node could have realloc()ed. */ + node = &darray_item(table->nodes, curr); + node->is_leaf = false; + node->u.successor = successor; + } + } + + curr = node->u.successor; + node = &darray_item(table->nodes, curr); + } + + if (!node->is_leaf) { + scanner_warn(s, "this compose sequence is a prefix of another; skipping line"); + return; + } + + if (node->u.leaf.utf8 != 0 || node->u.leaf.keysym != XKB_KEY_NoSymbol) { + if (streq(&darray_item(table->utf8, node->u.leaf.utf8), + production->string) && + node->u.leaf.keysym == production->keysym) { + scanner_warn(s, "this compose sequence is a duplicate of another; skipping line"); + return; + } + scanner_warn(s, "this compose sequence already exists; overriding"); + } + + if (production->has_string) { + node->u.leaf.utf8 = darray_size(table->utf8); + darray_append_items(table->utf8, production->string, + strlen(production->string) + 1); + } + if (production->has_keysym) { + node->u.leaf.keysym = production->keysym; + } +} + +static xkb_mod_index_t +resolve_modifier(const char *name) +{ + static const struct { + const char *name; + xkb_mod_index_t mod; + } mods[] = { + { "Shift", 0 }, + { "Ctrl", 2 }, + { "Alt", 3 }, + { "Meta", 3 }, + { "Lock", 1 }, + { "Caps", 1 }, + }; + + for (unsigned i = 0; i < ARRAY_SIZE(mods); i++) + if (streq(name, mods[i].name)) + return mods[i].mod; + + return XKB_MOD_INVALID; +} + +static bool +parse(struct xkb_compose_table *table, struct scanner *s, + unsigned include_depth); + +static bool +do_include(struct xkb_compose_table *table, struct scanner *s, + const char *path, unsigned include_depth) +{ + FILE *file; + bool ok; + const char *string; + size_t size; + struct scanner new_s; + + if (include_depth >= MAX_INCLUDE_DEPTH) { + scanner_err(s, "maximum include depth (%d) exceeded; maybe there is an include loop?", + MAX_INCLUDE_DEPTH); + return false; + } + + file = fopen(path, "r"); + if (!file) { + scanner_err(s, "failed to open included Compose file \"%s\": %s", + path, strerror(errno)); + return false; + } + + ok = map_file(file, &string, &size); + if (!ok) { + scanner_err(s, "failed to read included Compose file \"%s\": %s", + path, strerror(errno)); + goto err_file; + } + + scanner_init(&new_s, table->ctx, string, size, path, s->priv); + + ok = parse(table, &new_s, include_depth + 1); + if (!ok) + goto err_unmap; + +err_unmap: + unmap_file(string, size); +err_file: + fclose(file); + return ok; +} + +static bool +parse(struct xkb_compose_table *table, struct scanner *s, + unsigned include_depth) +{ + enum rules_token tok; + union lvalue val; + struct keysym_from_name_cache *cache = s->priv; + xkb_keysym_t keysym; + struct production production; + enum { MAX_ERRORS = 10 }; + int num_errors = 0; + +initial: + production.len = 0; + production.has_keysym = false; + production.has_string = false; + production.mods = 0; + production.modmask = 0; + + /* fallthrough */ + +initial_eol: + switch (tok = lex(s, &val)) { + case TOK_END_OF_LINE: + goto initial_eol; + case TOK_END_OF_FILE: + goto finished; + case TOK_INCLUDE: + goto include; + default: + goto lhs_tok; + } + +include: + switch (tok = lex_include_string(s, table, &val)) { + case TOK_INCLUDE_STRING: + goto include_eol; + default: + goto unexpected; + } + +include_eol: + switch (tok = lex(s, &val)) { + case TOK_END_OF_LINE: + if (!do_include(table, s, val.string.str, include_depth)) + goto fail; + goto initial; + default: + goto unexpected; + } + +lhs: + tok = lex(s, &val); +lhs_tok: + switch (tok) { + case TOK_COLON: + if (production.len <= 0) { + scanner_warn(s, "expected at least one keysym on left-hand side; skipping line"); + goto skip; + } + goto rhs; + case TOK_IDENT: + if (!streq(val.string.str, "None")) { + scanner_err(s, "unrecognized identifier \"%s\"", val.string.str); + goto error; + } + production.mods = 0; + /* XXX Should only include the mods in resolve_mods(). */ + production.modmask = 0xff; + goto lhs_keysym; + case TOK_BANG: + goto lhs_mod_list; + default: + goto lhs_keysym_tok; + } + +lhs_keysym: + tok = lex(s, &val); +lhs_keysym_tok: + switch (tok) { + case TOK_LHS_KEYSYM: + keysym = cached_keysym_from_name(cache, val.string.str, val.string.len); + if (keysym == XKB_KEY_NoSymbol) { + scanner_err(s, "unrecognized keysym \"%s\" on left-hand side", + val.string.str); + goto error; + } + if (production.len + 1 > MAX_LHS_LEN) { + scanner_warn(s, "too many keysyms (%d) on left-hand side; skipping line", + MAX_LHS_LEN + 1); + goto skip; + } + production.lhs[production.len++] = keysym; + production.mods = 0; + production.modmask = 0; + goto lhs; + default: + goto unexpected; + } + +lhs_mod_list: { + bool tilde = false; + xkb_mod_index_t mod; + + tok = lex(s, &val); + if (tok == TOK_TILDE) { + tilde = true; + tok = lex(s, &val); + } + + if (tok != TOK_IDENT) { + if (tilde || production.modmask == 0) + goto unexpected; + goto lhs_keysym_tok; + } + + mod = resolve_modifier(val.string.str); + if (mod == XKB_MOD_INVALID) { + scanner_err(s, "unrecognized modifier \"%s\"", + val.string.str); + goto error; + } + + production.modmask |= 1 << mod; + if (tilde) + production.mods &= ~(1 << mod); + else + production.mods |= 1 << mod; + + goto lhs_mod_list; + } + +rhs: + switch (tok = lex(s, &val)) { + case TOK_STRING: + if (production.has_string) { + scanner_warn(s, "right-hand side can have at most one string; skipping line"); + goto skip; + } + if (val.string.len <= 0) { + scanner_warn(s, "right-hand side string must not be empty; skipping line"); + goto skip; + } + if (val.string.len >= sizeof(production.string)) { + scanner_warn(s, "right-hand side string is too long; skipping line"); + goto skip; + } + strcpy(production.string, val.string.str); + production.has_string = true; + goto rhs; + case TOK_IDENT: + keysym = cached_keysym_from_name(cache, val.string.str, val.string.len); + if (keysym == XKB_KEY_NoSymbol) { + scanner_err(s, "unrecognized keysym \"%s\" on right-hand side", + val.string.str); + goto error; + } + if (production.has_keysym) { + scanner_warn(s, "right-hand side can have at most one keysym; skipping line"); + goto skip; + } + production.keysym = keysym; + production.has_keysym = true; + case TOK_END_OF_LINE: + if (!production.has_string && !production.has_keysym) { + scanner_warn(s, "right-hand side must have at least one of string or keysym; skipping line"); + goto skip; + } + add_production(table, s, &production); + goto initial; + default: + goto unexpected; + } + +unexpected: + if (tok != TOK_ERROR) + scanner_err(s, "unexpected token"); +error: + num_errors++; + if (num_errors <= MAX_ERRORS) + goto skip; + + scanner_err(s, "too many errors"); + goto fail; + +fail: + scanner_err(s, "failed to parse file"); + return false; + +skip: + while (tok != TOK_END_OF_LINE && tok != TOK_END_OF_FILE) + tok = lex(s, &val); + goto initial; + +finished: + return true; +} + +bool +parse_string(struct xkb_compose_table *table, const char *string, size_t len, + const char *file_name) +{ + struct scanner s; + struct keysym_from_name_cache cache; + memset(&cache, 0, sizeof(cache)); + scanner_init(&s, table->ctx, string, len, file_name, &cache); + if (!parse(table, &s, 0)) + return false; + /* Maybe the allocator can use the excess space. */ + darray_shrink(table->nodes); + darray_shrink(table->utf8); + return true; +} + +bool +parse_file(struct xkb_compose_table *table, FILE *file, const char *file_name) +{ + bool ok; + const char *string; + size_t size; + + ok = map_file(file, &string, &size); + if (!ok) { + log_err(table->ctx, "Couldn't read Compose file %s: %s\n", + file_name, strerror(errno)); + return false; + } + + ok = parse_string(table, string, size, file_name); + unmap_file(string, size); + return ok; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.h new file mode 100644 index 0000000..3f64a07 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/parser.h @@ -0,0 +1,36 @@ +/* + * Copyright © 2013 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef COMPOSE_PARSER_H +#define COMPOSE_PARSER_H + +bool +parse_string(struct xkb_compose_table *table, + const char *string, size_t len, + const char *file_name); + +bool +parse_file(struct xkb_compose_table *table, + FILE *file, const char *file_name); + +#endif diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c new file mode 100644 index 0000000..8deb1dd --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.c @@ -0,0 +1,204 @@ +/* + * Copyright © 2014 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "utils.h" +#include "paths.h" + +enum resolve_name_direction { + LEFT_TO_RIGHT, + RIGHT_TO_LEFT, +}; + +const char * +get_xlocaledir_path(void) +{ + const char *dir = secure_getenv("XLOCALEDIR"); + if (!dir) + dir = XLOCALEDIR; + return dir; +} + +/* + * Files like compose.dir have the format LEFT: RIGHT. Lookup @name in + * such a file and return its matching value, according to @direction. + * @filename is relative to the xlocaledir. + */ +static char * +resolve_name(const char *filename, enum resolve_name_direction direction, + const char *name) +{ + int ret; + bool ok; + const char *xlocaledir; + char path[512]; + FILE *file; + const char *string, *end; + size_t string_size; + const char *s, *left, *right; + char *match; + size_t left_len, right_len, name_len; + + xlocaledir = get_xlocaledir_path(); + + ret = snprintf(path, sizeof(path), "%s/%s", xlocaledir, filename); + if (ret < 0 || (size_t) ret >= sizeof(path)) + return false; + + file = fopen(path, "r"); + if (!file) + return false; + + ok = map_file(file, &string, &string_size); + fclose(file); + if (!ok) + return false; + + s = string; + end = string + string_size; + name_len = strlen(name); + match = NULL; + + while (s < end) { + /* Skip spaces. */ + while (s < end && is_space(*s)) + s++; + + /* Skip comments. */ + if (s < end && *s == '#') { + while (s < end && *s != '\n') + s++; + continue; + } + + /* Get the left value. */ + left = s; + while (s < end && !is_space(*s) && *s != ':') + s++; + left_len = s - left; + + /* There's an optional colon between left and right. */ + if (s < end && *s == ':') + s++; + + /* Skip spaces. */ + while (s < end && is_space(*s)) + s++; + + /* Get the right value. */ + right = s; + while (s < end && !is_space(*s)) + s++; + right_len = s - right; + + /* Discard rest of line. */ + while (s < end && *s != '\n') + s++; + + if (direction == LEFT_TO_RIGHT) { + if (left_len == name_len && memcmp(left, name, left_len) == 0) { + match = strndup(right, right_len); + break; + } + } + else if (direction == RIGHT_TO_LEFT) { + if (right_len == name_len && memcmp(right, name, right_len) == 0) { + match = strndup(left, left_len); + break; + } + } + } + + unmap_file(string, string_size); + return match; +} + +char * +resolve_locale(const char *locale) +{ + char *alias = resolve_name("locale.alias", LEFT_TO_RIGHT, locale); + return alias ? alias : strdup(locale); +} + +const char * +get_xcomposefile_path(void) +{ + return secure_getenv("XCOMPOSEFILE"); +} + +char * +get_home_xcompose_file_path(void) +{ + int ret; + const char *home; + char *path; + + home = secure_getenv("HOME"); + if (!home) + return NULL; + + ret = asprintf(&path, "%s/.XCompose", home); + if (ret <0) + return NULL; + + return path; +} + +char * +get_locale_compose_file_path(const char *locale) +{ + int ret; + const char *xlocaledir; + char *resolved; + char *path; + + /* + * WARNING: Random workaround ahead. + * + * We currently do not support non-UTF-8 Compose files. The C/POSIX + * locale is specified to be the default fallback locale with an + * ASCII charset. But for some reason the compose.dir points the C + * locale to the iso8859-1/Compose file, which is not ASCII but + * ISO8859-1. Since this is bound to happen a lot, and since our API + * is UTF-8 based, and since 99% of the time a C locale is really just + * a misconfiguration for UTF-8, let's do the most helpful thing. + */ + if (streq(locale, "C")) + locale = "en_US.UTF-8"; + + resolved = resolve_name("compose.dir", RIGHT_TO_LEFT, locale); + if (!resolved) + return NULL; + + if (resolved[0] == '/') { + path = resolved; + } + else { + xlocaledir = get_xlocaledir_path(); + ret = asprintf(&path, "%s/%s", xlocaledir, resolved); + free(resolved); + if (ret < 0) + return NULL; + } + + return path; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.h new file mode 100644 index 0000000..1d719af --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/paths.h @@ -0,0 +1,42 @@ +/* + * Copyright © 2014 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef COMPOSE_RESOLVE_H +#define COMPOSE_RESOLVE_H + +char * +resolve_locale(const char *locale); + +const char * +get_xlocaledir_path(void); + +const char * +get_xcomposefile_path(void); + +char * +get_home_xcompose_file_path(void); + +char * +get_locale_compose_file_path(const char *locale); + +#endif diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c new file mode 100644 index 0000000..8657ff7 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/state.c @@ -0,0 +1,196 @@ +/* + * Copyright © 2013 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "table.h" +#include "utils.h" +#include "keysym.h" + +struct xkb_compose_state { + int refcnt; + enum xkb_compose_state_flags flags; + struct xkb_compose_table *table; + + /* + * Offsets into xkb_compose_table::nodes. + * + * They maintain the current and previous position in the trie; see + * xkb_compose_state_feed(). + * + * This is also sufficient for inferring the current status; see + * xkb_compose_state_get_status(). + */ + uint32_t prev_context; + uint32_t context; +}; + +XKB_EXPORT struct xkb_compose_state * +xkb_compose_state_new(struct xkb_compose_table *table, + enum xkb_compose_state_flags flags) +{ + struct xkb_compose_state *state; + + state = calloc(1, sizeof(*state)); + if (!state) + return NULL; + + state->refcnt = 1; + state->table = xkb_compose_table_ref(table); + + state->flags = flags; + state->prev_context = 0; + state->context = 0; + + return state; +} + +XKB_EXPORT struct xkb_compose_state * +xkb_compose_state_ref(struct xkb_compose_state *state) +{ + state->refcnt++; + return state; +} + +XKB_EXPORT void +xkb_compose_state_unref(struct xkb_compose_state *state) +{ + if (!state || --state->refcnt > 0) + return; + + xkb_compose_table_unref(state->table); + free(state); +} + +XKB_EXPORT struct xkb_compose_table * +xkb_compose_state_get_compose_table(struct xkb_compose_state *state) +{ + return state->table; +} + +XKB_EXPORT enum xkb_compose_feed_result +xkb_compose_state_feed(struct xkb_compose_state *state, xkb_keysym_t keysym) +{ + uint32_t context; + const struct compose_node *node; + + /* + * Modifiers do not affect the sequence directly. In particular, + * they do not cancel a sequence; otherwise it'd be impossible to + * have a sequence like (needs Shift in the middle). + * + * The following test is not really accurate - in order to test if + * a key is "modifier key", we really need the keymap, but we don't + * have it here. However, this is (approximately) what libX11 does + * as well. + */ + if (xkb_keysym_is_modifier(keysym)) + return XKB_COMPOSE_FEED_IGNORED; + + node = &darray_item(state->table->nodes, state->context); + + context = (node->is_leaf ? 0 : node->u.successor); + node = &darray_item(state->table->nodes, context); + + while (node->keysym != keysym && node->next != 0) { + context = node->next; + node = &darray_item(state->table->nodes, context); + } + + if (node->keysym != keysym) + context = 0; + + state->prev_context = state->context; + state->context = context; + return XKB_COMPOSE_FEED_ACCEPTED; +} + +XKB_EXPORT void +xkb_compose_state_reset(struct xkb_compose_state *state) +{ + state->prev_context = 0; + state->context = 0; +} + +XKB_EXPORT enum xkb_compose_status +xkb_compose_state_get_status(struct xkb_compose_state *state) +{ + const struct compose_node *prev_node, *node; + + prev_node = &darray_item(state->table->nodes, state->prev_context); + node = &darray_item(state->table->nodes, state->context); + + if (state->context == 0 && !prev_node->is_leaf) + return XKB_COMPOSE_CANCELLED; + + if (state->context == 0) + return XKB_COMPOSE_NOTHING; + + if (!node->is_leaf) + return XKB_COMPOSE_COMPOSING; + + return XKB_COMPOSE_COMPOSED; +} + +XKB_EXPORT int +xkb_compose_state_get_utf8(struct xkb_compose_state *state, + char *buffer, size_t size) +{ + const struct compose_node *node = + &darray_item(state->table->nodes, state->context); + + if (!node->is_leaf) + goto fail; + + /* If there's no string specified, but only a keysym, try to do the + * most helpful thing. */ + if (node->u.leaf.utf8 == 0 && node->u.leaf.keysym != XKB_KEY_NoSymbol) { + char name[64]; + int ret; + + ret = xkb_keysym_to_utf8(node->u.leaf.keysym, name, sizeof(name)); + if (ret < 0 || ret == 0) { + /* ret < 0 is impossible. + * ret == 0 means the keysym has no string representation. */ + goto fail; + } + + return snprintf(buffer, size, "%s", name); + } + + return snprintf(buffer, size, "%s", + &darray_item(state->table->utf8, node->u.leaf.utf8)); + +fail: + if (size > 0) + buffer[0] = '\0'; + return 0; +} + +XKB_EXPORT xkb_keysym_t +xkb_compose_state_get_one_sym(struct xkb_compose_state *state) +{ + const struct compose_node *node = + &darray_item(state->table->nodes, state->context); + if (!node->is_leaf) + return XKB_KEY_NoSymbol; + return node->u.leaf.keysym; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c new file mode 100644 index 0000000..5cd8415 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.c @@ -0,0 +1,219 @@ +/* + * Copyright © 2013 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "utils.h" +#include "table.h" +#include "parser.h" +#include "paths.h" + +static struct xkb_compose_table * +xkb_compose_table_new(struct xkb_context *ctx, + const char *locale, + enum xkb_compose_format format, + enum xkb_compose_compile_flags flags) +{ + char *resolved_locale; + struct xkb_compose_table *table; + struct compose_node root; + + resolved_locale = resolve_locale(locale); + if (!resolved_locale) + return NULL; + + table = calloc(1, sizeof(*table)); + if (!table) { + free(resolved_locale); + return NULL; + } + + table->refcnt = 1; + table->ctx = xkb_context_ref(ctx); + + table->locale = resolved_locale; + table->format = format; + table->flags = flags; + + darray_init(table->nodes); + darray_init(table->utf8); + + root.keysym = XKB_KEY_NoSymbol; + root.next = 0; + root.is_leaf = true; + root.u.leaf.utf8 = 0; + root.u.leaf.keysym = XKB_KEY_NoSymbol; + darray_append(table->nodes, root); + + darray_append(table->utf8, '\0'); + + return table; +} + +XKB_EXPORT struct xkb_compose_table * +xkb_compose_table_ref(struct xkb_compose_table *table) +{ + table->refcnt++; + return table; +} + +XKB_EXPORT void +xkb_compose_table_unref(struct xkb_compose_table *table) +{ + if (!table || --table->refcnt > 0) + return; + free(table->locale); + darray_free(table->nodes); + darray_free(table->utf8); + xkb_context_unref(table->ctx); + free(table); +} + +XKB_EXPORT struct xkb_compose_table * +xkb_compose_table_new_from_file(struct xkb_context *ctx, + FILE *file, + const char *locale, + enum xkb_compose_format format, + enum xkb_compose_compile_flags flags) +{ + struct xkb_compose_table *table; + bool ok; + + if (flags & ~(XKB_COMPOSE_COMPILE_NO_FLAGS)) { + log_err_func(ctx, "unrecognized flags: %#x\n", flags); + return NULL; + } + + if (format != XKB_COMPOSE_FORMAT_TEXT_V1) { + log_err_func(ctx, "unsupported compose format: %d\n", format); + return NULL; + } + + table = xkb_compose_table_new(ctx, locale, format, flags); + if (!table) + return NULL; + + ok = parse_file(table, file, "(unknown file)"); + if (!ok) { + xkb_compose_table_unref(table); + return NULL; + } + + return table; +} + +XKB_EXPORT struct xkb_compose_table * +xkb_compose_table_new_from_buffer(struct xkb_context *ctx, + const char *buffer, size_t length, + const char *locale, + enum xkb_compose_format format, + enum xkb_compose_compile_flags flags) +{ + struct xkb_compose_table *table; + bool ok; + + if (flags & ~(XKB_COMPOSE_COMPILE_NO_FLAGS)) { + log_err_func(ctx, "unrecognized flags: %#x\n", flags); + return NULL; + } + + if (format != XKB_COMPOSE_FORMAT_TEXT_V1) { + log_err_func(ctx, "unsupported compose format: %d\n", format); + return NULL; + } + + table = xkb_compose_table_new(ctx, locale, format, flags); + if (!table) + return NULL; + + ok = parse_string(table, buffer, length, "(input string)"); + if (!ok) { + xkb_compose_table_unref(table); + return NULL; + } + + return table; +} + +XKB_EXPORT struct xkb_compose_table * +xkb_compose_table_new_from_locale(struct xkb_context *ctx, + const char *locale, + enum xkb_compose_compile_flags flags) +{ + struct xkb_compose_table *table; + char *path = NULL; + const char *cpath; + FILE *file; + bool ok; + + if (flags & ~(XKB_COMPOSE_COMPILE_NO_FLAGS)) { + log_err_func(ctx, "unrecognized flags: %#x\n", flags); + return NULL; + } + + table = xkb_compose_table_new(ctx, locale, XKB_COMPOSE_FORMAT_TEXT_V1, + flags); + if (!table) + return NULL; + + cpath = get_xcomposefile_path(); + if (cpath) { + file = fopen(cpath, "r"); + if (file) + goto found_path; + } + + cpath = path = get_home_xcompose_file_path(); + if (path) { + file = fopen(path, "r"); + if (file) + goto found_path; + } + free(path); + path = NULL; + + cpath = path = get_locale_compose_file_path(table->locale); + if (path) { + file = fopen(path, "r"); + if (file) + goto found_path; + } + free(path); + path = NULL; + + log_err(ctx, "couldn't find a Compose file for locale \"%s\"\n", locale); + xkb_compose_table_unref(table); + return NULL; + +found_path: + ok = parse_file(table, file, cpath); + fclose(file); + if (!ok) { + xkb_compose_table_unref(table); + return NULL; + } + + log_dbg(ctx, "created compose table from locale %s with path %s\n", + table->locale, path); + + free(path); + return table; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.h new file mode 100644 index 0000000..05a415f --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/compose/table.h @@ -0,0 +1,100 @@ +/* + * Copyright © 2013 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef COMPOSE_COMPOSE_H +#define COMPOSE_COMPOSE_H + +#include "xkbcommon/xkbcommon-compose.h" +#include "utils.h" +#include "context.h" + +/* + * The compose table data structure is a simple trie. An example will + * help. Given these sequences: + * + * : "first" dead_a + * : "second" dead_b + * : "third" dead_c + * + * the trie would look like: + * + * [root] ---> [] -----------------> [] -# + * | | | + * # v v + * [] ---> [] -# [] -# + * | | - + * # v # + * [] -# + * | + * # + * where: + * - [root] is a special empty root node. + * - [] is a node for a sequence keysym . + * - right arrows are `next` pointers. + * - down arrows are `successor` pointers. + * - # is a nil pointer. + * + * The nodes are all kept in a contiguous array. Pointers are represented + * as integer offsets into this array. A nil pointer is represented as 0 + * (which, helpfully, is the offset of the empty root node). + * + * Nodes without a successor are leaf nodes. Since a sequence cannot be a + * prefix of another, these are exactly the nodes which terminate the + * sequences (in a bijective manner). + * + * A leaf contains the result data of its sequence. The result keysym is + * contained in the node struct itself; the result UTF-8 string is a byte + * offset into an array of the form "\0first\0second\0third" (the initial + * \0 is so offset 0 points to an empty string). + */ + +struct compose_node { + xkb_keysym_t keysym; + /* Offset into xkb_compose_table::nodes. */ + unsigned int next:31; + bool is_leaf:1; + + union { + /* Offset into xkb_compose_table::nodes. */ + uint32_t successor; + struct { + /* Offset into xkb_compose_table::utf8. */ + uint32_t utf8; + xkb_keysym_t keysym; + } leaf; + } u; +}; + +struct xkb_compose_table { + int refcnt; + enum xkb_compose_format format; + enum xkb_compose_compile_flags flags; + struct xkb_context *ctx; + + char *locale; + + darray_char utf8; + darray(struct compose_node) nodes; +}; + +#endif diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c new file mode 100644 index 0000000..c934201 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/context-priv.c @@ -0,0 +1,190 @@ +/* + * Copyright © 2012 Intel Corporation + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Daniel Stone + */ + +#include +#include +#include +#include + +#include "xkbcommon/xkbcommon.h" +#include "utils.h" +#include "context.h" + +unsigned int +xkb_context_num_failed_include_paths(struct xkb_context *ctx) +{ + return darray_size(ctx->failed_includes); +} + +const char * +xkb_context_failed_include_path_get(struct xkb_context *ctx, + unsigned int idx) +{ + if (idx >= xkb_context_num_failed_include_paths(ctx)) + return NULL; + + return darray_item(ctx->failed_includes, idx); +} + +xkb_atom_t +xkb_atom_lookup(struct xkb_context *ctx, const char *string) +{ + return atom_lookup(ctx->atom_table, string, strlen(string)); +} + +xkb_atom_t +xkb_atom_intern(struct xkb_context *ctx, const char *string, size_t len) +{ + return atom_intern(ctx->atom_table, string, len, false); +} + +xkb_atom_t +xkb_atom_steal(struct xkb_context *ctx, char *string) +{ + return atom_intern(ctx->atom_table, string, strlen(string), true); +} + +const char * +xkb_atom_text(struct xkb_context *ctx, xkb_atom_t atom) +{ + return atom_text(ctx->atom_table, atom); +} + +void +xkb_log(struct xkb_context *ctx, enum xkb_log_level level, int verbosity, + const char *fmt, ...) +{ + va_list args; + + if (ctx->log_level < level || ctx->log_verbosity < verbosity) + return; + + va_start(args, fmt); + ctx->log_fn(ctx, level, fmt, args); + va_end(args); +} + +char * +xkb_context_get_buffer(struct xkb_context *ctx, size_t size) +{ + char *rtrn; + + if (size >= sizeof(ctx->text_buffer)) + return NULL; + + if (sizeof(ctx->text_buffer) - ctx->text_next <= size) + ctx->text_next = 0; + + rtrn = &ctx->text_buffer[ctx->text_next]; + ctx->text_next += size; + + return rtrn; +} + +#ifndef DEFAULT_XKB_VARIANT +#define DEFAULT_XKB_VARIANT NULL +#endif + +#ifndef DEFAULT_XKB_OPTIONS +#define DEFAULT_XKB_OPTIONS NULL +#endif + +static const char * +xkb_context_get_default_rules(struct xkb_context *ctx) +{ + const char *env = NULL; + + if (ctx->use_environment_names) + env = secure_getenv("XKB_DEFAULT_RULES"); + + return env ? env : DEFAULT_XKB_RULES; +} + +static const char * +xkb_context_get_default_model(struct xkb_context *ctx) +{ + const char *env = NULL; + + if (ctx->use_environment_names) + env = secure_getenv("XKB_DEFAULT_MODEL"); + + return env ? env : DEFAULT_XKB_MODEL; +} + +static const char * +xkb_context_get_default_layout(struct xkb_context *ctx) +{ + const char *env = NULL; + + if (ctx->use_environment_names) + env = secure_getenv("XKB_DEFAULT_LAYOUT"); + + return env ? env : DEFAULT_XKB_LAYOUT; +} + +static const char * +xkb_context_get_default_variant(struct xkb_context *ctx) +{ + const char *env = NULL; + const char *layout = secure_getenv("XKB_DEFAULT_LAYOUT"); + + /* We don't want to inherit the variant if they haven't also set a + * layout, since they're so closely paired. */ + if (layout && ctx->use_environment_names) + env = secure_getenv("XKB_DEFAULT_VARIANT"); + + return env ? env : DEFAULT_XKB_VARIANT; +} + +static const char * +xkb_context_get_default_options(struct xkb_context *ctx) +{ + const char *env = NULL; + + if (ctx->use_environment_names) + env = secure_getenv("XKB_DEFAULT_OPTIONS"); + + return env ? env : DEFAULT_XKB_OPTIONS; +} + +void +xkb_context_sanitize_rule_names(struct xkb_context *ctx, + struct xkb_rule_names *rmlvo) +{ + if (isempty(rmlvo->rules)) + rmlvo->rules = xkb_context_get_default_rules(ctx); + if (isempty(rmlvo->model)) + rmlvo->model = xkb_context_get_default_model(ctx); + /* Layout and variant are tied together, so don't try to use one from + * the caller and one from the environment. */ + if (isempty(rmlvo->layout)) { + rmlvo->layout = xkb_context_get_default_layout(ctx); + rmlvo->variant = xkb_context_get_default_variant(ctx); + } + /* Options can be empty, so respect that if passed in. */ + if (rmlvo->options == NULL) + rmlvo->options = xkb_context_get_default_options(ctx); +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c new file mode 100644 index 0000000..e9c52eb --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/context.c @@ -0,0 +1,327 @@ +/* + * Copyright © 2012 Intel Corporation + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Daniel Stone + */ + +#include +#include +#include +#include + +#include "xkbcommon/xkbcommon.h" +#include "utils.h" +#include "context.h" + +/** + * Append one directory to the context's include path. + */ +XKB_EXPORT int +xkb_context_include_path_append(struct xkb_context *ctx, const char *path) +{ + struct stat stat_buf; + int err; + char *tmp; + + tmp = strdup(path); + if (!tmp) + goto err; + + err = stat(path, &stat_buf); + if (err != 0) + goto err; + if (!S_ISDIR(stat_buf.st_mode)) + goto err; + +#if defined(HAVE_EACCESS) + if (eaccess(path, R_OK | X_OK) != 0) + goto err; +#elif defined(HAVE_EUIDACCESS) + if (euidaccess(path, R_OK | X_OK) != 0) + goto err; +#endif + + darray_append(ctx->includes, tmp); + return 1; + +err: + darray_append(ctx->failed_includes, tmp); + return 0; +} + +/** + * Append the default include directories to the context. + */ +XKB_EXPORT int +xkb_context_include_path_append_default(struct xkb_context *ctx) +{ + const char *home; + char *user_path; + int err; + int ret = 0; + + ret |= xkb_context_include_path_append(ctx, DFLT_XKB_CONFIG_ROOT); + + home = secure_getenv("HOME"); + if (!home) + return ret; + err = asprintf(&user_path, "%s/.xkb", home); + if (err <= 0) + return ret; + ret |= xkb_context_include_path_append(ctx, user_path); + free(user_path); + + return ret; +} + +/** + * Remove all entries in the context's include path. + */ +XKB_EXPORT void +xkb_context_include_path_clear(struct xkb_context *ctx) +{ + char **path; + + darray_foreach(path, ctx->includes) + free(*path); + darray_free(ctx->includes); + + darray_foreach(path, ctx->failed_includes) + free(*path); + darray_free(ctx->failed_includes); +} + +/** + * xkb_context_include_path_clear() + xkb_context_include_path_append_default() + */ +XKB_EXPORT int +xkb_context_include_path_reset_defaults(struct xkb_context *ctx) +{ + xkb_context_include_path_clear(ctx); + return xkb_context_include_path_append_default(ctx); +} + +/** + * Returns the number of entries in the context's include path. + */ +XKB_EXPORT unsigned int +xkb_context_num_include_paths(struct xkb_context *ctx) +{ + return darray_size(ctx->includes); +} + +/** + * Returns the given entry in the context's include path, or NULL if an + * invalid index is passed. + */ +XKB_EXPORT const char * +xkb_context_include_path_get(struct xkb_context *ctx, unsigned int idx) +{ + if (idx >= xkb_context_num_include_paths(ctx)) + return NULL; + + return darray_item(ctx->includes, idx); +} + +/** + * Take a new reference on the context. + */ +XKB_EXPORT struct xkb_context * +xkb_context_ref(struct xkb_context *ctx) +{ + ctx->refcnt++; + return ctx; +} + +/** + * Drop an existing reference on the context, and free it if the refcnt is + * now 0. + */ +XKB_EXPORT void +xkb_context_unref(struct xkb_context *ctx) +{ + if (!ctx || --ctx->refcnt > 0) + return; + + xkb_context_include_path_clear(ctx); + atom_table_free(ctx->atom_table); + free(ctx); +} + +static const char * +log_level_to_prefix(enum xkb_log_level level) +{ + switch (level) { + case XKB_LOG_LEVEL_DEBUG: + return "xkbcommon: DEBUG: "; + case XKB_LOG_LEVEL_INFO: + return "xkbcommon: INFO: "; + case XKB_LOG_LEVEL_WARNING: + return "xkbcommon: WARNING: "; + case XKB_LOG_LEVEL_ERROR: + return "xkbcommon: ERROR: "; + case XKB_LOG_LEVEL_CRITICAL: + return "xkbcommon: CRITICAL: "; + default: + return NULL; + } +} + +ATTR_PRINTF(3, 0) static void +default_log_fn(struct xkb_context *ctx, enum xkb_log_level level, + const char *fmt, va_list args) +{ + const char *prefix = log_level_to_prefix(level); + + if (prefix) + fprintf(stderr, "%s", prefix); + vfprintf(stderr, fmt, args); +} + +static enum xkb_log_level +log_level(const char *level) { + char *endptr; + enum xkb_log_level lvl; + + errno = 0; + lvl = strtol(level, &endptr, 10); + if (errno == 0 && (endptr[0] == '\0' || is_space(endptr[0]))) + return lvl; + if (istreq_prefix("crit", level)) + return XKB_LOG_LEVEL_CRITICAL; + if (istreq_prefix("err", level)) + return XKB_LOG_LEVEL_ERROR; + if (istreq_prefix("warn", level)) + return XKB_LOG_LEVEL_WARNING; + if (istreq_prefix("info", level)) + return XKB_LOG_LEVEL_INFO; + if (istreq_prefix("debug", level) || istreq_prefix("dbg", level)) + return XKB_LOG_LEVEL_DEBUG; + + return XKB_LOG_LEVEL_ERROR; +} + +static int +log_verbosity(const char *verbosity) { + char *endptr; + int v; + + errno = 0; + v = strtol(verbosity, &endptr, 10); + if (errno == 0) + return v; + + return 0; +} + +/** + * Create a new context. + */ +XKB_EXPORT struct xkb_context * +xkb_context_new(enum xkb_context_flags flags) +{ + const char *env; + struct xkb_context *ctx = calloc(1, sizeof(*ctx)); + + if (!ctx) + return NULL; + + ctx->refcnt = 1; + ctx->log_fn = default_log_fn; + ctx->log_level = XKB_LOG_LEVEL_ERROR; + ctx->log_verbosity = 0; + + /* Environment overwrites defaults. */ + env = secure_getenv("XKB_LOG_LEVEL"); + if (env) + xkb_context_set_log_level(ctx, log_level(env)); + + env = secure_getenv("XKB_LOG_VERBOSITY"); + if (env) + xkb_context_set_log_verbosity(ctx, log_verbosity(env)); + + if (!(flags & XKB_CONTEXT_NO_DEFAULT_INCLUDES) && + !xkb_context_include_path_append_default(ctx)) { + log_err(ctx, "failed to add default include path %s\n", + DFLT_XKB_CONFIG_ROOT); + xkb_context_unref(ctx); + return NULL; + } + + ctx->use_environment_names = !(flags & XKB_CONTEXT_NO_ENVIRONMENT_NAMES); + + ctx->atom_table = atom_table_new(); + if (!ctx->atom_table) { + xkb_context_unref(ctx); + return NULL; + } + + return ctx; +} + +XKB_EXPORT void +xkb_context_set_log_fn(struct xkb_context *ctx, + void (*log_fn)(struct xkb_context *ctx, + enum xkb_log_level level, + const char *fmt, va_list args)) +{ + ctx->log_fn = (log_fn ? log_fn : default_log_fn); +} + +XKB_EXPORT enum xkb_log_level +xkb_context_get_log_level(struct xkb_context *ctx) +{ + return ctx->log_level; +} + +XKB_EXPORT void +xkb_context_set_log_level(struct xkb_context *ctx, enum xkb_log_level level) +{ + ctx->log_level = level; +} + +XKB_EXPORT int +xkb_context_get_log_verbosity(struct xkb_context *ctx) +{ + return ctx->log_verbosity; +} + +XKB_EXPORT void +xkb_context_set_log_verbosity(struct xkb_context *ctx, int verbosity) +{ + ctx->log_verbosity = verbosity; +} + +XKB_EXPORT void * +xkb_context_get_user_data(struct xkb_context *ctx) +{ + if (ctx) + return ctx->user_data; + return NULL; +} + +XKB_EXPORT void +xkb_context_set_user_data(struct xkb_context *ctx, void *user_data) +{ + ctx->user_data = user_data; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/context.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/context.h new file mode 100644 index 0000000..03e6d50 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/context.h @@ -0,0 +1,127 @@ +/* + * Copyright © 2012 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Daniel Stone + */ + +#ifndef CONTEXT_H +#define CONTEXT_H + +#include "atom.h" + +struct xkb_context { + int refcnt; + + ATTR_PRINTF(3, 0) void (*log_fn)(struct xkb_context *ctx, + enum xkb_log_level level, + const char *fmt, va_list args); + enum xkb_log_level log_level; + int log_verbosity; + void *user_data; + + struct xkb_rule_names names_dflt; + + darray(char *) includes; + darray(char *) failed_includes; + + struct atom_table *atom_table; + + /* Buffer for the *Text() functions. */ + char text_buffer[2048]; + size_t text_next; + + unsigned int use_environment_names : 1; +}; + +unsigned int +xkb_context_num_failed_include_paths(struct xkb_context *ctx); + +const char * +xkb_context_failed_include_path_get(struct xkb_context *ctx, + unsigned int idx); + +/* + * Returns XKB_ATOM_NONE if @string was not previously interned, + * otherwise returns the atom. + */ +xkb_atom_t +xkb_atom_lookup(struct xkb_context *ctx, const char *string); + +xkb_atom_t +xkb_atom_intern(struct xkb_context *ctx, const char *string, size_t len); + +#define xkb_atom_intern_literal(ctx, literal) \ + xkb_atom_intern((ctx), (literal), sizeof(literal) - 1) + +/** + * If @string is dynamically allocated, NUL-terminated, free'd immediately + * after being interned, and not used afterwards, use this function + * instead of xkb_atom_intern to avoid some unnecessary allocations. + * The caller should not use or free the passed in string afterwards. + */ +xkb_atom_t +xkb_atom_steal(struct xkb_context *ctx, char *string); + +const char * +xkb_atom_text(struct xkb_context *ctx, xkb_atom_t atom); + +char * +xkb_context_get_buffer(struct xkb_context *ctx, size_t size); + +ATTR_PRINTF(4, 5) void +xkb_log(struct xkb_context *ctx, enum xkb_log_level level, int verbosity, + const char *fmt, ...); + +void +xkb_context_sanitize_rule_names(struct xkb_context *ctx, + struct xkb_rule_names *rmlvo); + +/* + * The format is not part of the argument list in order to avoid the + * "ISO C99 requires rest arguments to be used" warning when only the + * format is supplied without arguments. Not supplying it would still + * result in an error, though. + */ +#define log_dbg(ctx, ...) \ + xkb_log((ctx), XKB_LOG_LEVEL_DEBUG, 0, __VA_ARGS__) +#define log_info(ctx, ...) \ + xkb_log((ctx), XKB_LOG_LEVEL_INFO, 0, __VA_ARGS__) +#define log_warn(ctx, ...) \ + xkb_log((ctx), XKB_LOG_LEVEL_WARNING, 0, __VA_ARGS__) +#define log_err(ctx, ...) \ + xkb_log((ctx), XKB_LOG_LEVEL_ERROR, 0, __VA_ARGS__) +#define log_wsgo(ctx, ...) \ + xkb_log((ctx), XKB_LOG_LEVEL_CRITICAL, 0, __VA_ARGS__) +#define log_vrb(ctx, vrb, ...) \ + xkb_log((ctx), XKB_LOG_LEVEL_WARNING, (vrb), __VA_ARGS__) + +/* + * Variants which are prefixed by the name of the function they're + * called from. + * Here we must have the silly 1 variant. + */ +#define log_err_func(ctx, fmt, ...) \ + log_err(ctx, "%s: " fmt, __func__, __VA_ARGS__) +#define log_err_func1(ctx, fmt) \ + log_err(ctx, "%s: " fmt, __func__) + +#endif diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/darray.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/darray.h new file mode 100644 index 0000000..be0319f --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/darray.h @@ -0,0 +1,205 @@ +/* + * Copyright (C) 2011 Joseph Adams + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef CCAN_DARRAY_H +#define CCAN_DARRAY_H + +/* Originally taken from: http://ccodearchive.net/info/darray.html + * But modified for libxkbcommon. */ + +#include +#include +#include +#include + +#define darray(type) struct { type *item; unsigned size; unsigned alloc; } + +#define darray_new() { 0, 0, 0 } + +#define darray_init(arr) do { \ + (arr).item = 0; (arr).size = 0; (arr).alloc = 0; \ +} while (0) + +#define darray_free(arr) do { \ + free((arr).item); \ + darray_init(arr); \ +} while (0) + +#define darray_steal(arr, to, to_size) do { \ + *(to) = (arr).item; \ + if (to_size) \ + *(unsigned int *) (to_size) = (arr).size; \ + darray_init(arr); \ +} while (0) + +/* + * Typedefs for darrays of common types. These are useful + * when you want to pass a pointer to an darray(T) around. + * + * The following will produce an incompatible pointer warning: + * + * void foo(darray(int) *arr); + * darray(int) arr = darray_new(); + * foo(&arr); + * + * The workaround: + * + * void foo(darray_int *arr); + * darray_int arr = darray_new(); + * foo(&arr); + */ + +typedef darray (char) darray_char; +typedef darray (signed char) darray_schar; +typedef darray (unsigned char) darray_uchar; + +typedef darray (short) darray_short; +typedef darray (int) darray_int; +typedef darray (long) darray_long; + +typedef darray (unsigned short) darray_ushort; +typedef darray (unsigned int) darray_uint; +typedef darray (unsigned long) darray_ulong; + +/*** Access ***/ + +#define darray_item(arr, i) ((arr).item[i]) +#define darray_size(arr) ((arr).size) +#define darray_empty(arr) ((arr).size == 0) + +/*** Insertion (single item) ***/ + +#define darray_append(arr, ...) do { \ + darray_resize(arr, (arr).size + 1); \ + (arr).item[(arr).size - 1] = (__VA_ARGS__); \ +} while (0) + +/*** Insertion (multiple items) ***/ + +#define darray_append_items(arr, items, count) do { \ + unsigned __count = (count), __oldSize = (arr).size; \ + darray_resize(arr, __oldSize + __count); \ + memcpy((arr).item + __oldSize, items, __count * sizeof(*(arr).item)); \ +} while (0) + +#define darray_from_items(arr, items, count) do { \ + unsigned __count = (count); \ + darray_resize(arr, __count); \ + memcpy((arr).item, items, __count * sizeof(*(arr).item)); \ +} while (0) + +#define darray_copy(arr_to, arr_from) \ + darray_from_items((arr_to), (arr_from).item, (arr_from).size) + +/*** String buffer ***/ + +#define darray_append_string(arr, str) do { \ + const char *__str = (str); \ + darray_append_items(arr, __str, strlen(__str) + 1); \ + (arr).size--; \ +} while (0) + +#define darray_append_lit(arr, stringLiteral) do { \ + darray_append_items(arr, stringLiteral, sizeof(stringLiteral)); \ + (arr).size--; \ +} while (0) + +#define darray_appends_nullterminate(arr, items, count) do { \ + unsigned __count = (count), __oldSize = (arr).size; \ + darray_resize(arr, __oldSize + __count + 1); \ + memcpy((arr).item + __oldSize, items, __count * sizeof(*(arr).item)); \ + (arr).item[--(arr).size] = 0; \ +} while (0) + +#define darray_prepends_nullterminate(arr, items, count) do { \ + unsigned __count = (count), __oldSize = (arr).size; \ + darray_resize(arr, __count + __oldSize + 1); \ + memmove((arr).item + __count, (arr).item, \ + __oldSize * sizeof(*(arr).item)); \ + memcpy((arr).item, items, __count * sizeof(*(arr).item)); \ + (arr).item[--(arr).size] = 0; \ +} while (0) + +/*** Size management ***/ + +#define darray_resize(arr, newSize) \ + darray_growalloc(arr, (arr).size = (newSize)) + +#define darray_resize0(arr, newSize) do { \ + unsigned __oldSize = (arr).size, __newSize = (newSize); \ + (arr).size = __newSize; \ + if (__newSize > __oldSize) { \ + darray_growalloc(arr, __newSize); \ + memset(&(arr).item[__oldSize], 0, \ + (__newSize - __oldSize) * sizeof(*(arr).item)); \ + } \ +} while (0) + +#define darray_realloc(arr, newAlloc) do { \ + (arr).item = realloc((arr).item, \ + ((arr).alloc = (newAlloc)) * sizeof(*(arr).item)); \ +} while (0) + +#define darray_growalloc(arr, need) do { \ + unsigned __need = (need); \ + if (__need > (arr).alloc) \ + darray_realloc(arr, darray_next_alloc((arr).alloc, __need, \ + sizeof(*(arr).item))); \ +} while (0) + +#define darray_shrink(arr) do { \ + if ((arr).size > 0) \ + (arr).item = realloc((arr).item, \ + ((arr).alloc = (arr).size) * sizeof(*(arr).item)); \ +} while (0) + +static inline unsigned +darray_next_alloc(unsigned alloc, unsigned need, unsigned itemSize) +{ + assert(need < UINT_MAX / itemSize / 2); /* Overflow. */ + if (alloc == 0) + alloc = 4; + while (alloc < need) + alloc *= 2; + return alloc; +} + +/*** Traversal ***/ + +#define darray_foreach(i, arr) \ + for ((i) = &(arr).item[0]; (i) < &(arr).item[(arr).size]; (i)++) + +#define darray_foreach_from(i, arr, from) \ + for ((i) = &(arr).item[from]; (i) < &(arr).item[(arr).size]; (i)++) + +/* Iterate on index and value at the same time, like Python's enumerate. */ +#define darray_enumerate(idx, val, arr) \ + for ((idx) = 0, (val) = &(arr).item[0]; \ + (idx) < (arr).size; \ + (idx)++, (val)++) + +#define darray_enumerate_from(idx, val, arr, from) \ + for ((idx) = (from), (val) = &(arr).item[0]; \ + (idx) < (arr).size; \ + (idx)++, (val)++) + +#endif /* CCAN_DARRAY_H */ diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c new file mode 100644 index 0000000..d21dda7 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap-priv.c @@ -0,0 +1,139 @@ +/** + * Copyright © 2012 Intel Corporation + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Daniel Stone + */ + +#include "keymap.h" + +static void +update_builtin_keymap_fields(struct xkb_keymap *keymap) +{ + /* Predefined (AKA real, core, X11) modifiers. The order is important! */ + static const char *const builtin_mods[] = { + [0] = "Shift", + [1] = "Lock", + [2] = "Control", + [3] = "Mod1", + [4] = "Mod2", + [5] = "Mod3", + [6] = "Mod4", + [7] = "Mod5" + }; + + for (unsigned i = 0; i < ARRAY_SIZE(builtin_mods); i++) { + keymap->mods.mods[i].name = xkb_atom_intern(keymap->ctx, + builtin_mods[i], + strlen(builtin_mods[i])); + keymap->mods.mods[i].type = MOD_REAL; + } + keymap->mods.num_mods = ARRAY_SIZE(builtin_mods); +} + +struct xkb_keymap * +xkb_keymap_new(struct xkb_context *ctx, + enum xkb_keymap_format format, + enum xkb_keymap_compile_flags flags) +{ + struct xkb_keymap *keymap; + + keymap = calloc(1, sizeof(*keymap)); + if (!keymap) + return NULL; + + keymap->refcnt = 1; + keymap->ctx = xkb_context_ref(ctx); + + keymap->format = format; + keymap->flags = flags; + + update_builtin_keymap_fields(keymap); + + return keymap; +} + +struct xkb_key * +XkbKeyByName(struct xkb_keymap *keymap, xkb_atom_t name, bool use_aliases) +{ + struct xkb_key *key; + + xkb_keys_foreach(key, keymap) + if (key->name == name) + return key; + + if (use_aliases) { + xkb_atom_t new_name = XkbResolveKeyAlias(keymap, name); + if (new_name != XKB_ATOM_NONE) + return XkbKeyByName(keymap, new_name, false); + } + + return NULL; +} + +xkb_atom_t +XkbResolveKeyAlias(const struct xkb_keymap *keymap, xkb_atom_t name) +{ + for (unsigned i = 0; i < keymap->num_key_aliases; i++) + if (keymap->key_aliases[i].alias == name) + return keymap->key_aliases[i].real; + + return XKB_ATOM_NONE; +} + +void +XkbEscapeMapName(char *name) +{ + /* + * All latin-1 alphanumerics, plus parens, slash, minus, underscore and + * wildcards. + */ + static const unsigned char legal[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, 0xff, 0x83, + 0xfe, 0xff, 0xff, 0x87, 0xfe, 0xff, 0xff, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0xff + }; + + if (!name) + return; + + while (*name) { + if (!(legal[*name / 8] & (1 << (*name % 8)))) + *name = '_'; + name++; + } +} + +xkb_mod_index_t +XkbModNameToIndex(const struct xkb_mod_set *mods, xkb_atom_t name, + enum mod_type type) +{ + xkb_mod_index_t i; + const struct xkb_mod *mod; + + xkb_mods_enumerate(i, mod, mods) + if ((mod->type & type) && name == mod->name) + return i; + + return XKB_MOD_INVALID; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c new file mode 100644 index 0000000..a9fc9b4 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.c @@ -0,0 +1,485 @@ +/** + * Copyright © 2012 Intel Corporation + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Daniel Stone + */ + +/************************************************************ + * Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * ********************************************************/ + +#include "keymap.h" +#include "text.h" + +XKB_EXPORT struct xkb_keymap * +xkb_keymap_ref(struct xkb_keymap *keymap) +{ + keymap->refcnt++; + return keymap; +} + +XKB_EXPORT void +xkb_keymap_unref(struct xkb_keymap *keymap) +{ + if (!keymap || --keymap->refcnt > 0) + return; + + if (keymap->keys) { + struct xkb_key *key; + xkb_keys_foreach(key, keymap) { + if (key->groups) { + for (unsigned i = 0; i < key->num_groups; i++) { + if (key->groups[i].levels) { + for (unsigned j = 0; j < XkbKeyNumLevels(key, i); j++) + if (key->groups[i].levels[j].num_syms > 1) + free(key->groups[i].levels[j].u.syms); + free(key->groups[i].levels); + } + } + free(key->groups); + } + } + free(keymap->keys); + } + if (keymap->types) { + for (unsigned i = 0; i < keymap->num_types; i++) { + free(keymap->types[i].entries); + free(keymap->types[i].level_names); + } + free(keymap->types); + } + free(keymap->sym_interprets); + free(keymap->key_aliases); + free(keymap->group_names); + free(keymap->keycodes_section_name); + free(keymap->symbols_section_name); + free(keymap->types_section_name); + free(keymap->compat_section_name); + xkb_context_unref(keymap->ctx); + free(keymap); +} + +static const struct xkb_keymap_format_ops * +get_keymap_format_ops(enum xkb_keymap_format format) +{ + static const struct xkb_keymap_format_ops *keymap_format_ops[] = { + [XKB_KEYMAP_FORMAT_TEXT_V1] = &text_v1_keymap_format_ops, + }; + + if ((int) format < 0 || (int) format >= (int) ARRAY_SIZE(keymap_format_ops)) + return NULL; + + return keymap_format_ops[(int) format]; +} + +XKB_EXPORT struct xkb_keymap * +xkb_keymap_new_from_names(struct xkb_context *ctx, + const struct xkb_rule_names *rmlvo_in, + enum xkb_keymap_compile_flags flags) +{ + struct xkb_keymap *keymap; + struct xkb_rule_names rmlvo; + const enum xkb_keymap_format format = XKB_KEYMAP_FORMAT_TEXT_V1; + const struct xkb_keymap_format_ops *ops; + + ops = get_keymap_format_ops(format); + if (!ops || !ops->keymap_new_from_names) { + log_err_func(ctx, "unsupported keymap format: %d\n", format); + return NULL; + } + + if (flags & ~(XKB_KEYMAP_COMPILE_NO_FLAGS)) { + log_err_func(ctx, "unrecognized flags: %#x\n", flags); + return NULL; + } + + keymap = xkb_keymap_new(ctx, format, flags); + if (!keymap) + return NULL; + + if (rmlvo_in) + rmlvo = *rmlvo_in; + else + memset(&rmlvo, 0, sizeof(rmlvo)); + xkb_context_sanitize_rule_names(ctx, &rmlvo); + + if (!ops->keymap_new_from_names(keymap, &rmlvo)) { + xkb_keymap_unref(keymap); + return NULL; + } + + return keymap; +} + +XKB_EXPORT struct xkb_keymap * +xkb_keymap_new_from_string(struct xkb_context *ctx, + const char *string, + enum xkb_keymap_format format, + enum xkb_keymap_compile_flags flags) +{ + return xkb_keymap_new_from_buffer(ctx, string, strlen(string), + format, flags); +} + +XKB_EXPORT struct xkb_keymap * +xkb_keymap_new_from_buffer(struct xkb_context *ctx, + const char *buffer, size_t length, + enum xkb_keymap_format format, + enum xkb_keymap_compile_flags flags) +{ + struct xkb_keymap *keymap; + const struct xkb_keymap_format_ops *ops; + + ops = get_keymap_format_ops(format); + if (!ops || !ops->keymap_new_from_string) { + log_err_func(ctx, "unsupported keymap format: %d\n", format); + return NULL; + } + + if (flags & ~(XKB_KEYMAP_COMPILE_NO_FLAGS)) { + log_err_func(ctx, "unrecognized flags: %#x\n", flags); + return NULL; + } + + if (!buffer) { + log_err_func1(ctx, "no buffer specified\n"); + return NULL; + } + + keymap = xkb_keymap_new(ctx, format, flags); + if (!keymap) + return NULL; + + if (!ops->keymap_new_from_string(keymap, buffer, length)) { + xkb_keymap_unref(keymap); + return NULL; + } + + return keymap; +} + +XKB_EXPORT struct xkb_keymap * +xkb_keymap_new_from_file(struct xkb_context *ctx, + FILE *file, + enum xkb_keymap_format format, + enum xkb_keymap_compile_flags flags) +{ + struct xkb_keymap *keymap; + const struct xkb_keymap_format_ops *ops; + + ops = get_keymap_format_ops(format); + if (!ops || !ops->keymap_new_from_file) { + log_err_func(ctx, "unsupported keymap format: %d\n", format); + return NULL; + } + + if (flags & ~(XKB_KEYMAP_COMPILE_NO_FLAGS)) { + log_err_func(ctx, "unrecognized flags: %#x\n", flags); + return NULL; + } + + if (!file) { + log_err_func1(ctx, "no file specified\n"); + return NULL; + } + + keymap = xkb_keymap_new(ctx, format, flags); + if (!keymap) + return NULL; + + if (!ops->keymap_new_from_file(keymap, file)) { + xkb_keymap_unref(keymap); + return NULL; + } + + return keymap; +} + +XKB_EXPORT char * +xkb_keymap_get_as_string(struct xkb_keymap *keymap, + enum xkb_keymap_format format) +{ + const struct xkb_keymap_format_ops *ops; + + if (format == XKB_KEYMAP_USE_ORIGINAL_FORMAT) + format = keymap->format; + + ops = get_keymap_format_ops(format); + if (!ops || !ops->keymap_get_as_string) { + log_err_func(keymap->ctx, "unsupported keymap format: %d\n", format); + return NULL; + } + + return ops->keymap_get_as_string(keymap); +} + +/** + * Returns the total number of modifiers active in the keymap. + */ +XKB_EXPORT xkb_mod_index_t +xkb_keymap_num_mods(struct xkb_keymap *keymap) +{ + return keymap->mods.num_mods; +} + +/** + * Return the name for a given modifier. + */ +XKB_EXPORT const char * +xkb_keymap_mod_get_name(struct xkb_keymap *keymap, xkb_mod_index_t idx) +{ + if (idx >= keymap->mods.num_mods) + return NULL; + + return xkb_atom_text(keymap->ctx, keymap->mods.mods[idx].name); +} + +/** + * Returns the index for a named modifier. + */ +XKB_EXPORT xkb_mod_index_t +xkb_keymap_mod_get_index(struct xkb_keymap *keymap, const char *name) +{ + xkb_atom_t atom; + + atom = xkb_atom_lookup(keymap->ctx, name); + if (atom == XKB_ATOM_NONE) + return XKB_MOD_INVALID; + + return XkbModNameToIndex(&keymap->mods, atom, MOD_BOTH); +} + +/** + * Return the total number of active groups in the keymap. + */ +XKB_EXPORT xkb_layout_index_t +xkb_keymap_num_layouts(struct xkb_keymap *keymap) +{ + return keymap->num_groups; +} + +/** + * Returns the name for a given group. + */ +XKB_EXPORT const char * +xkb_keymap_layout_get_name(struct xkb_keymap *keymap, xkb_layout_index_t idx) +{ + if (idx >= keymap->num_group_names) + return NULL; + + return xkb_atom_text(keymap->ctx, keymap->group_names[idx]); +} + +/** + * Returns the index for a named layout. + */ +XKB_EXPORT xkb_layout_index_t +xkb_keymap_layout_get_index(struct xkb_keymap *keymap, const char *name) +{ + xkb_atom_t atom = xkb_atom_lookup(keymap->ctx, name); + xkb_layout_index_t i; + + if (atom == XKB_ATOM_NONE) + return XKB_LAYOUT_INVALID; + + for (i = 0; i < keymap->num_group_names; i++) + if (keymap->group_names[i] == atom) + return i; + + return XKB_LAYOUT_INVALID; +} + +/** + * Returns the number of layouts active for a particular key. + */ +XKB_EXPORT xkb_layout_index_t +xkb_keymap_num_layouts_for_key(struct xkb_keymap *keymap, xkb_keycode_t kc) +{ + const struct xkb_key *key = XkbKey(keymap, kc); + + if (!key) + return 0; + + return key->num_groups; +} + +/** + * Returns the number of levels active for a particular key and layout. + */ +XKB_EXPORT xkb_level_index_t +xkb_keymap_num_levels_for_key(struct xkb_keymap *keymap, xkb_keycode_t kc, + xkb_layout_index_t layout) +{ + const struct xkb_key *key = XkbKey(keymap, kc); + + if (!key) + return 0; + + layout = XkbWrapGroupIntoRange(layout, key->num_groups, + key->out_of_range_group_action, + key->out_of_range_group_number); + if (layout == XKB_LAYOUT_INVALID) + return 0; + + return XkbKeyNumLevels(key, layout); +} + +/** + * Return the total number of LEDs in the keymap. + */ +XKB_EXPORT xkb_led_index_t +xkb_keymap_num_leds(struct xkb_keymap *keymap) +{ + return keymap->num_leds; +} + +/** + * Returns the name for a given LED. + */ +XKB_EXPORT const char * +xkb_keymap_led_get_name(struct xkb_keymap *keymap, xkb_led_index_t idx) +{ + if (idx >= keymap->num_leds) + return NULL; + + return xkb_atom_text(keymap->ctx, keymap->leds[idx].name); +} + +/** + * Returns the index for a named LED. + */ +XKB_EXPORT xkb_led_index_t +xkb_keymap_led_get_index(struct xkb_keymap *keymap, const char *name) +{ + xkb_atom_t atom = xkb_atom_lookup(keymap->ctx, name); + xkb_led_index_t i; + const struct xkb_led *led; + + if (atom == XKB_ATOM_NONE) + return XKB_LED_INVALID; + + xkb_leds_enumerate(i, led, keymap) + if (led->name == atom) + return i; + + return XKB_LED_INVALID; +} + +/** + * As below, but takes an explicit layout/level rather than state. + */ +XKB_EXPORT int +xkb_keymap_key_get_syms_by_level(struct xkb_keymap *keymap, + xkb_keycode_t kc, + xkb_layout_index_t layout, + xkb_level_index_t level, + const xkb_keysym_t **syms_out) +{ + const struct xkb_key *key = XkbKey(keymap, kc); + int num_syms; + + if (!key) + goto err; + + layout = XkbWrapGroupIntoRange(layout, key->num_groups, + key->out_of_range_group_action, + key->out_of_range_group_number); + if (layout == XKB_LAYOUT_INVALID) + goto err; + + if (level >= XkbKeyNumLevels(key, layout)) + goto err; + + num_syms = key->groups[layout].levels[level].num_syms; + if (num_syms == 0) + goto err; + + if (num_syms == 1) + *syms_out = &key->groups[layout].levels[level].u.sym; + else + *syms_out = key->groups[layout].levels[level].u.syms; + + return num_syms; + +err: + *syms_out = NULL; + return 0; +} + +XKB_EXPORT xkb_keycode_t +xkb_keymap_min_keycode(struct xkb_keymap *keymap) +{ + return keymap->min_key_code; +} + +XKB_EXPORT xkb_keycode_t +xkb_keymap_max_keycode(struct xkb_keymap *keymap) +{ + return keymap->max_key_code; +} + +XKB_EXPORT void +xkb_keymap_key_for_each(struct xkb_keymap *keymap, xkb_keymap_key_iter_t iter, + void *data) +{ + struct xkb_key *key; + + xkb_keys_foreach(key, keymap) + iter(keymap, key->keycode, data); +} + +/** + * Simple boolean specifying whether or not the key should repeat. + */ +XKB_EXPORT int +xkb_keymap_key_repeats(struct xkb_keymap *keymap, xkb_keycode_t kc) +{ + const struct xkb_key *key = XkbKey(keymap, kc); + + if (!key) + return 0; + + return key->repeats; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.h new file mode 100644 index 0000000..91e95c2 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/keymap.h @@ -0,0 +1,478 @@ +/* + * Copyright 1985, 1987, 1990, 1998 The Open Group + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the names of the authors or their + * institutions shall not be used in advertising or otherwise to promote the + * sale, use or other dealings in this Software without prior written + * authorization from the authors. + */ + +/************************************************************ + * Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +/* + * Copyright © 2009 Dan Nicholson + * Copyright © 2012 Intel Corporation + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Daniel Stone + * Dan Nicholson + */ + +#ifndef KEYMAP_H +#define KEYMAP_H + + /* Don't use compat names in internal code. */ +#define _XKBCOMMON_COMPAT_H +#include "xkbcommon/xkbcommon.h" + +#include "utils.h" +#include "context.h" + +/* This limit is artificially enforced, we do not depend on it any where. + * The reason it's still here is that the rules file format does not + * support multiple groups very well, and the rules shipped with + * xkeyboard-config (see rules/evdev) depend on this limit extensively. + * So just lifting this limit would cause problems for people who will use + * more than 4 layouts. + * TODO: Fix the group index syntax in the rules format, preferably in a + * backwards compatible way. + * See e.g. https://bugs.freedesktop.org/show_bug.cgi?id=14372 + * Note: A limit on the number of groups we *do* depend on is imposed by + * the size of the xkb_layout_mask_t type (32). This is more than enough + * though. + */ +#define XKB_MAX_GROUPS 4 + +/* Don't allow more modifiers than we can hold in xkb_mod_mask_t. */ +#define XKB_MAX_MODS ((xkb_mod_index_t) (sizeof(xkb_mod_mask_t) * 8)) + +/* Don't allow more leds than we can hold in xkb_led_mask_t. */ +#define XKB_MAX_LEDS ((xkb_led_index_t) (sizeof(xkb_led_mask_t) * 8)) + +/* These should all go away. */ +enum mod_type { + MOD_REAL = (1 << 0), + MOD_VIRT = (1 << 1), + MOD_BOTH = (MOD_REAL | MOD_VIRT), +}; +#define MOD_REAL_MASK_ALL ((xkb_mod_mask_t) 0x000000ff) + +enum xkb_action_type { + ACTION_TYPE_NONE = 0, + ACTION_TYPE_MOD_SET, + ACTION_TYPE_MOD_LATCH, + ACTION_TYPE_MOD_LOCK, + ACTION_TYPE_GROUP_SET, + ACTION_TYPE_GROUP_LATCH, + ACTION_TYPE_GROUP_LOCK, + ACTION_TYPE_PTR_MOVE, + ACTION_TYPE_PTR_BUTTON, + ACTION_TYPE_PTR_LOCK, + ACTION_TYPE_PTR_DEFAULT, + ACTION_TYPE_TERMINATE, + ACTION_TYPE_SWITCH_VT, + ACTION_TYPE_CTRL_SET, + ACTION_TYPE_CTRL_LOCK, + ACTION_TYPE_PRIVATE, + _ACTION_TYPE_NUM_ENTRIES +}; + +enum xkb_action_flags { + ACTION_LOCK_CLEAR = (1 << 0), + ACTION_LATCH_TO_LOCK = (1 << 1), + ACTION_LOCK_NO_LOCK = (1 << 2), + ACTION_LOCK_NO_UNLOCK = (1 << 3), + ACTION_MODS_LOOKUP_MODMAP = (1 << 4), + ACTION_ABSOLUTE_SWITCH = (1 << 5), + ACTION_ABSOLUTE_X = (1 << 6), + ACTION_ABSOLUTE_Y = (1 << 7), + ACTION_ACCEL = (1 << 8), + ACTION_SAME_SCREEN = (1 << 9), +}; + +enum xkb_action_controls { + CONTROL_REPEAT = (1 << 0), + CONTROL_SLOW = (1 << 1), + CONTROL_DEBOUNCE = (1 << 2), + CONTROL_STICKY = (1 << 3), + CONTROL_MOUSEKEYS = (1 << 4), + CONTROL_MOUSEKEYS_ACCEL = (1 << 5), + CONTROL_AX = (1 << 6), + CONTROL_AX_TIMEOUT = (1 << 7), + CONTROL_AX_FEEDBACK = (1 << 8), + CONTROL_BELL = (1 << 9), + CONTROL_IGNORE_GROUP_LOCK = (1 << 10), + CONTROL_ALL = \ + (CONTROL_REPEAT | CONTROL_SLOW | CONTROL_DEBOUNCE | CONTROL_STICKY | \ + CONTROL_MOUSEKEYS | CONTROL_MOUSEKEYS_ACCEL | CONTROL_AX | \ + CONTROL_AX_TIMEOUT | CONTROL_AX_FEEDBACK | CONTROL_BELL | \ + CONTROL_IGNORE_GROUP_LOCK) +}; + +enum xkb_match_operation { + MATCH_NONE, + MATCH_ANY_OR_NONE, + MATCH_ANY, + MATCH_ALL, + MATCH_EXACTLY, +}; + +struct xkb_mods { + xkb_mod_mask_t mods; /* original real+virtual mods in definition */ + xkb_mod_mask_t mask; /* computed effective mask */ +}; + +struct xkb_mod_action { + enum xkb_action_type type; + enum xkb_action_flags flags; + struct xkb_mods mods; +}; + +struct xkb_group_action { + enum xkb_action_type type; + enum xkb_action_flags flags; + int32_t group; +}; + +struct xkb_controls_action { + enum xkb_action_type type; + enum xkb_action_flags flags; + enum xkb_action_controls ctrls; +}; + +struct xkb_pointer_default_action { + enum xkb_action_type type; + enum xkb_action_flags flags; + int8_t value; +}; + +struct xkb_switch_screen_action { + enum xkb_action_type type; + enum xkb_action_flags flags; + int8_t screen; +}; + +struct xkb_pointer_action { + enum xkb_action_type type; + enum xkb_action_flags flags; + int16_t x; + int16_t y; +}; + +struct xkb_pointer_button_action { + enum xkb_action_type type; + enum xkb_action_flags flags; + uint8_t count; + uint8_t button; +}; + +struct xkb_private_action { + enum xkb_action_type type; + uint8_t data[7]; +}; + +union xkb_action { + enum xkb_action_type type; + struct xkb_mod_action mods; + struct xkb_group_action group; + struct xkb_controls_action ctrls; + struct xkb_pointer_default_action dflt; + struct xkb_switch_screen_action screen; + struct xkb_pointer_action ptr; + struct xkb_pointer_button_action btn; + struct xkb_private_action priv; +}; + +struct xkb_key_type_entry { + xkb_level_index_t level; + struct xkb_mods mods; + struct xkb_mods preserve; +}; + +struct xkb_key_type { + xkb_atom_t name; + struct xkb_mods mods; + xkb_level_index_t num_levels; + xkb_atom_t *level_names; + unsigned int num_entries; + struct xkb_key_type_entry *entries; +}; + +struct xkb_sym_interpret { + xkb_keysym_t sym; + enum xkb_match_operation match; + xkb_mod_mask_t mods; + xkb_mod_index_t virtual_mod; + union xkb_action action; + bool level_one_only; + bool repeat; +}; + +struct xkb_led { + xkb_atom_t name; + enum xkb_state_component which_groups; + xkb_layout_mask_t groups; + enum xkb_state_component which_mods; + struct xkb_mods mods; + enum xkb_action_controls ctrls; +}; + +struct xkb_key_alias { + xkb_atom_t real; + xkb_atom_t alias; +}; + +struct xkb_controls { + unsigned char groups_wrap; + struct xkb_mods internal; + struct xkb_mods ignore_lock; + unsigned short repeat_delay; + unsigned short repeat_interval; + unsigned short slow_keys_delay; + unsigned short debounce_delay; + unsigned short ax_options; + unsigned short ax_timeout; + unsigned short axt_opts_mask; + unsigned short axt_opts_values; + unsigned int axt_ctrls_mask; + unsigned int axt_ctrls_values; +}; + +/* Such an awkward name. Oh well. */ +enum xkb_range_exceed_type { + RANGE_WRAP = 0, + RANGE_SATURATE, + RANGE_REDIRECT, +}; + +enum xkb_explicit_components { + EXPLICIT_INTERP = (1 << 0), + EXPLICIT_VMODMAP = (1 << 1), + EXPLICIT_REPEAT = (1 << 2), +}; + +struct xkb_level { + union xkb_action action; + unsigned int num_syms; + union { + xkb_keysym_t sym; /* num_syms == 1 */ + xkb_keysym_t *syms; /* num_syms > 1 */ + } u; +}; + +struct xkb_group { + bool explicit_type; + /* Points to a type in keymap->types. */ + const struct xkb_key_type *type; + /* Use XkbKeyGroupWidth for the number of levels. */ + struct xkb_level *levels; +}; + +struct xkb_key { + xkb_keycode_t keycode; + xkb_atom_t name; + + enum xkb_explicit_components explicit; + + xkb_mod_mask_t modmap; + xkb_mod_mask_t vmodmap; + + bool repeats; + + enum xkb_range_exceed_type out_of_range_group_action; + xkb_layout_index_t out_of_range_group_number; + + xkb_layout_index_t num_groups; + struct xkb_group *groups; +}; + +struct xkb_mod { + xkb_atom_t name; + enum mod_type type; + xkb_mod_mask_t mapping; /* vmod -> real mod mapping */ +}; + +struct xkb_mod_set { + struct xkb_mod mods[XKB_MAX_MODS]; + unsigned int num_mods; +}; + +/* Common keyboard description structure */ +struct xkb_keymap { + struct xkb_context *ctx; + + int refcnt; + enum xkb_keymap_compile_flags flags; + enum xkb_keymap_format format; + + enum xkb_action_controls enabled_ctrls; + + xkb_keycode_t min_key_code; + xkb_keycode_t max_key_code; + struct xkb_key *keys; + + /* aliases in no particular order */ + unsigned int num_key_aliases; + struct xkb_key_alias *key_aliases; + + struct xkb_key_type *types; + unsigned int num_types; + + unsigned int num_sym_interprets; + struct xkb_sym_interpret *sym_interprets; + + struct xkb_mod_set mods; + + /* Number of groups in the key with the most groups. */ + xkb_layout_index_t num_groups; + /* Not all groups must have names. */ + xkb_layout_index_t num_group_names; + xkb_atom_t *group_names; + + struct xkb_led leds[XKB_MAX_LEDS]; + unsigned int num_leds; + + char *keycodes_section_name; + char *symbols_section_name; + char *types_section_name; + char *compat_section_name; +}; + +#define xkb_keys_foreach(iter, keymap) \ + for ((iter) = (keymap)->keys + (keymap)->min_key_code; \ + (iter) <= (keymap)->keys + (keymap)->max_key_code; \ + (iter)++) + +#define xkb_mods_foreach(iter, mods_) \ + for ((iter) = (mods_)->mods; \ + (iter) < (mods_)->mods + (mods_)->num_mods; \ + (iter)++) + +#define xkb_mods_enumerate(idx, iter, mods_) \ + for ((idx) = 0, (iter) = (mods_)->mods; \ + (idx) < (mods_)->num_mods; \ + (idx)++, (iter)++) + +#define xkb_leds_foreach(iter, keymap) \ + for ((iter) = (keymap)->leds; \ + (iter) < (keymap)->leds + (keymap)->num_leds; \ + (iter)++) + +#define xkb_leds_enumerate(idx, iter, keymap) \ + for ((idx) = 0, (iter) = (keymap)->leds; \ + (idx) < (keymap)->num_leds; \ + (idx)++, (iter)++) + +static inline const struct xkb_key * +XkbKey(struct xkb_keymap *keymap, xkb_keycode_t kc) +{ + if (kc < keymap->min_key_code || kc > keymap->max_key_code) + return NULL; + return &keymap->keys[kc]; +} + +static inline xkb_level_index_t +XkbKeyNumLevels(const struct xkb_key *key, xkb_layout_index_t layout) +{ + return key->groups[layout].type->num_levels; +} + +struct xkb_keymap * +xkb_keymap_new(struct xkb_context *ctx, + enum xkb_keymap_format format, + enum xkb_keymap_compile_flags flags); + +struct xkb_key * +XkbKeyByName(struct xkb_keymap *keymap, xkb_atom_t name, bool use_aliases); + +xkb_atom_t +XkbResolveKeyAlias(const struct xkb_keymap *keymap, xkb_atom_t name); + +void +XkbEscapeMapName(char *name); + +xkb_mod_index_t +XkbModNameToIndex(const struct xkb_mod_set *mods, xkb_atom_t name, + enum mod_type type); + +xkb_layout_index_t +XkbWrapGroupIntoRange(int32_t group, + xkb_layout_index_t num_groups, + enum xkb_range_exceed_type out_of_range_group_action, + xkb_layout_index_t out_of_range_group_number); + +xkb_mod_mask_t +mod_mask_get_effective(struct xkb_keymap *keymap, xkb_mod_mask_t mods); + +struct xkb_keymap_format_ops { + bool (*keymap_new_from_names)(struct xkb_keymap *keymap, + const struct xkb_rule_names *names); + bool (*keymap_new_from_string)(struct xkb_keymap *keymap, + const char *string, size_t length); + bool (*keymap_new_from_file)(struct xkb_keymap *keymap, FILE *file); + char *(*keymap_get_as_string)(struct xkb_keymap *keymap); +}; + +extern const struct xkb_keymap_format_ops text_v1_keymap_format_ops; + +#endif diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c new file mode 100644 index 0000000..ffe2cea --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym-utf.c @@ -0,0 +1,930 @@ +/* The table and comments below along with the function xkb_keysym_to_ucs4 + * are under the public domain and are derived as described below. + */ +/* This module converts keysym values into the corresponding ISO 10646 + * (UCS, Unicode) values. + * + * The array keysymtab[] contains pairs of X11 keysym values for graphical + * characters and the corresponding Unicode value. The function + * keysym2ucs() maps a keysym onto a Unicode value using a binary search, + * therefore keysymtab[] must remain SORTED by keysym value. + * + * The keysym -> UTF-8 conversion will hopefully one day be provided + * by Xlib via XmbLookupString() and should ideally not have to be + * done in X applications. But we are not there yet. + * + * We allow to represent any UCS character in the range U-00000000 to + * U-00FFFFFF by a keysym value in the range 0x01000000 to 0x01ffffff. + * This admittedly does not cover the entire 31-bit space of UCS, but + * it does cover all of the characters up to U-10FFFF, which can be + * represented by UTF-16, and more, and it is very unlikely that higher + * UCS codes will ever be assigned by ISO. So to get Unicode character + * U+ABCD you can directly use keysym 0x0100abcd. + * + * NOTE: The comments in the table below contain the actual character + * encoded in UTF-8, so for viewing and editing best use an editor in + * UTF-8 mode. + * + * Author: Markus G. Kuhn , + * University of Cambridge, April 2001 + * + * Special thanks to Richard Verhoeven for preparing + * an initial draft of the mapping table. + * + * This software is in the public domain. Share and enjoy! + * + */ + +#include "xkbcommon/xkbcommon.h" +#include "utils.h" +#include "utf8.h" + +/* We don't use the uint32_t types here, to save some space. */ +struct codepair { + uint16_t keysym; + uint16_t ucs; +}; + +static const struct codepair keysymtab[] = { + { 0x01a1, 0x0104 }, /* Aogonek Ą LATIN CAPITAL LETTER A WITH OGONEK */ + { 0x01a2, 0x02d8 }, /* breve ˘ BREVE */ + { 0x01a3, 0x0141 }, /* Lstroke Ł LATIN CAPITAL LETTER L WITH STROKE */ + { 0x01a5, 0x013d }, /* Lcaron Ľ LATIN CAPITAL LETTER L WITH CARON */ + { 0x01a6, 0x015a }, /* Sacute Ś LATIN CAPITAL LETTER S WITH ACUTE */ + { 0x01a9, 0x0160 }, /* Scaron Š LATIN CAPITAL LETTER S WITH CARON */ + { 0x01aa, 0x015e }, /* Scedilla Ş LATIN CAPITAL LETTER S WITH CEDILLA */ + { 0x01ab, 0x0164 }, /* Tcaron Ť LATIN CAPITAL LETTER T WITH CARON */ + { 0x01ac, 0x0179 }, /* Zacute Ź LATIN CAPITAL LETTER Z WITH ACUTE */ + { 0x01ae, 0x017d }, /* Zcaron Ž LATIN CAPITAL LETTER Z WITH CARON */ + { 0x01af, 0x017b }, /* Zabovedot Ż LATIN CAPITAL LETTER Z WITH DOT ABOVE */ + { 0x01b1, 0x0105 }, /* aogonek ą LATIN SMALL LETTER A WITH OGONEK */ + { 0x01b2, 0x02db }, /* ogonek ˛ OGONEK */ + { 0x01b3, 0x0142 }, /* lstroke ł LATIN SMALL LETTER L WITH STROKE */ + { 0x01b5, 0x013e }, /* lcaron ľ LATIN SMALL LETTER L WITH CARON */ + { 0x01b6, 0x015b }, /* sacute ś LATIN SMALL LETTER S WITH ACUTE */ + { 0x01b7, 0x02c7 }, /* caron ˇ CARON */ + { 0x01b9, 0x0161 }, /* scaron š LATIN SMALL LETTER S WITH CARON */ + { 0x01ba, 0x015f }, /* scedilla ş LATIN SMALL LETTER S WITH CEDILLA */ + { 0x01bb, 0x0165 }, /* tcaron ť LATIN SMALL LETTER T WITH CARON */ + { 0x01bc, 0x017a }, /* zacute ź LATIN SMALL LETTER Z WITH ACUTE */ + { 0x01bd, 0x02dd }, /* doubleacute ˝ DOUBLE ACUTE ACCENT */ + { 0x01be, 0x017e }, /* zcaron ž LATIN SMALL LETTER Z WITH CARON */ + { 0x01bf, 0x017c }, /* zabovedot ż LATIN SMALL LETTER Z WITH DOT ABOVE */ + { 0x01c0, 0x0154 }, /* Racute Ŕ LATIN CAPITAL LETTER R WITH ACUTE */ + { 0x01c3, 0x0102 }, /* Abreve Ă LATIN CAPITAL LETTER A WITH BREVE */ + { 0x01c5, 0x0139 }, /* Lacute Ĺ LATIN CAPITAL LETTER L WITH ACUTE */ + { 0x01c6, 0x0106 }, /* Cacute Ć LATIN CAPITAL LETTER C WITH ACUTE */ + { 0x01c8, 0x010c }, /* Ccaron Č LATIN CAPITAL LETTER C WITH CARON */ + { 0x01ca, 0x0118 }, /* Eogonek Ę LATIN CAPITAL LETTER E WITH OGONEK */ + { 0x01cc, 0x011a }, /* Ecaron Ě LATIN CAPITAL LETTER E WITH CARON */ + { 0x01cf, 0x010e }, /* Dcaron Ď LATIN CAPITAL LETTER D WITH CARON */ + { 0x01d0, 0x0110 }, /* Dstroke Đ LATIN CAPITAL LETTER D WITH STROKE */ + { 0x01d1, 0x0143 }, /* Nacute Ń LATIN CAPITAL LETTER N WITH ACUTE */ + { 0x01d2, 0x0147 }, /* Ncaron Ň LATIN CAPITAL LETTER N WITH CARON */ + { 0x01d5, 0x0150 }, /* Odoubleacute Ő LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ + { 0x01d8, 0x0158 }, /* Rcaron Ř LATIN CAPITAL LETTER R WITH CARON */ + { 0x01d9, 0x016e }, /* Uring Ů LATIN CAPITAL LETTER U WITH RING ABOVE */ + { 0x01db, 0x0170 }, /* Udoubleacute Ű LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ + { 0x01de, 0x0162 }, /* Tcedilla Ţ LATIN CAPITAL LETTER T WITH CEDILLA */ + { 0x01e0, 0x0155 }, /* racute ŕ LATIN SMALL LETTER R WITH ACUTE */ + { 0x01e3, 0x0103 }, /* abreve ă LATIN SMALL LETTER A WITH BREVE */ + { 0x01e5, 0x013a }, /* lacute ĺ LATIN SMALL LETTER L WITH ACUTE */ + { 0x01e6, 0x0107 }, /* cacute ć LATIN SMALL LETTER C WITH ACUTE */ + { 0x01e8, 0x010d }, /* ccaron č LATIN SMALL LETTER C WITH CARON */ + { 0x01ea, 0x0119 }, /* eogonek ę LATIN SMALL LETTER E WITH OGONEK */ + { 0x01ec, 0x011b }, /* ecaron ě LATIN SMALL LETTER E WITH CARON */ + { 0x01ef, 0x010f }, /* dcaron ď LATIN SMALL LETTER D WITH CARON */ + { 0x01f0, 0x0111 }, /* dstroke đ LATIN SMALL LETTER D WITH STROKE */ + { 0x01f1, 0x0144 }, /* nacute ń LATIN SMALL LETTER N WITH ACUTE */ + { 0x01f2, 0x0148 }, /* ncaron ň LATIN SMALL LETTER N WITH CARON */ + { 0x01f5, 0x0151 }, /* odoubleacute ő LATIN SMALL LETTER O WITH DOUBLE ACUTE */ + { 0x01f8, 0x0159 }, /* rcaron ř LATIN SMALL LETTER R WITH CARON */ + { 0x01f9, 0x016f }, /* uring ů LATIN SMALL LETTER U WITH RING ABOVE */ + { 0x01fb, 0x0171 }, /* udoubleacute ű LATIN SMALL LETTER U WITH DOUBLE ACUTE */ + { 0x01fe, 0x0163 }, /* tcedilla ţ LATIN SMALL LETTER T WITH CEDILLA */ + { 0x01ff, 0x02d9 }, /* abovedot ˙ DOT ABOVE */ + { 0x02a1, 0x0126 }, /* Hstroke Ħ LATIN CAPITAL LETTER H WITH STROKE */ + { 0x02a6, 0x0124 }, /* Hcircumflex Ĥ LATIN CAPITAL LETTER H WITH CIRCUMFLEX */ + { 0x02a9, 0x0130 }, /* Iabovedot İ LATIN CAPITAL LETTER I WITH DOT ABOVE */ + { 0x02ab, 0x011e }, /* Gbreve Ğ LATIN CAPITAL LETTER G WITH BREVE */ + { 0x02ac, 0x0134 }, /* Jcircumflex Ĵ LATIN CAPITAL LETTER J WITH CIRCUMFLEX */ + { 0x02b1, 0x0127 }, /* hstroke ħ LATIN SMALL LETTER H WITH STROKE */ + { 0x02b6, 0x0125 }, /* hcircumflex ĥ LATIN SMALL LETTER H WITH CIRCUMFLEX */ + { 0x02b9, 0x0131 }, /* idotless ı LATIN SMALL LETTER DOTLESS I */ + { 0x02bb, 0x011f }, /* gbreve ğ LATIN SMALL LETTER G WITH BREVE */ + { 0x02bc, 0x0135 }, /* jcircumflex ĵ LATIN SMALL LETTER J WITH CIRCUMFLEX */ + { 0x02c5, 0x010a }, /* Cabovedot Ċ LATIN CAPITAL LETTER C WITH DOT ABOVE */ + { 0x02c6, 0x0108 }, /* Ccircumflex Ĉ LATIN CAPITAL LETTER C WITH CIRCUMFLEX */ + { 0x02d5, 0x0120 }, /* Gabovedot Ġ LATIN CAPITAL LETTER G WITH DOT ABOVE */ + { 0x02d8, 0x011c }, /* Gcircumflex Ĝ LATIN CAPITAL LETTER G WITH CIRCUMFLEX */ + { 0x02dd, 0x016c }, /* Ubreve Ŭ LATIN CAPITAL LETTER U WITH BREVE */ + { 0x02de, 0x015c }, /* Scircumflex Ŝ LATIN CAPITAL LETTER S WITH CIRCUMFLEX */ + { 0x02e5, 0x010b }, /* cabovedot ċ LATIN SMALL LETTER C WITH DOT ABOVE */ + { 0x02e6, 0x0109 }, /* ccircumflex ĉ LATIN SMALL LETTER C WITH CIRCUMFLEX */ + { 0x02f5, 0x0121 }, /* gabovedot ġ LATIN SMALL LETTER G WITH DOT ABOVE */ + { 0x02f8, 0x011d }, /* gcircumflex ĝ LATIN SMALL LETTER G WITH CIRCUMFLEX */ + { 0x02fd, 0x016d }, /* ubreve ŭ LATIN SMALL LETTER U WITH BREVE */ + { 0x02fe, 0x015d }, /* scircumflex ŝ LATIN SMALL LETTER S WITH CIRCUMFLEX */ + { 0x03a2, 0x0138 }, /* kra ĸ LATIN SMALL LETTER KRA */ + { 0x03a3, 0x0156 }, /* Rcedilla Ŗ LATIN CAPITAL LETTER R WITH CEDILLA */ + { 0x03a5, 0x0128 }, /* Itilde Ĩ LATIN CAPITAL LETTER I WITH TILDE */ + { 0x03a6, 0x013b }, /* Lcedilla Ļ LATIN CAPITAL LETTER L WITH CEDILLA */ + { 0x03aa, 0x0112 }, /* Emacron Ē LATIN CAPITAL LETTER E WITH MACRON */ + { 0x03ab, 0x0122 }, /* Gcedilla Ģ LATIN CAPITAL LETTER G WITH CEDILLA */ + { 0x03ac, 0x0166 }, /* Tslash Ŧ LATIN CAPITAL LETTER T WITH STROKE */ + { 0x03b3, 0x0157 }, /* rcedilla ŗ LATIN SMALL LETTER R WITH CEDILLA */ + { 0x03b5, 0x0129 }, /* itilde ĩ LATIN SMALL LETTER I WITH TILDE */ + { 0x03b6, 0x013c }, /* lcedilla ļ LATIN SMALL LETTER L WITH CEDILLA */ + { 0x03ba, 0x0113 }, /* emacron ē LATIN SMALL LETTER E WITH MACRON */ + { 0x03bb, 0x0123 }, /* gcedilla ģ LATIN SMALL LETTER G WITH CEDILLA */ + { 0x03bc, 0x0167 }, /* tslash ŧ LATIN SMALL LETTER T WITH STROKE */ + { 0x03bd, 0x014a }, /* ENG Ŋ LATIN CAPITAL LETTER ENG */ + { 0x03bf, 0x014b }, /* eng ŋ LATIN SMALL LETTER ENG */ + { 0x03c0, 0x0100 }, /* Amacron Ā LATIN CAPITAL LETTER A WITH MACRON */ + { 0x03c7, 0x012e }, /* Iogonek Į LATIN CAPITAL LETTER I WITH OGONEK */ + { 0x03cc, 0x0116 }, /* Eabovedot Ė LATIN CAPITAL LETTER E WITH DOT ABOVE */ + { 0x03cf, 0x012a }, /* Imacron Ī LATIN CAPITAL LETTER I WITH MACRON */ + { 0x03d1, 0x0145 }, /* Ncedilla Ņ LATIN CAPITAL LETTER N WITH CEDILLA */ + { 0x03d2, 0x014c }, /* Omacron Ō LATIN CAPITAL LETTER O WITH MACRON */ + { 0x03d3, 0x0136 }, /* Kcedilla Ķ LATIN CAPITAL LETTER K WITH CEDILLA */ + { 0x03d9, 0x0172 }, /* Uogonek Ų LATIN CAPITAL LETTER U WITH OGONEK */ + { 0x03dd, 0x0168 }, /* Utilde Ũ LATIN CAPITAL LETTER U WITH TILDE */ + { 0x03de, 0x016a }, /* Umacron Ū LATIN CAPITAL LETTER U WITH MACRON */ + { 0x03e0, 0x0101 }, /* amacron ā LATIN SMALL LETTER A WITH MACRON */ + { 0x03e7, 0x012f }, /* iogonek į LATIN SMALL LETTER I WITH OGONEK */ + { 0x03ec, 0x0117 }, /* eabovedot ė LATIN SMALL LETTER E WITH DOT ABOVE */ + { 0x03ef, 0x012b }, /* imacron ī LATIN SMALL LETTER I WITH MACRON */ + { 0x03f1, 0x0146 }, /* ncedilla ņ LATIN SMALL LETTER N WITH CEDILLA */ + { 0x03f2, 0x014d }, /* omacron ō LATIN SMALL LETTER O WITH MACRON */ + { 0x03f3, 0x0137 }, /* kcedilla ķ LATIN SMALL LETTER K WITH CEDILLA */ + { 0x03f9, 0x0173 }, /* uogonek ų LATIN SMALL LETTER U WITH OGONEK */ + { 0x03fd, 0x0169 }, /* utilde ũ LATIN SMALL LETTER U WITH TILDE */ + { 0x03fe, 0x016b }, /* umacron ū LATIN SMALL LETTER U WITH MACRON */ + { 0x047e, 0x203e }, /* overline ‾ OVERLINE */ + { 0x04a1, 0x3002 }, /* kana_fullstop 。 IDEOGRAPHIC FULL STOP */ + { 0x04a2, 0x300c }, /* kana_openingbracket 「 LEFT CORNER BRACKET */ + { 0x04a3, 0x300d }, /* kana_closingbracket 」 RIGHT CORNER BRACKET */ + { 0x04a4, 0x3001 }, /* kana_comma 、 IDEOGRAPHIC COMMA */ + { 0x04a5, 0x30fb }, /* kana_conjunctive ・ KATAKANA MIDDLE DOT */ + { 0x04a6, 0x30f2 }, /* kana_WO ヲ KATAKANA LETTER WO */ + { 0x04a7, 0x30a1 }, /* kana_a ァ KATAKANA LETTER SMALL A */ + { 0x04a8, 0x30a3 }, /* kana_i ィ KATAKANA LETTER SMALL I */ + { 0x04a9, 0x30a5 }, /* kana_u ゥ KATAKANA LETTER SMALL U */ + { 0x04aa, 0x30a7 }, /* kana_e ェ KATAKANA LETTER SMALL E */ + { 0x04ab, 0x30a9 }, /* kana_o ォ KATAKANA LETTER SMALL O */ + { 0x04ac, 0x30e3 }, /* kana_ya ャ KATAKANA LETTER SMALL YA */ + { 0x04ad, 0x30e5 }, /* kana_yu ュ KATAKANA LETTER SMALL YU */ + { 0x04ae, 0x30e7 }, /* kana_yo ョ KATAKANA LETTER SMALL YO */ + { 0x04af, 0x30c3 }, /* kana_tsu ッ KATAKANA LETTER SMALL TU */ + { 0x04b0, 0x30fc }, /* prolongedsound ー KATAKANA-HIRAGANA PROLONGED SOUND MARK */ + { 0x04b1, 0x30a2 }, /* kana_A ア KATAKANA LETTER A */ + { 0x04b2, 0x30a4 }, /* kana_I イ KATAKANA LETTER I */ + { 0x04b3, 0x30a6 }, /* kana_U ウ KATAKANA LETTER U */ + { 0x04b4, 0x30a8 }, /* kana_E エ KATAKANA LETTER E */ + { 0x04b5, 0x30aa }, /* kana_O オ KATAKANA LETTER O */ + { 0x04b6, 0x30ab }, /* kana_KA カ KATAKANA LETTER KA */ + { 0x04b7, 0x30ad }, /* kana_KI キ KATAKANA LETTER KI */ + { 0x04b8, 0x30af }, /* kana_KU ク KATAKANA LETTER KU */ + { 0x04b9, 0x30b1 }, /* kana_KE ケ KATAKANA LETTER KE */ + { 0x04ba, 0x30b3 }, /* kana_KO コ KATAKANA LETTER KO */ + { 0x04bb, 0x30b5 }, /* kana_SA サ KATAKANA LETTER SA */ + { 0x04bc, 0x30b7 }, /* kana_SHI シ KATAKANA LETTER SI */ + { 0x04bd, 0x30b9 }, /* kana_SU ス KATAKANA LETTER SU */ + { 0x04be, 0x30bb }, /* kana_SE セ KATAKANA LETTER SE */ + { 0x04bf, 0x30bd }, /* kana_SO ソ KATAKANA LETTER SO */ + { 0x04c0, 0x30bf }, /* kana_TA タ KATAKANA LETTER TA */ + { 0x04c1, 0x30c1 }, /* kana_CHI チ KATAKANA LETTER TI */ + { 0x04c2, 0x30c4 }, /* kana_TSU ツ KATAKANA LETTER TU */ + { 0x04c3, 0x30c6 }, /* kana_TE テ KATAKANA LETTER TE */ + { 0x04c4, 0x30c8 }, /* kana_TO ト KATAKANA LETTER TO */ + { 0x04c5, 0x30ca }, /* kana_NA ナ KATAKANA LETTER NA */ + { 0x04c6, 0x30cb }, /* kana_NI ニ KATAKANA LETTER NI */ + { 0x04c7, 0x30cc }, /* kana_NU ヌ KATAKANA LETTER NU */ + { 0x04c8, 0x30cd }, /* kana_NE ネ KATAKANA LETTER NE */ + { 0x04c9, 0x30ce }, /* kana_NO ノ KATAKANA LETTER NO */ + { 0x04ca, 0x30cf }, /* kana_HA ハ KATAKANA LETTER HA */ + { 0x04cb, 0x30d2 }, /* kana_HI ヒ KATAKANA LETTER HI */ + { 0x04cc, 0x30d5 }, /* kana_FU フ KATAKANA LETTER HU */ + { 0x04cd, 0x30d8 }, /* kana_HE ヘ KATAKANA LETTER HE */ + { 0x04ce, 0x30db }, /* kana_HO ホ KATAKANA LETTER HO */ + { 0x04cf, 0x30de }, /* kana_MA マ KATAKANA LETTER MA */ + { 0x04d0, 0x30df }, /* kana_MI ミ KATAKANA LETTER MI */ + { 0x04d1, 0x30e0 }, /* kana_MU ム KATAKANA LETTER MU */ + { 0x04d2, 0x30e1 }, /* kana_ME メ KATAKANA LETTER ME */ + { 0x04d3, 0x30e2 }, /* kana_MO モ KATAKANA LETTER MO */ + { 0x04d4, 0x30e4 }, /* kana_YA ヤ KATAKANA LETTER YA */ + { 0x04d5, 0x30e6 }, /* kana_YU ユ KATAKANA LETTER YU */ + { 0x04d6, 0x30e8 }, /* kana_YO ヨ KATAKANA LETTER YO */ + { 0x04d7, 0x30e9 }, /* kana_RA ラ KATAKANA LETTER RA */ + { 0x04d8, 0x30ea }, /* kana_RI リ KATAKANA LETTER RI */ + { 0x04d9, 0x30eb }, /* kana_RU ル KATAKANA LETTER RU */ + { 0x04da, 0x30ec }, /* kana_RE レ KATAKANA LETTER RE */ + { 0x04db, 0x30ed }, /* kana_RO ロ KATAKANA LETTER RO */ + { 0x04dc, 0x30ef }, /* kana_WA ワ KATAKANA LETTER WA */ + { 0x04dd, 0x30f3 }, /* kana_N ン KATAKANA LETTER N */ + { 0x04de, 0x309b }, /* voicedsound ゛ KATAKANA-HIRAGANA VOICED SOUND MARK */ + { 0x04df, 0x309c }, /* semivoicedsound ゜ KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */ + { 0x05ac, 0x060c }, /* Arabic_comma ، ARABIC COMMA */ + { 0x05bb, 0x061b }, /* Arabic_semicolon ؛ ARABIC SEMICOLON */ + { 0x05bf, 0x061f }, /* Arabic_question_mark ؟ ARABIC QUESTION MARK */ + { 0x05c1, 0x0621 }, /* Arabic_hamza ء ARABIC LETTER HAMZA */ + { 0x05c2, 0x0622 }, /* Arabic_maddaonalef آ ARABIC LETTER ALEF WITH MADDA ABOVE */ + { 0x05c3, 0x0623 }, /* Arabic_hamzaonalef أ ARABIC LETTER ALEF WITH HAMZA ABOVE */ + { 0x05c4, 0x0624 }, /* Arabic_hamzaonwaw ؤ ARABIC LETTER WAW WITH HAMZA ABOVE */ + { 0x05c5, 0x0625 }, /* Arabic_hamzaunderalef إ ARABIC LETTER ALEF WITH HAMZA BELOW */ + { 0x05c6, 0x0626 }, /* Arabic_hamzaonyeh ئ ARABIC LETTER YEH WITH HAMZA ABOVE */ + { 0x05c7, 0x0627 }, /* Arabic_alef ا ARABIC LETTER ALEF */ + { 0x05c8, 0x0628 }, /* Arabic_beh ب ARABIC LETTER BEH */ + { 0x05c9, 0x0629 }, /* Arabic_tehmarbuta ة ARABIC LETTER TEH MARBUTA */ + { 0x05ca, 0x062a }, /* Arabic_teh ت ARABIC LETTER TEH */ + { 0x05cb, 0x062b }, /* Arabic_theh ث ARABIC LETTER THEH */ + { 0x05cc, 0x062c }, /* Arabic_jeem ج ARABIC LETTER JEEM */ + { 0x05cd, 0x062d }, /* Arabic_hah ح ARABIC LETTER HAH */ + { 0x05ce, 0x062e }, /* Arabic_khah خ ARABIC LETTER KHAH */ + { 0x05cf, 0x062f }, /* Arabic_dal د ARABIC LETTER DAL */ + { 0x05d0, 0x0630 }, /* Arabic_thal ذ ARABIC LETTER THAL */ + { 0x05d1, 0x0631 }, /* Arabic_ra ر ARABIC LETTER REH */ + { 0x05d2, 0x0632 }, /* Arabic_zain ز ARABIC LETTER ZAIN */ + { 0x05d3, 0x0633 }, /* Arabic_seen س ARABIC LETTER SEEN */ + { 0x05d4, 0x0634 }, /* Arabic_sheen ش ARABIC LETTER SHEEN */ + { 0x05d5, 0x0635 }, /* Arabic_sad ص ARABIC LETTER SAD */ + { 0x05d6, 0x0636 }, /* Arabic_dad ض ARABIC LETTER DAD */ + { 0x05d7, 0x0637 }, /* Arabic_tah ط ARABIC LETTER TAH */ + { 0x05d8, 0x0638 }, /* Arabic_zah ظ ARABIC LETTER ZAH */ + { 0x05d9, 0x0639 }, /* Arabic_ain ع ARABIC LETTER AIN */ + { 0x05da, 0x063a }, /* Arabic_ghain غ ARABIC LETTER GHAIN */ + { 0x05e0, 0x0640 }, /* Arabic_tatweel ـ ARABIC TATWEEL */ + { 0x05e1, 0x0641 }, /* Arabic_feh ف ARABIC LETTER FEH */ + { 0x05e2, 0x0642 }, /* Arabic_qaf ق ARABIC LETTER QAF */ + { 0x05e3, 0x0643 }, /* Arabic_kaf ك ARABIC LETTER KAF */ + { 0x05e4, 0x0644 }, /* Arabic_lam ل ARABIC LETTER LAM */ + { 0x05e5, 0x0645 }, /* Arabic_meem م ARABIC LETTER MEEM */ + { 0x05e6, 0x0646 }, /* Arabic_noon ن ARABIC LETTER NOON */ + { 0x05e7, 0x0647 }, /* Arabic_ha ه ARABIC LETTER HEH */ + { 0x05e8, 0x0648 }, /* Arabic_waw و ARABIC LETTER WAW */ + { 0x05e9, 0x0649 }, /* Arabic_alefmaksura ى ARABIC LETTER ALEF MAKSURA */ + { 0x05ea, 0x064a }, /* Arabic_yeh ي ARABIC LETTER YEH */ + { 0x05eb, 0x064b }, /* Arabic_fathatan ً ARABIC FATHATAN */ + { 0x05ec, 0x064c }, /* Arabic_dammatan ٌ ARABIC DAMMATAN */ + { 0x05ed, 0x064d }, /* Arabic_kasratan ٍ ARABIC KASRATAN */ + { 0x05ee, 0x064e }, /* Arabic_fatha َ ARABIC FATHA */ + { 0x05ef, 0x064f }, /* Arabic_damma ُ ARABIC DAMMA */ + { 0x05f0, 0x0650 }, /* Arabic_kasra ِ ARABIC KASRA */ + { 0x05f1, 0x0651 }, /* Arabic_shadda ّ ARABIC SHADDA */ + { 0x05f2, 0x0652 }, /* Arabic_sukun ْ ARABIC SUKUN */ + { 0x06a1, 0x0452 }, /* Serbian_dje ђ CYRILLIC SMALL LETTER DJE */ + { 0x06a2, 0x0453 }, /* Macedonia_gje ѓ CYRILLIC SMALL LETTER GJE */ + { 0x06a3, 0x0451 }, /* Cyrillic_io ё CYRILLIC SMALL LETTER IO */ + { 0x06a4, 0x0454 }, /* Ukrainian_ie є CYRILLIC SMALL LETTER UKRAINIAN IE */ + { 0x06a5, 0x0455 }, /* Macedonia_dse ѕ CYRILLIC SMALL LETTER DZE */ + { 0x06a6, 0x0456 }, /* Ukrainian_i і CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ + { 0x06a7, 0x0457 }, /* Ukrainian_yi ї CYRILLIC SMALL LETTER YI */ + { 0x06a8, 0x0458 }, /* Cyrillic_je ј CYRILLIC SMALL LETTER JE */ + { 0x06a9, 0x0459 }, /* Cyrillic_lje љ CYRILLIC SMALL LETTER LJE */ + { 0x06aa, 0x045a }, /* Cyrillic_nje њ CYRILLIC SMALL LETTER NJE */ + { 0x06ab, 0x045b }, /* Serbian_tshe ћ CYRILLIC SMALL LETTER TSHE */ + { 0x06ac, 0x045c }, /* Macedonia_kje ќ CYRILLIC SMALL LETTER KJE */ + { 0x06ad, 0x0491 }, /* Ukrainian_ghe_with_upturn ґ CYRILLIC SMALL LETTER GHE WITH UPTURN */ + { 0x06ae, 0x045e }, /* Byelorussian_shortu ў CYRILLIC SMALL LETTER SHORT U */ + { 0x06af, 0x045f }, /* Cyrillic_dzhe џ CYRILLIC SMALL LETTER DZHE */ + { 0x06b0, 0x2116 }, /* numerosign № NUMERO SIGN */ + { 0x06b1, 0x0402 }, /* Serbian_DJE Ђ CYRILLIC CAPITAL LETTER DJE */ + { 0x06b2, 0x0403 }, /* Macedonia_GJE Ѓ CYRILLIC CAPITAL LETTER GJE */ + { 0x06b3, 0x0401 }, /* Cyrillic_IO Ё CYRILLIC CAPITAL LETTER IO */ + { 0x06b4, 0x0404 }, /* Ukrainian_IE Є CYRILLIC CAPITAL LETTER UKRAINIAN IE */ + { 0x06b5, 0x0405 }, /* Macedonia_DSE Ѕ CYRILLIC CAPITAL LETTER DZE */ + { 0x06b6, 0x0406 }, /* Ukrainian_I І CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ + { 0x06b7, 0x0407 }, /* Ukrainian_YI Ї CYRILLIC CAPITAL LETTER YI */ + { 0x06b8, 0x0408 }, /* Cyrillic_JE Ј CYRILLIC CAPITAL LETTER JE */ + { 0x06b9, 0x0409 }, /* Cyrillic_LJE Љ CYRILLIC CAPITAL LETTER LJE */ + { 0x06ba, 0x040a }, /* Cyrillic_NJE Њ CYRILLIC CAPITAL LETTER NJE */ + { 0x06bb, 0x040b }, /* Serbian_TSHE Ћ CYRILLIC CAPITAL LETTER TSHE */ + { 0x06bc, 0x040c }, /* Macedonia_KJE Ќ CYRILLIC CAPITAL LETTER KJE */ + { 0x06bd, 0x0490 }, /* Ukrainian_GHE_WITH_UPTURN Ґ CYRILLIC CAPITAL LETTER GHE WITH UPTURN */ + { 0x06be, 0x040e }, /* Byelorussian_SHORTU Ў CYRILLIC CAPITAL LETTER SHORT U */ + { 0x06bf, 0x040f }, /* Cyrillic_DZHE Џ CYRILLIC CAPITAL LETTER DZHE */ + { 0x06c0, 0x044e }, /* Cyrillic_yu ю CYRILLIC SMALL LETTER YU */ + { 0x06c1, 0x0430 }, /* Cyrillic_a а CYRILLIC SMALL LETTER A */ + { 0x06c2, 0x0431 }, /* Cyrillic_be б CYRILLIC SMALL LETTER BE */ + { 0x06c3, 0x0446 }, /* Cyrillic_tse ц CYRILLIC SMALL LETTER TSE */ + { 0x06c4, 0x0434 }, /* Cyrillic_de д CYRILLIC SMALL LETTER DE */ + { 0x06c5, 0x0435 }, /* Cyrillic_ie е CYRILLIC SMALL LETTER IE */ + { 0x06c6, 0x0444 }, /* Cyrillic_ef ф CYRILLIC SMALL LETTER EF */ + { 0x06c7, 0x0433 }, /* Cyrillic_ghe г CYRILLIC SMALL LETTER GHE */ + { 0x06c8, 0x0445 }, /* Cyrillic_ha х CYRILLIC SMALL LETTER HA */ + { 0x06c9, 0x0438 }, /* Cyrillic_i и CYRILLIC SMALL LETTER I */ + { 0x06ca, 0x0439 }, /* Cyrillic_shorti й CYRILLIC SMALL LETTER SHORT I */ + { 0x06cb, 0x043a }, /* Cyrillic_ka к CYRILLIC SMALL LETTER KA */ + { 0x06cc, 0x043b }, /* Cyrillic_el л CYRILLIC SMALL LETTER EL */ + { 0x06cd, 0x043c }, /* Cyrillic_em м CYRILLIC SMALL LETTER EM */ + { 0x06ce, 0x043d }, /* Cyrillic_en н CYRILLIC SMALL LETTER EN */ + { 0x06cf, 0x043e }, /* Cyrillic_o о CYRILLIC SMALL LETTER O */ + { 0x06d0, 0x043f }, /* Cyrillic_pe п CYRILLIC SMALL LETTER PE */ + { 0x06d1, 0x044f }, /* Cyrillic_ya я CYRILLIC SMALL LETTER YA */ + { 0x06d2, 0x0440 }, /* Cyrillic_er р CYRILLIC SMALL LETTER ER */ + { 0x06d3, 0x0441 }, /* Cyrillic_es с CYRILLIC SMALL LETTER ES */ + { 0x06d4, 0x0442 }, /* Cyrillic_te т CYRILLIC SMALL LETTER TE */ + { 0x06d5, 0x0443 }, /* Cyrillic_u у CYRILLIC SMALL LETTER U */ + { 0x06d6, 0x0436 }, /* Cyrillic_zhe ж CYRILLIC SMALL LETTER ZHE */ + { 0x06d7, 0x0432 }, /* Cyrillic_ve в CYRILLIC SMALL LETTER VE */ + { 0x06d8, 0x044c }, /* Cyrillic_softsign ь CYRILLIC SMALL LETTER SOFT SIGN */ + { 0x06d9, 0x044b }, /* Cyrillic_yeru ы CYRILLIC SMALL LETTER YERU */ + { 0x06da, 0x0437 }, /* Cyrillic_ze з CYRILLIC SMALL LETTER ZE */ + { 0x06db, 0x0448 }, /* Cyrillic_sha ш CYRILLIC SMALL LETTER SHA */ + { 0x06dc, 0x044d }, /* Cyrillic_e э CYRILLIC SMALL LETTER E */ + { 0x06dd, 0x0449 }, /* Cyrillic_shcha щ CYRILLIC SMALL LETTER SHCHA */ + { 0x06de, 0x0447 }, /* Cyrillic_che ч CYRILLIC SMALL LETTER CHE */ + { 0x06df, 0x044a }, /* Cyrillic_hardsign ъ CYRILLIC SMALL LETTER HARD SIGN */ + { 0x06e0, 0x042e }, /* Cyrillic_YU Ю CYRILLIC CAPITAL LETTER YU */ + { 0x06e1, 0x0410 }, /* Cyrillic_A А CYRILLIC CAPITAL LETTER A */ + { 0x06e2, 0x0411 }, /* Cyrillic_BE Б CYRILLIC CAPITAL LETTER BE */ + { 0x06e3, 0x0426 }, /* Cyrillic_TSE Ц CYRILLIC CAPITAL LETTER TSE */ + { 0x06e4, 0x0414 }, /* Cyrillic_DE Д CYRILLIC CAPITAL LETTER DE */ + { 0x06e5, 0x0415 }, /* Cyrillic_IE Е CYRILLIC CAPITAL LETTER IE */ + { 0x06e6, 0x0424 }, /* Cyrillic_EF Ф CYRILLIC CAPITAL LETTER EF */ + { 0x06e7, 0x0413 }, /* Cyrillic_GHE Г CYRILLIC CAPITAL LETTER GHE */ + { 0x06e8, 0x0425 }, /* Cyrillic_HA Х CYRILLIC CAPITAL LETTER HA */ + { 0x06e9, 0x0418 }, /* Cyrillic_I И CYRILLIC CAPITAL LETTER I */ + { 0x06ea, 0x0419 }, /* Cyrillic_SHORTI Й CYRILLIC CAPITAL LETTER SHORT I */ + { 0x06eb, 0x041a }, /* Cyrillic_KA К CYRILLIC CAPITAL LETTER KA */ + { 0x06ec, 0x041b }, /* Cyrillic_EL Л CYRILLIC CAPITAL LETTER EL */ + { 0x06ed, 0x041c }, /* Cyrillic_EM М CYRILLIC CAPITAL LETTER EM */ + { 0x06ee, 0x041d }, /* Cyrillic_EN Н CYRILLIC CAPITAL LETTER EN */ + { 0x06ef, 0x041e }, /* Cyrillic_O О CYRILLIC CAPITAL LETTER O */ + { 0x06f0, 0x041f }, /* Cyrillic_PE П CYRILLIC CAPITAL LETTER PE */ + { 0x06f1, 0x042f }, /* Cyrillic_YA Я CYRILLIC CAPITAL LETTER YA */ + { 0x06f2, 0x0420 }, /* Cyrillic_ER Р CYRILLIC CAPITAL LETTER ER */ + { 0x06f3, 0x0421 }, /* Cyrillic_ES С CYRILLIC CAPITAL LETTER ES */ + { 0x06f4, 0x0422 }, /* Cyrillic_TE Т CYRILLIC CAPITAL LETTER TE */ + { 0x06f5, 0x0423 }, /* Cyrillic_U У CYRILLIC CAPITAL LETTER U */ + { 0x06f6, 0x0416 }, /* Cyrillic_ZHE Ж CYRILLIC CAPITAL LETTER ZHE */ + { 0x06f7, 0x0412 }, /* Cyrillic_VE В CYRILLIC CAPITAL LETTER VE */ + { 0x06f8, 0x042c }, /* Cyrillic_SOFTSIGN Ь CYRILLIC CAPITAL LETTER SOFT SIGN */ + { 0x06f9, 0x042b }, /* Cyrillic_YERU Ы CYRILLIC CAPITAL LETTER YERU */ + { 0x06fa, 0x0417 }, /* Cyrillic_ZE З CYRILLIC CAPITAL LETTER ZE */ + { 0x06fb, 0x0428 }, /* Cyrillic_SHA Ш CYRILLIC CAPITAL LETTER SHA */ + { 0x06fc, 0x042d }, /* Cyrillic_E Э CYRILLIC CAPITAL LETTER E */ + { 0x06fd, 0x0429 }, /* Cyrillic_SHCHA Щ CYRILLIC CAPITAL LETTER SHCHA */ + { 0x06fe, 0x0427 }, /* Cyrillic_CHE Ч CYRILLIC CAPITAL LETTER CHE */ + { 0x06ff, 0x042a }, /* Cyrillic_HARDSIGN Ъ CYRILLIC CAPITAL LETTER HARD SIGN */ + { 0x07a1, 0x0386 }, /* Greek_ALPHAaccent Ά GREEK CAPITAL LETTER ALPHA WITH TONOS */ + { 0x07a2, 0x0388 }, /* Greek_EPSILONaccent Έ GREEK CAPITAL LETTER EPSILON WITH TONOS */ + { 0x07a3, 0x0389 }, /* Greek_ETAaccent Ή GREEK CAPITAL LETTER ETA WITH TONOS */ + { 0x07a4, 0x038a }, /* Greek_IOTAaccent Ί GREEK CAPITAL LETTER IOTA WITH TONOS */ + { 0x07a5, 0x03aa }, /* Greek_IOTAdiaeresis Ϊ GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */ + { 0x07a7, 0x038c }, /* Greek_OMICRONaccent Ό GREEK CAPITAL LETTER OMICRON WITH TONOS */ + { 0x07a8, 0x038e }, /* Greek_UPSILONaccent Ύ GREEK CAPITAL LETTER UPSILON WITH TONOS */ + { 0x07a9, 0x03ab }, /* Greek_UPSILONdieresis Ϋ GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */ + { 0x07ab, 0x038f }, /* Greek_OMEGAaccent Ώ GREEK CAPITAL LETTER OMEGA WITH TONOS */ + { 0x07ae, 0x0385 }, /* Greek_accentdieresis ΅ GREEK DIALYTIKA TONOS */ + { 0x07af, 0x2015 }, /* Greek_horizbar ― HORIZONTAL BAR */ + { 0x07b1, 0x03ac }, /* Greek_alphaaccent ά GREEK SMALL LETTER ALPHA WITH TONOS */ + { 0x07b2, 0x03ad }, /* Greek_epsilonaccent έ GREEK SMALL LETTER EPSILON WITH TONOS */ + { 0x07b3, 0x03ae }, /* Greek_etaaccent ή GREEK SMALL LETTER ETA WITH TONOS */ + { 0x07b4, 0x03af }, /* Greek_iotaaccent ί GREEK SMALL LETTER IOTA WITH TONOS */ + { 0x07b5, 0x03ca }, /* Greek_iotadieresis ϊ GREEK SMALL LETTER IOTA WITH DIALYTIKA */ + { 0x07b6, 0x0390 }, /* Greek_iotaaccentdieresis ΐ GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */ + { 0x07b7, 0x03cc }, /* Greek_omicronaccent ό GREEK SMALL LETTER OMICRON WITH TONOS */ + { 0x07b8, 0x03cd }, /* Greek_upsilonaccent ύ GREEK SMALL LETTER UPSILON WITH TONOS */ + { 0x07b9, 0x03cb }, /* Greek_upsilondieresis ϋ GREEK SMALL LETTER UPSILON WITH DIALYTIKA */ + { 0x07ba, 0x03b0 }, /* Greek_upsilonaccentdieresis ΰ GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */ + { 0x07bb, 0x03ce }, /* Greek_omegaaccent ώ GREEK SMALL LETTER OMEGA WITH TONOS */ + { 0x07c1, 0x0391 }, /* Greek_ALPHA Α GREEK CAPITAL LETTER ALPHA */ + { 0x07c2, 0x0392 }, /* Greek_BETA Β GREEK CAPITAL LETTER BETA */ + { 0x07c3, 0x0393 }, /* Greek_GAMMA Γ GREEK CAPITAL LETTER GAMMA */ + { 0x07c4, 0x0394 }, /* Greek_DELTA Δ GREEK CAPITAL LETTER DELTA */ + { 0x07c5, 0x0395 }, /* Greek_EPSILON Ε GREEK CAPITAL LETTER EPSILON */ + { 0x07c6, 0x0396 }, /* Greek_ZETA Ζ GREEK CAPITAL LETTER ZETA */ + { 0x07c7, 0x0397 }, /* Greek_ETA Η GREEK CAPITAL LETTER ETA */ + { 0x07c8, 0x0398 }, /* Greek_THETA Θ GREEK CAPITAL LETTER THETA */ + { 0x07c9, 0x0399 }, /* Greek_IOTA Ι GREEK CAPITAL LETTER IOTA */ + { 0x07ca, 0x039a }, /* Greek_KAPPA Κ GREEK CAPITAL LETTER KAPPA */ + { 0x07cb, 0x039b }, /* Greek_LAMBDA Λ GREEK CAPITAL LETTER LAMDA */ + { 0x07cc, 0x039c }, /* Greek_MU Μ GREEK CAPITAL LETTER MU */ + { 0x07cd, 0x039d }, /* Greek_NU Ν GREEK CAPITAL LETTER NU */ + { 0x07ce, 0x039e }, /* Greek_XI Ξ GREEK CAPITAL LETTER XI */ + { 0x07cf, 0x039f }, /* Greek_OMICRON Ο GREEK CAPITAL LETTER OMICRON */ + { 0x07d0, 0x03a0 }, /* Greek_PI Π GREEK CAPITAL LETTER PI */ + { 0x07d1, 0x03a1 }, /* Greek_RHO Ρ GREEK CAPITAL LETTER RHO */ + { 0x07d2, 0x03a3 }, /* Greek_SIGMA Σ GREEK CAPITAL LETTER SIGMA */ + { 0x07d4, 0x03a4 }, /* Greek_TAU Τ GREEK CAPITAL LETTER TAU */ + { 0x07d5, 0x03a5 }, /* Greek_UPSILON Υ GREEK CAPITAL LETTER UPSILON */ + { 0x07d6, 0x03a6 }, /* Greek_PHI Φ GREEK CAPITAL LETTER PHI */ + { 0x07d7, 0x03a7 }, /* Greek_CHI Χ GREEK CAPITAL LETTER CHI */ + { 0x07d8, 0x03a8 }, /* Greek_PSI Ψ GREEK CAPITAL LETTER PSI */ + { 0x07d9, 0x03a9 }, /* Greek_OMEGA Ω GREEK CAPITAL LETTER OMEGA */ + { 0x07e1, 0x03b1 }, /* Greek_alpha α GREEK SMALL LETTER ALPHA */ + { 0x07e2, 0x03b2 }, /* Greek_beta β GREEK SMALL LETTER BETA */ + { 0x07e3, 0x03b3 }, /* Greek_gamma γ GREEK SMALL LETTER GAMMA */ + { 0x07e4, 0x03b4 }, /* Greek_delta δ GREEK SMALL LETTER DELTA */ + { 0x07e5, 0x03b5 }, /* Greek_epsilon ε GREEK SMALL LETTER EPSILON */ + { 0x07e6, 0x03b6 }, /* Greek_zeta ζ GREEK SMALL LETTER ZETA */ + { 0x07e7, 0x03b7 }, /* Greek_eta η GREEK SMALL LETTER ETA */ + { 0x07e8, 0x03b8 }, /* Greek_theta θ GREEK SMALL LETTER THETA */ + { 0x07e9, 0x03b9 }, /* Greek_iota ι GREEK SMALL LETTER IOTA */ + { 0x07ea, 0x03ba }, /* Greek_kappa κ GREEK SMALL LETTER KAPPA */ + { 0x07eb, 0x03bb }, /* Greek_lambda λ GREEK SMALL LETTER LAMDA */ + { 0x07ec, 0x03bc }, /* Greek_mu μ GREEK SMALL LETTER MU */ + { 0x07ed, 0x03bd }, /* Greek_nu ν GREEK SMALL LETTER NU */ + { 0x07ee, 0x03be }, /* Greek_xi ξ GREEK SMALL LETTER XI */ + { 0x07ef, 0x03bf }, /* Greek_omicron ο GREEK SMALL LETTER OMICRON */ + { 0x07f0, 0x03c0 }, /* Greek_pi π GREEK SMALL LETTER PI */ + { 0x07f1, 0x03c1 }, /* Greek_rho ρ GREEK SMALL LETTER RHO */ + { 0x07f2, 0x03c3 }, /* Greek_sigma σ GREEK SMALL LETTER SIGMA */ + { 0x07f3, 0x03c2 }, /* Greek_finalsmallsigma ς GREEK SMALL LETTER FINAL SIGMA */ + { 0x07f4, 0x03c4 }, /* Greek_tau τ GREEK SMALL LETTER TAU */ + { 0x07f5, 0x03c5 }, /* Greek_upsilon υ GREEK SMALL LETTER UPSILON */ + { 0x07f6, 0x03c6 }, /* Greek_phi φ GREEK SMALL LETTER PHI */ + { 0x07f7, 0x03c7 }, /* Greek_chi χ GREEK SMALL LETTER CHI */ + { 0x07f8, 0x03c8 }, /* Greek_psi ψ GREEK SMALL LETTER PSI */ + { 0x07f9, 0x03c9 }, /* Greek_omega ω GREEK SMALL LETTER OMEGA */ + { 0x08a1, 0x23b7 }, /* leftradical ⎷ ??? */ + { 0x08a2, 0x250c }, /* topleftradical ┌ BOX DRAWINGS LIGHT DOWN AND RIGHT */ + { 0x08a3, 0x2500 }, /* horizconnector ─ BOX DRAWINGS LIGHT HORIZONTAL */ + { 0x08a4, 0x2320 }, /* topintegral ⌠ TOP HALF INTEGRAL */ + { 0x08a5, 0x2321 }, /* botintegral ⌡ BOTTOM HALF INTEGRAL */ + { 0x08a6, 0x2502 }, /* vertconnector │ BOX DRAWINGS LIGHT VERTICAL */ + { 0x08a7, 0x23a1 }, /* topleftsqbracket ⎡ ??? */ + { 0x08a8, 0x23a3 }, /* botleftsqbracket ⎣ ??? */ + { 0x08a9, 0x23a4 }, /* toprightsqbracket ⎤ ??? */ + { 0x08aa, 0x23a6 }, /* botrightsqbracket ⎦ ??? */ + { 0x08ab, 0x239b }, /* topleftparens ⎛ ??? */ + { 0x08ac, 0x239d }, /* botleftparens ⎝ ??? */ + { 0x08ad, 0x239e }, /* toprightparens ⎞ ??? */ + { 0x08ae, 0x23a0 }, /* botrightparens ⎠ ??? */ + { 0x08af, 0x23a8 }, /* leftmiddlecurlybrace ⎨ ??? */ + { 0x08b0, 0x23ac }, /* rightmiddlecurlybrace ⎬ ??? */ + /* 0x08b1 topleftsummation ? ??? */ + /* 0x08b2 botleftsummation ? ??? */ + /* 0x08b3 topvertsummationconnector ? ??? */ + /* 0x08b4 botvertsummationconnector ? ??? */ + /* 0x08b5 toprightsummation ? ??? */ + /* 0x08b6 botrightsummation ? ??? */ + /* 0x08b7 rightmiddlesummation ? ??? */ + { 0x08bc, 0x2264 }, /* lessthanequal ≤ LESS-THAN OR EQUAL TO */ + { 0x08bd, 0x2260 }, /* notequal ≠ NOT EQUAL TO */ + { 0x08be, 0x2265 }, /* greaterthanequal ≥ GREATER-THAN OR EQUAL TO */ + { 0x08bf, 0x222b }, /* integral ∫ INTEGRAL */ + { 0x08c0, 0x2234 }, /* therefore ∴ THEREFORE */ + { 0x08c1, 0x221d }, /* variation ∝ PROPORTIONAL TO */ + { 0x08c2, 0x221e }, /* infinity ∞ INFINITY */ + { 0x08c5, 0x2207 }, /* nabla ∇ NABLA */ + { 0x08c8, 0x223c }, /* approximate ∼ TILDE OPERATOR */ + { 0x08c9, 0x2243 }, /* similarequal ≃ ASYMPTOTICALLY EQUAL TO */ + { 0x08cd, 0x21d4 }, /* ifonlyif ⇔ LEFT RIGHT DOUBLE ARROW */ + { 0x08ce, 0x21d2 }, /* implies ⇒ RIGHTWARDS DOUBLE ARROW */ + { 0x08cf, 0x2261 }, /* identical ≡ IDENTICAL TO */ + { 0x08d6, 0x221a }, /* radical √ SQUARE ROOT */ + { 0x08da, 0x2282 }, /* includedin ⊂ SUBSET OF */ + { 0x08db, 0x2283 }, /* includes ⊃ SUPERSET OF */ + { 0x08dc, 0x2229 }, /* intersection ∩ INTERSECTION */ + { 0x08dd, 0x222a }, /* union ∪ UNION */ + { 0x08de, 0x2227 }, /* logicaland ∧ LOGICAL AND */ + { 0x08df, 0x2228 }, /* logicalor ∨ LOGICAL OR */ + { 0x08ef, 0x2202 }, /* partialderivative ∂ PARTIAL DIFFERENTIAL */ + { 0x08f6, 0x0192 }, /* function ƒ LATIN SMALL LETTER F WITH HOOK */ + { 0x08fb, 0x2190 }, /* leftarrow ← LEFTWARDS ARROW */ + { 0x08fc, 0x2191 }, /* uparrow ↑ UPWARDS ARROW */ + { 0x08fd, 0x2192 }, /* rightarrow → RIGHTWARDS ARROW */ + { 0x08fe, 0x2193 }, /* downarrow ↓ DOWNWARDS ARROW */ +/* 0x09df blank ? ??? */ + { 0x09e0, 0x25c6 }, /* soliddiamond ◆ BLACK DIAMOND */ + { 0x09e1, 0x2592 }, /* checkerboard ▒ MEDIUM SHADE */ + { 0x09e2, 0x2409 }, /* ht ␉ SYMBOL FOR HORIZONTAL TABULATION */ + { 0x09e3, 0x240c }, /* ff ␌ SYMBOL FOR FORM FEED */ + { 0x09e4, 0x240d }, /* cr ␍ SYMBOL FOR CARRIAGE RETURN */ + { 0x09e5, 0x240a }, /* lf ␊ SYMBOL FOR LINE FEED */ + { 0x09e8, 0x2424 }, /* nl ␤ SYMBOL FOR NEWLINE */ + { 0x09e9, 0x240b }, /* vt ␋ SYMBOL FOR VERTICAL TABULATION */ + { 0x09ea, 0x2518 }, /* lowrightcorner ┘ BOX DRAWINGS LIGHT UP AND LEFT */ + { 0x09eb, 0x2510 }, /* uprightcorner ┐ BOX DRAWINGS LIGHT DOWN AND LEFT */ + { 0x09ec, 0x250c }, /* upleftcorner ┌ BOX DRAWINGS LIGHT DOWN AND RIGHT */ + { 0x09ed, 0x2514 }, /* lowleftcorner └ BOX DRAWINGS LIGHT UP AND RIGHT */ + { 0x09ee, 0x253c }, /* crossinglines ┼ BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */ + { 0x09ef, 0x23ba }, /* horizlinescan1 ⎺ HORIZONTAL SCAN LINE-1 (Unicode 3.2 draft) */ + { 0x09f0, 0x23bb }, /* horizlinescan3 ⎻ HORIZONTAL SCAN LINE-3 (Unicode 3.2 draft) */ + { 0x09f1, 0x2500 }, /* horizlinescan5 ─ BOX DRAWINGS LIGHT HORIZONTAL */ + { 0x09f2, 0x23bc }, /* horizlinescan7 ⎼ HORIZONTAL SCAN LINE-7 (Unicode 3.2 draft) */ + { 0x09f3, 0x23bd }, /* horizlinescan9 ⎽ HORIZONTAL SCAN LINE-9 (Unicode 3.2 draft) */ + { 0x09f4, 0x251c }, /* leftt ├ BOX DRAWINGS LIGHT VERTICAL AND RIGHT */ + { 0x09f5, 0x2524 }, /* rightt ┤ BOX DRAWINGS LIGHT VERTICAL AND LEFT */ + { 0x09f6, 0x2534 }, /* bott ┴ BOX DRAWINGS LIGHT UP AND HORIZONTAL */ + { 0x09f7, 0x252c }, /* topt ┬ BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */ + { 0x09f8, 0x2502 }, /* vertbar │ BOX DRAWINGS LIGHT VERTICAL */ + { 0x0aa1, 0x2003 }, /* emspace   EM SPACE */ + { 0x0aa2, 0x2002 }, /* enspace   EN SPACE */ + { 0x0aa3, 0x2004 }, /* em3space   THREE-PER-EM SPACE */ + { 0x0aa4, 0x2005 }, /* em4space   FOUR-PER-EM SPACE */ + { 0x0aa5, 0x2007 }, /* digitspace   FIGURE SPACE */ + { 0x0aa6, 0x2008 }, /* punctspace   PUNCTUATION SPACE */ + { 0x0aa7, 0x2009 }, /* thinspace   THIN SPACE */ + { 0x0aa8, 0x200a }, /* hairspace   HAIR SPACE */ + { 0x0aa9, 0x2014 }, /* emdash — EM DASH */ + { 0x0aaa, 0x2013 }, /* endash – EN DASH */ + /* 0x0aac signifblank ? ??? */ + { 0x0aae, 0x2026 }, /* ellipsis … HORIZONTAL ELLIPSIS */ + { 0x0aaf, 0x2025 }, /* doubbaselinedot ‥ TWO DOT LEADER */ + { 0x0ab0, 0x2153 }, /* onethird ⅓ VULGAR FRACTION ONE THIRD */ + { 0x0ab1, 0x2154 }, /* twothirds ⅔ VULGAR FRACTION TWO THIRDS */ + { 0x0ab2, 0x2155 }, /* onefifth ⅕ VULGAR FRACTION ONE FIFTH */ + { 0x0ab3, 0x2156 }, /* twofifths ⅖ VULGAR FRACTION TWO FIFTHS */ + { 0x0ab4, 0x2157 }, /* threefifths ⅗ VULGAR FRACTION THREE FIFTHS */ + { 0x0ab5, 0x2158 }, /* fourfifths ⅘ VULGAR FRACTION FOUR FIFTHS */ + { 0x0ab6, 0x2159 }, /* onesixth ⅙ VULGAR FRACTION ONE SIXTH */ + { 0x0ab7, 0x215a }, /* fivesixths ⅚ VULGAR FRACTION FIVE SIXTHS */ + { 0x0ab8, 0x2105 }, /* careof ℅ CARE OF */ + { 0x0abb, 0x2012 }, /* figdash ‒ FIGURE DASH */ + { 0x0abc, 0x2329 }, /* leftanglebracket 〈 LEFT-POINTING ANGLE BRACKET */ + { 0x0abd, 0x002e }, /* decimalpoint . FULL STOP */ + { 0x0abe, 0x232a }, /* rightanglebracket 〉 RIGHT-POINTING ANGLE BRACKET */ + /* 0x0abf marker ? ??? */ + { 0x0ac3, 0x215b }, /* oneeighth ⅛ VULGAR FRACTION ONE EIGHTH */ + { 0x0ac4, 0x215c }, /* threeeighths ⅜ VULGAR FRACTION THREE EIGHTHS */ + { 0x0ac5, 0x215d }, /* fiveeighths ⅝ VULGAR FRACTION FIVE EIGHTHS */ + { 0x0ac6, 0x215e }, /* seveneighths ⅞ VULGAR FRACTION SEVEN EIGHTHS */ + { 0x0ac9, 0x2122 }, /* trademark ™ TRADE MARK SIGN */ + { 0x0aca, 0x2613 }, /* signaturemark ☓ SALTIRE */ + /* 0x0acb trademarkincircle ? ??? */ + { 0x0acc, 0x25c1 }, /* leftopentriangle ◁ WHITE LEFT-POINTING TRIANGLE */ + { 0x0acd, 0x25b7 }, /* rightopentriangle ▷ WHITE RIGHT-POINTING TRIANGLE */ + { 0x0ace, 0x25cb }, /* emopencircle ○ WHITE CIRCLE */ + { 0x0acf, 0x25af }, /* emopenrectangle ▯ WHITE VERTICAL RECTANGLE */ + { 0x0ad0, 0x2018 }, /* leftsinglequotemark ‘ LEFT SINGLE QUOTATION MARK */ + { 0x0ad1, 0x2019 }, /* rightsinglequotemark ’ RIGHT SINGLE QUOTATION MARK */ + { 0x0ad2, 0x201c }, /* leftdoublequotemark “ LEFT DOUBLE QUOTATION MARK */ + { 0x0ad3, 0x201d }, /* rightdoublequotemark ” RIGHT DOUBLE QUOTATION MARK */ + { 0x0ad4, 0x211e }, /* prescription ℞ PRESCRIPTION TAKE */ + { 0x0ad6, 0x2032 }, /* minutes ′ PRIME */ + { 0x0ad7, 0x2033 }, /* seconds ″ DOUBLE PRIME */ + { 0x0ad9, 0x271d }, /* latincross ✝ LATIN CROSS */ + /* 0x0ada hexagram ? ??? */ + { 0x0adb, 0x25ac }, /* filledrectbullet ▬ BLACK RECTANGLE */ + { 0x0adc, 0x25c0 }, /* filledlefttribullet ◀ BLACK LEFT-POINTING TRIANGLE */ + { 0x0add, 0x25b6 }, /* filledrighttribullet ▶ BLACK RIGHT-POINTING TRIANGLE */ + { 0x0ade, 0x25cf }, /* emfilledcircle ● BLACK CIRCLE */ + { 0x0adf, 0x25ae }, /* emfilledrect ▮ BLACK VERTICAL RECTANGLE */ + { 0x0ae0, 0x25e6 }, /* enopencircbullet ◦ WHITE BULLET */ + { 0x0ae1, 0x25ab }, /* enopensquarebullet ▫ WHITE SMALL SQUARE */ + { 0x0ae2, 0x25ad }, /* openrectbullet ▭ WHITE RECTANGLE */ + { 0x0ae3, 0x25b3 }, /* opentribulletup △ WHITE UP-POINTING TRIANGLE */ + { 0x0ae4, 0x25bd }, /* opentribulletdown ▽ WHITE DOWN-POINTING TRIANGLE */ + { 0x0ae5, 0x2606 }, /* openstar ☆ WHITE STAR */ + { 0x0ae6, 0x2022 }, /* enfilledcircbullet • BULLET */ + { 0x0ae7, 0x25aa }, /* enfilledsqbullet ▪ BLACK SMALL SQUARE */ + { 0x0ae8, 0x25b2 }, /* filledtribulletup ▲ BLACK UP-POINTING TRIANGLE */ + { 0x0ae9, 0x25bc }, /* filledtribulletdown ▼ BLACK DOWN-POINTING TRIANGLE */ + { 0x0aea, 0x261c }, /* leftpointer ☜ WHITE LEFT POINTING INDEX */ + { 0x0aeb, 0x261e }, /* rightpointer ☞ WHITE RIGHT POINTING INDEX */ + { 0x0aec, 0x2663 }, /* club ♣ BLACK CLUB SUIT */ + { 0x0aed, 0x2666 }, /* diamond ♦ BLACK DIAMOND SUIT */ + { 0x0aee, 0x2665 }, /* heart ♥ BLACK HEART SUIT */ + { 0x0af0, 0x2720 }, /* maltesecross ✠ MALTESE CROSS */ + { 0x0af1, 0x2020 }, /* dagger † DAGGER */ + { 0x0af2, 0x2021 }, /* doubledagger ‡ DOUBLE DAGGER */ + { 0x0af3, 0x2713 }, /* checkmark ✓ CHECK MARK */ + { 0x0af4, 0x2717 }, /* ballotcross ✗ BALLOT X */ + { 0x0af5, 0x266f }, /* musicalsharp ♯ MUSIC SHARP SIGN */ + { 0x0af6, 0x266d }, /* musicalflat ♭ MUSIC FLAT SIGN */ + { 0x0af7, 0x2642 }, /* malesymbol ♂ MALE SIGN */ + { 0x0af8, 0x2640 }, /* femalesymbol ♀ FEMALE SIGN */ + { 0x0af9, 0x260e }, /* telephone ☎ BLACK TELEPHONE */ + { 0x0afa, 0x2315 }, /* telephonerecorder ⌕ TELEPHONE RECORDER */ + { 0x0afb, 0x2117 }, /* phonographcopyright ℗ SOUND RECORDING COPYRIGHT */ + { 0x0afc, 0x2038 }, /* caret ‸ CARET */ + { 0x0afd, 0x201a }, /* singlelowquotemark ‚ SINGLE LOW-9 QUOTATION MARK */ + { 0x0afe, 0x201e }, /* doublelowquotemark „ DOUBLE LOW-9 QUOTATION MARK */ + /* 0x0aff cursor ? ??? */ + { 0x0ba3, 0x003c }, /* leftcaret < LESS-THAN SIGN */ + { 0x0ba6, 0x003e }, /* rightcaret > GREATER-THAN SIGN */ + { 0x0ba8, 0x2228 }, /* downcaret ∨ LOGICAL OR */ + { 0x0ba9, 0x2227 }, /* upcaret ∧ LOGICAL AND */ + { 0x0bc0, 0x00af }, /* overbar ¯ MACRON */ + { 0x0bc2, 0x22a4 }, /* downtack ⊤ DOWN TACK */ + { 0x0bc3, 0x2229 }, /* upshoe ∩ INTERSECTION */ + { 0x0bc4, 0x230a }, /* downstile ⌊ LEFT FLOOR */ + { 0x0bc6, 0x005f }, /* underbar _ LOW LINE */ + { 0x0bca, 0x2218 }, /* jot ∘ RING OPERATOR */ + { 0x0bcc, 0x2395 }, /* quad ⎕ APL FUNCTIONAL SYMBOL QUAD (Unicode 3.0) */ + { 0x0bce, 0x22a5 }, /* uptack ⊥ UP TACK */ + { 0x0bcf, 0x25cb }, /* circle ○ WHITE CIRCLE */ + { 0x0bd3, 0x2308 }, /* upstile ⌈ LEFT CEILING */ + { 0x0bd6, 0x222a }, /* downshoe ∪ UNION */ + { 0x0bd8, 0x2283 }, /* rightshoe ⊃ SUPERSET OF */ + { 0x0bda, 0x2282 }, /* leftshoe ⊂ SUBSET OF */ + { 0x0bdc, 0x22a2 }, /* lefttack ⊢ RIGHT TACK */ + { 0x0bfc, 0x22a3 }, /* righttack ⊣ LEFT TACK */ + { 0x0cdf, 0x2017 }, /* hebrew_doublelowline ‗ DOUBLE LOW LINE */ + { 0x0ce0, 0x05d0 }, /* hebrew_aleph א HEBREW LETTER ALEF */ + { 0x0ce1, 0x05d1 }, /* hebrew_bet ב HEBREW LETTER BET */ + { 0x0ce2, 0x05d2 }, /* hebrew_gimel ג HEBREW LETTER GIMEL */ + { 0x0ce3, 0x05d3 }, /* hebrew_dalet ד HEBREW LETTER DALET */ + { 0x0ce4, 0x05d4 }, /* hebrew_he ה HEBREW LETTER HE */ + { 0x0ce5, 0x05d5 }, /* hebrew_waw ו HEBREW LETTER VAV */ + { 0x0ce6, 0x05d6 }, /* hebrew_zain ז HEBREW LETTER ZAYIN */ + { 0x0ce7, 0x05d7 }, /* hebrew_chet ח HEBREW LETTER HET */ + { 0x0ce8, 0x05d8 }, /* hebrew_tet ט HEBREW LETTER TET */ + { 0x0ce9, 0x05d9 }, /* hebrew_yod י HEBREW LETTER YOD */ + { 0x0cea, 0x05da }, /* hebrew_finalkaph ך HEBREW LETTER FINAL KAF */ + { 0x0ceb, 0x05db }, /* hebrew_kaph כ HEBREW LETTER KAF */ + { 0x0cec, 0x05dc }, /* hebrew_lamed ל HEBREW LETTER LAMED */ + { 0x0ced, 0x05dd }, /* hebrew_finalmem ם HEBREW LETTER FINAL MEM */ + { 0x0cee, 0x05de }, /* hebrew_mem מ HEBREW LETTER MEM */ + { 0x0cef, 0x05df }, /* hebrew_finalnun ן HEBREW LETTER FINAL NUN */ + { 0x0cf0, 0x05e0 }, /* hebrew_nun נ HEBREW LETTER NUN */ + { 0x0cf1, 0x05e1 }, /* hebrew_samech ס HEBREW LETTER SAMEKH */ + { 0x0cf2, 0x05e2 }, /* hebrew_ayin ע HEBREW LETTER AYIN */ + { 0x0cf3, 0x05e3 }, /* hebrew_finalpe ף HEBREW LETTER FINAL PE */ + { 0x0cf4, 0x05e4 }, /* hebrew_pe פ HEBREW LETTER PE */ + { 0x0cf5, 0x05e5 }, /* hebrew_finalzade ץ HEBREW LETTER FINAL TSADI */ + { 0x0cf6, 0x05e6 }, /* hebrew_zade צ HEBREW LETTER TSADI */ + { 0x0cf7, 0x05e7 }, /* hebrew_qoph ק HEBREW LETTER QOF */ + { 0x0cf8, 0x05e8 }, /* hebrew_resh ר HEBREW LETTER RESH */ + { 0x0cf9, 0x05e9 }, /* hebrew_shin ש HEBREW LETTER SHIN */ + { 0x0cfa, 0x05ea }, /* hebrew_taw ת HEBREW LETTER TAV */ + { 0x0da1, 0x0e01 }, /* Thai_kokai ก THAI CHARACTER KO KAI */ + { 0x0da2, 0x0e02 }, /* Thai_khokhai ข THAI CHARACTER KHO KHAI */ + { 0x0da3, 0x0e03 }, /* Thai_khokhuat ฃ THAI CHARACTER KHO KHUAT */ + { 0x0da4, 0x0e04 }, /* Thai_khokhwai ค THAI CHARACTER KHO KHWAI */ + { 0x0da5, 0x0e05 }, /* Thai_khokhon ฅ THAI CHARACTER KHO KHON */ + { 0x0da6, 0x0e06 }, /* Thai_khorakhang ฆ THAI CHARACTER KHO RAKHANG */ + { 0x0da7, 0x0e07 }, /* Thai_ngongu ง THAI CHARACTER NGO NGU */ + { 0x0da8, 0x0e08 }, /* Thai_chochan จ THAI CHARACTER CHO CHAN */ + { 0x0da9, 0x0e09 }, /* Thai_choching ฉ THAI CHARACTER CHO CHING */ + { 0x0daa, 0x0e0a }, /* Thai_chochang ช THAI CHARACTER CHO CHANG */ + { 0x0dab, 0x0e0b }, /* Thai_soso ซ THAI CHARACTER SO SO */ + { 0x0dac, 0x0e0c }, /* Thai_chochoe ฌ THAI CHARACTER CHO CHOE */ + { 0x0dad, 0x0e0d }, /* Thai_yoying ญ THAI CHARACTER YO YING */ + { 0x0dae, 0x0e0e }, /* Thai_dochada ฎ THAI CHARACTER DO CHADA */ + { 0x0daf, 0x0e0f }, /* Thai_topatak ฏ THAI CHARACTER TO PATAK */ + { 0x0db0, 0x0e10 }, /* Thai_thothan ฐ THAI CHARACTER THO THAN */ + { 0x0db1, 0x0e11 }, /* Thai_thonangmontho ฑ THAI CHARACTER THO NANGMONTHO */ + { 0x0db2, 0x0e12 }, /* Thai_thophuthao ฒ THAI CHARACTER THO PHUTHAO */ + { 0x0db3, 0x0e13 }, /* Thai_nonen ณ THAI CHARACTER NO NEN */ + { 0x0db4, 0x0e14 }, /* Thai_dodek ด THAI CHARACTER DO DEK */ + { 0x0db5, 0x0e15 }, /* Thai_totao ต THAI CHARACTER TO TAO */ + { 0x0db6, 0x0e16 }, /* Thai_thothung ถ THAI CHARACTER THO THUNG */ + { 0x0db7, 0x0e17 }, /* Thai_thothahan ท THAI CHARACTER THO THAHAN */ + { 0x0db8, 0x0e18 }, /* Thai_thothong ธ THAI CHARACTER THO THONG */ + { 0x0db9, 0x0e19 }, /* Thai_nonu น THAI CHARACTER NO NU */ + { 0x0dba, 0x0e1a }, /* Thai_bobaimai บ THAI CHARACTER BO BAIMAI */ + { 0x0dbb, 0x0e1b }, /* Thai_popla ป THAI CHARACTER PO PLA */ + { 0x0dbc, 0x0e1c }, /* Thai_phophung ผ THAI CHARACTER PHO PHUNG */ + { 0x0dbd, 0x0e1d }, /* Thai_fofa ฝ THAI CHARACTER FO FA */ + { 0x0dbe, 0x0e1e }, /* Thai_phophan พ THAI CHARACTER PHO PHAN */ + { 0x0dbf, 0x0e1f }, /* Thai_fofan ฟ THAI CHARACTER FO FAN */ + { 0x0dc0, 0x0e20 }, /* Thai_phosamphao ภ THAI CHARACTER PHO SAMPHAO */ + { 0x0dc1, 0x0e21 }, /* Thai_moma ม THAI CHARACTER MO MA */ + { 0x0dc2, 0x0e22 }, /* Thai_yoyak ย THAI CHARACTER YO YAK */ + { 0x0dc3, 0x0e23 }, /* Thai_rorua ร THAI CHARACTER RO RUA */ + { 0x0dc4, 0x0e24 }, /* Thai_ru ฤ THAI CHARACTER RU */ + { 0x0dc5, 0x0e25 }, /* Thai_loling ล THAI CHARACTER LO LING */ + { 0x0dc6, 0x0e26 }, /* Thai_lu ฦ THAI CHARACTER LU */ + { 0x0dc7, 0x0e27 }, /* Thai_wowaen ว THAI CHARACTER WO WAEN */ + { 0x0dc8, 0x0e28 }, /* Thai_sosala ศ THAI CHARACTER SO SALA */ + { 0x0dc9, 0x0e29 }, /* Thai_sorusi ษ THAI CHARACTER SO RUSI */ + { 0x0dca, 0x0e2a }, /* Thai_sosua ส THAI CHARACTER SO SUA */ + { 0x0dcb, 0x0e2b }, /* Thai_hohip ห THAI CHARACTER HO HIP */ + { 0x0dcc, 0x0e2c }, /* Thai_lochula ฬ THAI CHARACTER LO CHULA */ + { 0x0dcd, 0x0e2d }, /* Thai_oang อ THAI CHARACTER O ANG */ + { 0x0dce, 0x0e2e }, /* Thai_honokhuk ฮ THAI CHARACTER HO NOKHUK */ + { 0x0dcf, 0x0e2f }, /* Thai_paiyannoi ฯ THAI CHARACTER PAIYANNOI */ + { 0x0dd0, 0x0e30 }, /* Thai_saraa ะ THAI CHARACTER SARA A */ + { 0x0dd1, 0x0e31 }, /* Thai_maihanakat ั THAI CHARACTER MAI HAN-AKAT */ + { 0x0dd2, 0x0e32 }, /* Thai_saraaa า THAI CHARACTER SARA AA */ + { 0x0dd3, 0x0e33 }, /* Thai_saraam ำ THAI CHARACTER SARA AM */ + { 0x0dd4, 0x0e34 }, /* Thai_sarai ิ THAI CHARACTER SARA I */ + { 0x0dd5, 0x0e35 }, /* Thai_saraii ี THAI CHARACTER SARA II */ + { 0x0dd6, 0x0e36 }, /* Thai_saraue ึ THAI CHARACTER SARA UE */ + { 0x0dd7, 0x0e37 }, /* Thai_sarauee ื THAI CHARACTER SARA UEE */ + { 0x0dd8, 0x0e38 }, /* Thai_sarau ุ THAI CHARACTER SARA U */ + { 0x0dd9, 0x0e39 }, /* Thai_sarauu ู THAI CHARACTER SARA UU */ + { 0x0dda, 0x0e3a }, /* Thai_phinthu ฺ THAI CHARACTER PHINTHU */ + { 0x0dde, 0x0e3e }, /* Thai_maihanakat_maitho ฾ ??? */ + { 0x0ddf, 0x0e3f }, /* Thai_baht ฿ THAI CURRENCY SYMBOL BAHT */ + { 0x0de0, 0x0e40 }, /* Thai_sarae เ THAI CHARACTER SARA E */ + { 0x0de1, 0x0e41 }, /* Thai_saraae แ THAI CHARACTER SARA AE */ + { 0x0de2, 0x0e42 }, /* Thai_sarao โ THAI CHARACTER SARA O */ + { 0x0de3, 0x0e43 }, /* Thai_saraaimaimuan ใ THAI CHARACTER SARA AI MAIMUAN */ + { 0x0de4, 0x0e44 }, /* Thai_saraaimaimalai ไ THAI CHARACTER SARA AI MAIMALAI */ + { 0x0de5, 0x0e45 }, /* Thai_lakkhangyao ๅ THAI CHARACTER LAKKHANGYAO */ + { 0x0de6, 0x0e46 }, /* Thai_maiyamok ๆ THAI CHARACTER MAIYAMOK */ + { 0x0de7, 0x0e47 }, /* Thai_maitaikhu ็ THAI CHARACTER MAITAIKHU */ + { 0x0de8, 0x0e48 }, /* Thai_maiek ่ THAI CHARACTER MAI EK */ + { 0x0de9, 0x0e49 }, /* Thai_maitho ้ THAI CHARACTER MAI THO */ + { 0x0dea, 0x0e4a }, /* Thai_maitri ๊ THAI CHARACTER MAI TRI */ + { 0x0deb, 0x0e4b }, /* Thai_maichattawa ๋ THAI CHARACTER MAI CHATTAWA */ + { 0x0dec, 0x0e4c }, /* Thai_thanthakhat ์ THAI CHARACTER THANTHAKHAT */ + { 0x0ded, 0x0e4d }, /* Thai_nikhahit ํ THAI CHARACTER NIKHAHIT */ + { 0x0df0, 0x0e50 }, /* Thai_leksun ๐ THAI DIGIT ZERO */ + { 0x0df1, 0x0e51 }, /* Thai_leknung ๑ THAI DIGIT ONE */ + { 0x0df2, 0x0e52 }, /* Thai_leksong ๒ THAI DIGIT TWO */ + { 0x0df3, 0x0e53 }, /* Thai_leksam ๓ THAI DIGIT THREE */ + { 0x0df4, 0x0e54 }, /* Thai_leksi ๔ THAI DIGIT FOUR */ + { 0x0df5, 0x0e55 }, /* Thai_lekha ๕ THAI DIGIT FIVE */ + { 0x0df6, 0x0e56 }, /* Thai_lekhok ๖ THAI DIGIT SIX */ + { 0x0df7, 0x0e57 }, /* Thai_lekchet ๗ THAI DIGIT SEVEN */ + { 0x0df8, 0x0e58 }, /* Thai_lekpaet ๘ THAI DIGIT EIGHT */ + { 0x0df9, 0x0e59 }, /* Thai_lekkao ๙ THAI DIGIT NINE */ + { 0x0ea1, 0x3131 }, /* Hangul_Kiyeog ㄱ HANGUL LETTER KIYEOK */ + { 0x0ea2, 0x3132 }, /* Hangul_SsangKiyeog ㄲ HANGUL LETTER SSANGKIYEOK */ + { 0x0ea3, 0x3133 }, /* Hangul_KiyeogSios ㄳ HANGUL LETTER KIYEOK-SIOS */ + { 0x0ea4, 0x3134 }, /* Hangul_Nieun ㄴ HANGUL LETTER NIEUN */ + { 0x0ea5, 0x3135 }, /* Hangul_NieunJieuj ㄵ HANGUL LETTER NIEUN-CIEUC */ + { 0x0ea6, 0x3136 }, /* Hangul_NieunHieuh ㄶ HANGUL LETTER NIEUN-HIEUH */ + { 0x0ea7, 0x3137 }, /* Hangul_Dikeud ㄷ HANGUL LETTER TIKEUT */ + { 0x0ea8, 0x3138 }, /* Hangul_SsangDikeud ㄸ HANGUL LETTER SSANGTIKEUT */ + { 0x0ea9, 0x3139 }, /* Hangul_Rieul ㄹ HANGUL LETTER RIEUL */ + { 0x0eaa, 0x313a }, /* Hangul_RieulKiyeog ㄺ HANGUL LETTER RIEUL-KIYEOK */ + { 0x0eab, 0x313b }, /* Hangul_RieulMieum ㄻ HANGUL LETTER RIEUL-MIEUM */ + { 0x0eac, 0x313c }, /* Hangul_RieulPieub ㄼ HANGUL LETTER RIEUL-PIEUP */ + { 0x0ead, 0x313d }, /* Hangul_RieulSios ㄽ HANGUL LETTER RIEUL-SIOS */ + { 0x0eae, 0x313e }, /* Hangul_RieulTieut ㄾ HANGUL LETTER RIEUL-THIEUTH */ + { 0x0eaf, 0x313f }, /* Hangul_RieulPhieuf ㄿ HANGUL LETTER RIEUL-PHIEUPH */ + { 0x0eb0, 0x3140 }, /* Hangul_RieulHieuh ㅀ HANGUL LETTER RIEUL-HIEUH */ + { 0x0eb1, 0x3141 }, /* Hangul_Mieum ㅁ HANGUL LETTER MIEUM */ + { 0x0eb2, 0x3142 }, /* Hangul_Pieub ㅂ HANGUL LETTER PIEUP */ + { 0x0eb3, 0x3143 }, /* Hangul_SsangPieub ㅃ HANGUL LETTER SSANGPIEUP */ + { 0x0eb4, 0x3144 }, /* Hangul_PieubSios ㅄ HANGUL LETTER PIEUP-SIOS */ + { 0x0eb5, 0x3145 }, /* Hangul_Sios ㅅ HANGUL LETTER SIOS */ + { 0x0eb6, 0x3146 }, /* Hangul_SsangSios ㅆ HANGUL LETTER SSANGSIOS */ + { 0x0eb7, 0x3147 }, /* Hangul_Ieung ㅇ HANGUL LETTER IEUNG */ + { 0x0eb8, 0x3148 }, /* Hangul_Jieuj ㅈ HANGUL LETTER CIEUC */ + { 0x0eb9, 0x3149 }, /* Hangul_SsangJieuj ㅉ HANGUL LETTER SSANGCIEUC */ + { 0x0eba, 0x314a }, /* Hangul_Cieuc ㅊ HANGUL LETTER CHIEUCH */ + { 0x0ebb, 0x314b }, /* Hangul_Khieuq ㅋ HANGUL LETTER KHIEUKH */ + { 0x0ebc, 0x314c }, /* Hangul_Tieut ㅌ HANGUL LETTER THIEUTH */ + { 0x0ebd, 0x314d }, /* Hangul_Phieuf ㅍ HANGUL LETTER PHIEUPH */ + { 0x0ebe, 0x314e }, /* Hangul_Hieuh ㅎ HANGUL LETTER HIEUH */ + { 0x0ebf, 0x314f }, /* Hangul_A ㅏ HANGUL LETTER A */ + { 0x0ec0, 0x3150 }, /* Hangul_AE ㅐ HANGUL LETTER AE */ + { 0x0ec1, 0x3151 }, /* Hangul_YA ㅑ HANGUL LETTER YA */ + { 0x0ec2, 0x3152 }, /* Hangul_YAE ㅒ HANGUL LETTER YAE */ + { 0x0ec3, 0x3153 }, /* Hangul_EO ㅓ HANGUL LETTER EO */ + { 0x0ec4, 0x3154 }, /* Hangul_E ㅔ HANGUL LETTER E */ + { 0x0ec5, 0x3155 }, /* Hangul_YEO ㅕ HANGUL LETTER YEO */ + { 0x0ec6, 0x3156 }, /* Hangul_YE ㅖ HANGUL LETTER YE */ + { 0x0ec7, 0x3157 }, /* Hangul_O ㅗ HANGUL LETTER O */ + { 0x0ec8, 0x3158 }, /* Hangul_WA ㅘ HANGUL LETTER WA */ + { 0x0ec9, 0x3159 }, /* Hangul_WAE ㅙ HANGUL LETTER WAE */ + { 0x0eca, 0x315a }, /* Hangul_OE ㅚ HANGUL LETTER OE */ + { 0x0ecb, 0x315b }, /* Hangul_YO ㅛ HANGUL LETTER YO */ + { 0x0ecc, 0x315c }, /* Hangul_U ㅜ HANGUL LETTER U */ + { 0x0ecd, 0x315d }, /* Hangul_WEO ㅝ HANGUL LETTER WEO */ + { 0x0ece, 0x315e }, /* Hangul_WE ㅞ HANGUL LETTER WE */ + { 0x0ecf, 0x315f }, /* Hangul_WI ㅟ HANGUL LETTER WI */ + { 0x0ed0, 0x3160 }, /* Hangul_YU ㅠ HANGUL LETTER YU */ + { 0x0ed1, 0x3161 }, /* Hangul_EU ㅡ HANGUL LETTER EU */ + { 0x0ed2, 0x3162 }, /* Hangul_YI ㅢ HANGUL LETTER YI */ + { 0x0ed3, 0x3163 }, /* Hangul_I ㅣ HANGUL LETTER I */ + { 0x0ed4, 0x11a8 }, /* Hangul_J_Kiyeog ᆨ HANGUL JONGSEONG KIYEOK */ + { 0x0ed5, 0x11a9 }, /* Hangul_J_SsangKiyeog ᆩ HANGUL JONGSEONG SSANGKIYEOK */ + { 0x0ed6, 0x11aa }, /* Hangul_J_KiyeogSios ᆪ HANGUL JONGSEONG KIYEOK-SIOS */ + { 0x0ed7, 0x11ab }, /* Hangul_J_Nieun ᆫ HANGUL JONGSEONG NIEUN */ + { 0x0ed8, 0x11ac }, /* Hangul_J_NieunJieuj ᆬ HANGUL JONGSEONG NIEUN-CIEUC */ + { 0x0ed9, 0x11ad }, /* Hangul_J_NieunHieuh ᆭ HANGUL JONGSEONG NIEUN-HIEUH */ + { 0x0eda, 0x11ae }, /* Hangul_J_Dikeud ᆮ HANGUL JONGSEONG TIKEUT */ + { 0x0edb, 0x11af }, /* Hangul_J_Rieul ᆯ HANGUL JONGSEONG RIEUL */ + { 0x0edc, 0x11b0 }, /* Hangul_J_RieulKiyeog ᆰ HANGUL JONGSEONG RIEUL-KIYEOK */ + { 0x0edd, 0x11b1 }, /* Hangul_J_RieulMieum ᆱ HANGUL JONGSEONG RIEUL-MIEUM */ + { 0x0ede, 0x11b2 }, /* Hangul_J_RieulPieub ᆲ HANGUL JONGSEONG RIEUL-PIEUP */ + { 0x0edf, 0x11b3 }, /* Hangul_J_RieulSios ᆳ HANGUL JONGSEONG RIEUL-SIOS */ + { 0x0ee0, 0x11b4 }, /* Hangul_J_RieulTieut ᆴ HANGUL JONGSEONG RIEUL-THIEUTH */ + { 0x0ee1, 0x11b5 }, /* Hangul_J_RieulPhieuf ᆵ HANGUL JONGSEONG RIEUL-PHIEUPH */ + { 0x0ee2, 0x11b6 }, /* Hangul_J_RieulHieuh ᆶ HANGUL JONGSEONG RIEUL-HIEUH */ + { 0x0ee3, 0x11b7 }, /* Hangul_J_Mieum ᆷ HANGUL JONGSEONG MIEUM */ + { 0x0ee4, 0x11b8 }, /* Hangul_J_Pieub ᆸ HANGUL JONGSEONG PIEUP */ + { 0x0ee5, 0x11b9 }, /* Hangul_J_PieubSios ᆹ HANGUL JONGSEONG PIEUP-SIOS */ + { 0x0ee6, 0x11ba }, /* Hangul_J_Sios ᆺ HANGUL JONGSEONG SIOS */ + { 0x0ee7, 0x11bb }, /* Hangul_J_SsangSios ᆻ HANGUL JONGSEONG SSANGSIOS */ + { 0x0ee8, 0x11bc }, /* Hangul_J_Ieung ᆼ HANGUL JONGSEONG IEUNG */ + { 0x0ee9, 0x11bd }, /* Hangul_J_Jieuj ᆽ HANGUL JONGSEONG CIEUC */ + { 0x0eea, 0x11be }, /* Hangul_J_Cieuc ᆾ HANGUL JONGSEONG CHIEUCH */ + { 0x0eeb, 0x11bf }, /* Hangul_J_Khieuq ᆿ HANGUL JONGSEONG KHIEUKH */ + { 0x0eec, 0x11c0 }, /* Hangul_J_Tieut ᇀ HANGUL JONGSEONG THIEUTH */ + { 0x0eed, 0x11c1 }, /* Hangul_J_Phieuf ᇁ HANGUL JONGSEONG PHIEUPH */ + { 0x0eee, 0x11c2 }, /* Hangul_J_Hieuh ᇂ HANGUL JONGSEONG HIEUH */ + { 0x0eef, 0x316d }, /* Hangul_RieulYeorinHieuh ㅭ HANGUL LETTER RIEUL-YEORINHIEUH */ + { 0x0ef0, 0x3171 }, /* Hangul_SunkyeongeumMieum ㅱ HANGUL LETTER KAPYEOUNMIEUM */ + { 0x0ef1, 0x3178 }, /* Hangul_SunkyeongeumPieub ㅸ HANGUL LETTER KAPYEOUNPIEUP */ + { 0x0ef2, 0x317f }, /* Hangul_PanSios ㅿ HANGUL LETTER PANSIOS */ +/* 0x0ef3 Hangul_KkogjiDalrinIeung ? ??? */ + { 0x0ef4, 0x3184 }, /* Hangul_SunkyeongeumPhieuf ㆄ HANGUL LETTER KAPYEOUNPHIEUPH */ + { 0x0ef5, 0x3186 }, /* Hangul_YeorinHieuh ㆆ HANGUL LETTER YEORINHIEUH */ + { 0x0ef6, 0x318d }, /* Hangul_AraeA ㆍ HANGUL LETTER ARAEA */ + { 0x0ef7, 0x318e }, /* Hangul_AraeAE ㆎ HANGUL LETTER ARAEAE */ + { 0x0ef8, 0x11eb }, /* Hangul_J_PanSios ᇫ HANGUL JONGSEONG PANSIOS */ + { 0x0ef9, 0x11f0 }, /* Hangul_J_KkogjiDalrinIeung ᇰ HANGUL JONGSEONG YESIEUNG */ + { 0x0efa, 0x11f9 }, /* Hangul_J_YeorinHieuh ᇹ HANGUL JONGSEONG YEORINHIEUH */ + { 0x0eff, 0x20a9 }, /* Korean_Won ₩ WON SIGN */ + { 0x13a4, 0x20ac }, /* Euro € EURO SIGN */ + { 0x13bc, 0x0152 }, /* OE Œ LATIN CAPITAL LIGATURE OE */ + { 0x13bd, 0x0153 }, /* oe œ LATIN SMALL LIGATURE OE */ + { 0x13be, 0x0178 }, /* Ydiaeresis Ÿ LATIN CAPITAL LETTER Y WITH DIAERESIS */ + { 0x20a0, 0x20a0 }, /* EcuSign ₠ EURO-CURRENCY SIGN */ + { 0x20a1, 0x20a1 }, /* ColonSign ₡ COLON SIGN */ + { 0x20a2, 0x20a2 }, /* CruzeiroSign ₢ CRUZEIRO SIGN */ + { 0x20a3, 0x20a3 }, /* FFrancSign ₣ FRENCH FRANC SIGN */ + { 0x20a4, 0x20a4 }, /* LiraSign ₤ LIRA SIGN */ + { 0x20a5, 0x20a5 }, /* MillSign ₥ MILL SIGN */ + { 0x20a6, 0x20a6 }, /* NairaSign ₦ NAIRA SIGN */ + { 0x20a7, 0x20a7 }, /* PesetaSign ₧ PESETA SIGN */ + { 0x20a8, 0x20a8 }, /* RupeeSign ₨ RUPEE SIGN */ + { 0x20a9, 0x20a9 }, /* WonSign ₩ WON SIGN */ + { 0x20aa, 0x20aa }, /* NewSheqelSign ₪ NEW SHEQEL SIGN */ + { 0x20ab, 0x20ab }, /* DongSign ₫ DONG SIGN */ + { 0x20ac, 0x20ac }, /* EuroSign € EURO SIGN */ +}; + +/* binary search with range check */ +static uint32_t +bin_search(const struct codepair *table, size_t length, xkb_keysym_t keysym) +{ + size_t first = 0; + size_t last = length; + + if (keysym < table[0].keysym || keysym > table[length].keysym) + return 0; + + /* binary search in table */ + while (last >= first) { + size_t mid = (first + last) / 2; + if (table[mid].keysym < keysym) + first = mid + 1; + else if (table[mid].keysym > keysym) + last = mid - 1; + else /* found it */ + return table[mid].ucs; + } + + /* no matching Unicode value found in table */ + return 0; +} + +XKB_EXPORT uint32_t +xkb_keysym_to_utf32(xkb_keysym_t keysym) +{ + /* first check for Latin-1 characters (1:1 mapping) */ + if ((keysym >= 0x0020 && keysym <= 0x007e) || + (keysym >= 0x00a0 && keysym <= 0x00ff)) + return keysym; + + /* patch encoding botch */ + if (keysym == XKB_KEY_KP_Space) + return XKB_KEY_space & 0x7f; + + /* special keysyms */ + if ((keysym >= XKB_KEY_BackSpace && keysym <= XKB_KEY_Clear) || + (keysym >= XKB_KEY_KP_Multiply && keysym <= XKB_KEY_KP_9) || + keysym == XKB_KEY_Return || keysym == XKB_KEY_Escape || + keysym == XKB_KEY_Delete || keysym == XKB_KEY_KP_Tab || + keysym == XKB_KEY_KP_Enter || keysym == XKB_KEY_KP_Equal) + return keysym & 0x7f; + + /* also check for directly encoded 24-bit UCS characters */ + if ((keysym & 0xff000000) == 0x01000000) + return keysym & 0x00ffffff; + + /* search main table */ + return bin_search(keysymtab, ARRAY_SIZE(keysymtab) - 1, keysym); +} + +/* + * Copyright © 2012 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Rob Bradford + */ + +XKB_EXPORT int +xkb_keysym_to_utf8(xkb_keysym_t keysym, char *buffer, size_t size) +{ + uint32_t codepoint; + + if (size < 7) + return -1; + + codepoint = xkb_keysym_to_utf32(keysym); + + if (codepoint == 0) + return 0; + + return utf32_to_utf8(codepoint, buffer); +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c new file mode 100644 index 0000000..db0e973 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.c @@ -0,0 +1,762 @@ +/* + * Copyright 1985, 1987, 1990, 1998 The Open Group + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the names of the authors or their + * institutions shall not be used in advertising or otherwise to promote the + * sale, use or other dealings in this Software without prior written + * authorization from the authors. + */ + +/* + * Copyright © 2009 Dan Nicholson + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include +#include "xkbcommon/xkbcommon.h" +#include "utils.h" +#include "keysym.h" +#include "ks_tables.h" + +static inline const char * +get_name(const struct name_keysym *entry) +{ + return keysym_names + entry->offset; +} + +static int +compare_by_keysym(const void *a, const void *b) +{ + const xkb_keysym_t *key = a; + const struct name_keysym *entry = b; + if (*key < entry->keysym) + return -1; + if (*key > entry->keysym) + return 1; + return 0; +} + +static int +compare_by_name(const void *a, const void *b) +{ + const char *key = a; + const struct name_keysym *entry = b; + return strcasecmp(key, get_name(entry)); +} + +XKB_EXPORT int +xkb_keysym_get_name(xkb_keysym_t ks, char *buffer, size_t size) +{ + const struct name_keysym *entry; + + if ((ks & ((unsigned long) ~0x1fffffff)) != 0) { + snprintf(buffer, size, "Invalid"); + return -1; + } + + entry = bsearch(&ks, keysym_to_name, + ARRAY_SIZE(keysym_to_name), + sizeof(*keysym_to_name), + compare_by_keysym); + if (entry) + return snprintf(buffer, size, "%s", get_name(entry)); + + /* Unnamed Unicode codepoint. */ + if (ks >= 0x01000100 && ks <= 0x0110ffff) { + const int width = (ks & 0xff0000UL) ? 8 : 4; + return snprintf(buffer, size, "U%0*lX", width, ks & 0xffffffUL); + } + + /* Unnamed, non-Unicode, symbol (shouldn't generally happen). */ + return snprintf(buffer, size, "0x%08x", ks); +} + +/* + * Find the correct keysym if one case-insensitive match is given. + * + * The name_to_keysym table is sorted by strcasecmp(). So bsearch() may return + * _any_ of all possible case-insensitive duplicates. This function searches the + * returned entry @entry, all previous and all next entries that match by + * case-insensitive comparison and returns the exact match to @name. If @icase + * is true, then this returns the best case-insensitive match instead of a + * correct match. + * The "best" case-insensitive match is the lower-case keysym which we find with + * the help of xkb_keysym_is_lower(). + * The only keysyms that only differ by letter-case are keysyms that are + * available as lower-case and upper-case variant (like KEY_a and KEY_A). So + * returning the first lower-case match is enough in this case. + */ +static const struct name_keysym * +find_sym(const struct name_keysym *entry, const char *name, bool icase) +{ + const struct name_keysym *iter, *last; + size_t len = ARRAY_SIZE(name_to_keysym); + + if (!entry) + return NULL; + + if (!icase && strcmp(get_name(entry), name) == 0) + return entry; + if (icase && xkb_keysym_is_lower(entry->keysym)) + return entry; + + for (iter = entry - 1; iter >= name_to_keysym; --iter) { + if (!icase && strcmp(get_name(iter), name) == 0) + return iter; + if (strcasecmp(get_name(iter), get_name(entry)) != 0) + break; + if (icase && xkb_keysym_is_lower(iter->keysym)) + return iter; + } + + last = name_to_keysym + len; + for (iter = entry + 1; iter < last; ++iter) { + if (!icase && strcmp(get_name(iter), name) == 0) + return iter; + if (strcasecmp(get_name(iter), get_name(entry)) != 0) + break; + if (icase && xkb_keysym_is_lower(iter->keysym)) + return iter; + } + + if (icase) + return entry; + return NULL; +} + +XKB_EXPORT xkb_keysym_t +xkb_keysym_from_name(const char *s, enum xkb_keysym_flags flags) +{ + const struct name_keysym *entry; + char *tmp; + xkb_keysym_t val; + bool icase = (flags & XKB_KEYSYM_CASE_INSENSITIVE); + + if (flags & ~XKB_KEYSYM_CASE_INSENSITIVE) + return XKB_KEY_NoSymbol; + + entry = bsearch(s, name_to_keysym, + ARRAY_SIZE(name_to_keysym), + sizeof(*name_to_keysym), + compare_by_name); + entry = find_sym(entry, s, icase); + if (entry) + return entry->keysym; + + if (*s == 'U' || (icase && *s == 'u')) { + val = strtoul(&s[1], &tmp, 16); + if (tmp && *tmp != '\0') + return XKB_KEY_NoSymbol; + + if (val < 0x20 || (val > 0x7e && val < 0xa0)) + return XKB_KEY_NoSymbol; + if (val < 0x100) + return val; + if (val > 0x10ffff) + return XKB_KEY_NoSymbol; + return val | 0x01000000; + } + else if (s[0] == '0' && (s[1] == 'x' || (icase && s[1] == 'X'))) { + val = strtoul(&s[2], &tmp, 16); + if (tmp && *tmp != '\0') + return XKB_KEY_NoSymbol; + + return val; + } + + /* Stupid inconsistency between the headers and XKeysymDB: the former has + * no separating underscore, while some XF86* syms in the latter did. + * As a last ditch effort, try without. */ + if (strncmp(s, "XF86_", 5) == 0 || + (icase && strncasecmp(s, "XF86_", 5) == 0)) { + xkb_keysym_t ret; + tmp = strdup(s); + if (!tmp) + return XKB_KEY_NoSymbol; + memmove(&tmp[4], &tmp[5], strlen(s) - 5 + 1); + ret = xkb_keysym_from_name(tmp, flags); + free(tmp); + return ret; + } + + return XKB_KEY_NoSymbol; +} + +bool +xkb_keysym_is_keypad(xkb_keysym_t keysym) +{ + return keysym >= XKB_KEY_KP_Space && keysym <= XKB_KEY_KP_Equal; +} + + +bool +xkb_keysym_is_modifier(xkb_keysym_t keysym) +{ + return + (keysym >= XKB_KEY_Shift_L && keysym <= XKB_KEY_Hyper_R) || + /* libX11 only goes upto XKB_KEY_ISO_Level5_Lock. */ + (keysym >= XKB_KEY_ISO_Lock && keysym <= XKB_KEY_ISO_Last_Group_Lock) || + keysym == XKB_KEY_Mode_switch || + keysym == XKB_KEY_Num_Lock; +} + +static void +XConvertCase(xkb_keysym_t sym, xkb_keysym_t *lower, xkb_keysym_t *upper); + +bool +xkb_keysym_is_lower(xkb_keysym_t ks) +{ + xkb_keysym_t lower, upper; + + XConvertCase(ks, &lower, &upper); + + if (lower == upper) + return false; + + return (ks == lower ? true : false); +} + +bool +xkb_keysym_is_upper(xkb_keysym_t ks) +{ + xkb_keysym_t lower, upper; + + XConvertCase(ks, &lower, &upper); + + if (lower == upper) + return false; + + return (ks == upper ? true : false); +} + +xkb_keysym_t +xkb_keysym_to_lower(xkb_keysym_t ks) +{ + xkb_keysym_t lower, upper; + + XConvertCase(ks, &lower, &upper); + + return lower; +} + +xkb_keysym_t +xkb_keysym_to_upper(xkb_keysym_t ks) +{ + xkb_keysym_t lower, upper; + + XConvertCase(ks, &lower, &upper); + + return upper; +} + +/* + * The following is copied verbatim from libX11:src/KeyBind.c, commit + * d45b3fc19fbe95c41afc4e51d768df6d42332010, with the following changes: + * - unsigned -> uint32_t + * - unsigend short -> uint16_t + * - s/XK_/XKB_KEY_ + * + * XXX: If newlocale() and iswlower_l()/iswupper_l() interface ever + * become portable, we should use that in conjunction with + * xkb_keysym_to_utf32(), instead of all this stuff. We should + * be sure to give the same results as libX11, though, and be + * locale independent; this information is used by xkbcomp to + * find the automatic type to assign to key groups. + */ + +static void +UCSConvertCase(uint32_t code, xkb_keysym_t *lower, xkb_keysym_t *upper) +{ + /* Case conversion for UCS, as in Unicode Data version 4.0.0 */ + /* NB: Only converts simple one-to-one mappings. */ + + /* Tables are used where they take less space than */ + /* the code to work out the mappings. Zero values mean */ + /* undefined code points. */ + + static uint16_t const IPAExt_upper_mapping[] = { /* part only */ + 0x0181, 0x0186, 0x0255, 0x0189, 0x018A, + 0x0258, 0x018F, 0x025A, 0x0190, 0x025C, 0x025D, 0x025E, 0x025F, + 0x0193, 0x0261, 0x0262, 0x0194, 0x0264, 0x0265, 0x0266, 0x0267, + 0x0197, 0x0196, 0x026A, 0x026B, 0x026C, 0x026D, 0x026E, 0x019C, + 0x0270, 0x0271, 0x019D, 0x0273, 0x0274, 0x019F, 0x0276, 0x0277, + 0x0278, 0x0279, 0x027A, 0x027B, 0x027C, 0x027D, 0x027E, 0x027F, + 0x01A6, 0x0281, 0x0282, 0x01A9, 0x0284, 0x0285, 0x0286, 0x0287, + 0x01AE, 0x0289, 0x01B1, 0x01B2, 0x028C, 0x028D, 0x028E, 0x028F, + 0x0290, 0x0291, 0x01B7 + }; + + static uint16_t const LatinExtB_upper_mapping[] = { /* first part only */ + 0x0180, 0x0181, 0x0182, 0x0182, 0x0184, 0x0184, 0x0186, 0x0187, + 0x0187, 0x0189, 0x018A, 0x018B, 0x018B, 0x018D, 0x018E, 0x018F, + 0x0190, 0x0191, 0x0191, 0x0193, 0x0194, 0x01F6, 0x0196, 0x0197, + 0x0198, 0x0198, 0x019A, 0x019B, 0x019C, 0x019D, 0x0220, 0x019F, + 0x01A0, 0x01A0, 0x01A2, 0x01A2, 0x01A4, 0x01A4, 0x01A6, 0x01A7, + 0x01A7, 0x01A9, 0x01AA, 0x01AB, 0x01AC, 0x01AC, 0x01AE, 0x01AF, + 0x01AF, 0x01B1, 0x01B2, 0x01B3, 0x01B3, 0x01B5, 0x01B5, 0x01B7, + 0x01B8, 0x01B8, 0x01BA, 0x01BB, 0x01BC, 0x01BC, 0x01BE, 0x01F7, + 0x01C0, 0x01C1, 0x01C2, 0x01C3, 0x01C4, 0x01C4, 0x01C4, 0x01C7, + 0x01C7, 0x01C7, 0x01CA, 0x01CA, 0x01CA + }; + + static uint16_t const LatinExtB_lower_mapping[] = { /* first part only */ + 0x0180, 0x0253, 0x0183, 0x0183, 0x0185, 0x0185, 0x0254, 0x0188, + 0x0188, 0x0256, 0x0257, 0x018C, 0x018C, 0x018D, 0x01DD, 0x0259, + 0x025B, 0x0192, 0x0192, 0x0260, 0x0263, 0x0195, 0x0269, 0x0268, + 0x0199, 0x0199, 0x019A, 0x019B, 0x026F, 0x0272, 0x019E, 0x0275, + 0x01A1, 0x01A1, 0x01A3, 0x01A3, 0x01A5, 0x01A5, 0x0280, 0x01A8, + 0x01A8, 0x0283, 0x01AA, 0x01AB, 0x01AD, 0x01AD, 0x0288, 0x01B0, + 0x01B0, 0x028A, 0x028B, 0x01B4, 0x01B4, 0x01B6, 0x01B6, 0x0292, + 0x01B9, 0x01B9, 0x01BA, 0x01BB, 0x01BD, 0x01BD, 0x01BE, 0x01BF, + 0x01C0, 0x01C1, 0x01C2, 0x01C3, 0x01C6, 0x01C6, 0x01C6, 0x01C9, + 0x01C9, 0x01C9, 0x01CC, 0x01CC, 0x01CC + }; + + static uint16_t const Greek_upper_mapping[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0374, 0x0375, 0x0000, 0x0000, + 0x0000, 0x0000, 0x037A, 0x0000, 0x0000, 0x0000, 0x037E, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0384, 0x0385, 0x0386, 0x0387, + 0x0388, 0x0389, 0x038A, 0x0000, 0x038C, 0x0000, 0x038E, 0x038F, + 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, + 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, + 0x03A0, 0x03A1, 0x0000, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, + 0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x0386, 0x0388, 0x0389, 0x038A, + 0x03B0, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, + 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, + 0x03A0, 0x03A1, 0x03A3, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, + 0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x038C, 0x038E, 0x038F, 0x0000, + 0x0392, 0x0398, 0x03D2, 0x03D3, 0x03D4, 0x03A6, 0x03A0, 0x03D7, + 0x03D8, 0x03D8, 0x03DA, 0x03DA, 0x03DC, 0x03DC, 0x03DE, 0x03DE, + 0x03E0, 0x03E0, 0x03E2, 0x03E2, 0x03E4, 0x03E4, 0x03E6, 0x03E6, + 0x03E8, 0x03E8, 0x03EA, 0x03EA, 0x03EC, 0x03EC, 0x03EE, 0x03EE, + 0x039A, 0x03A1, 0x03F9, 0x03F3, 0x03F4, 0x0395, 0x03F6, 0x03F7, + 0x03F7, 0x03F9, 0x03FA, 0x03FA, 0x0000, 0x0000, 0x0000, 0x0000 + }; + + static uint16_t const Greek_lower_mapping[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0374, 0x0375, 0x0000, 0x0000, + 0x0000, 0x0000, 0x037A, 0x0000, 0x0000, 0x0000, 0x037E, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0384, 0x0385, 0x03AC, 0x0387, + 0x03AD, 0x03AE, 0x03AF, 0x0000, 0x03CC, 0x0000, 0x03CD, 0x03CE, + 0x0390, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, + 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, + 0x03C0, 0x03C1, 0x0000, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, + 0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03AC, 0x03AD, 0x03AE, 0x03AF, + 0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, + 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, + 0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, + 0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0x0000, + 0x03D0, 0x03D1, 0x03D2, 0x03D3, 0x03D4, 0x03D5, 0x03D6, 0x03D7, + 0x03D9, 0x03D9, 0x03DB, 0x03DB, 0x03DD, 0x03DD, 0x03DF, 0x03DF, + 0x03E1, 0x03E1, 0x03E3, 0x03E3, 0x03E5, 0x03E5, 0x03E7, 0x03E7, + 0x03E9, 0x03E9, 0x03EB, 0x03EB, 0x03ED, 0x03ED, 0x03EF, 0x03EF, + 0x03F0, 0x03F1, 0x03F2, 0x03F3, 0x03B8, 0x03F5, 0x03F6, 0x03F8, + 0x03F8, 0x03F2, 0x03FB, 0x03FB, 0x0000, 0x0000, 0x0000, 0x0000 + }; + + static uint16_t const GreekExt_lower_mapping[] = { + 0x1F00, 0x1F01, 0x1F02, 0x1F03, 0x1F04, 0x1F05, 0x1F06, 0x1F07, + 0x1F00, 0x1F01, 0x1F02, 0x1F03, 0x1F04, 0x1F05, 0x1F06, 0x1F07, + 0x1F10, 0x1F11, 0x1F12, 0x1F13, 0x1F14, 0x1F15, 0x0000, 0x0000, + 0x1F10, 0x1F11, 0x1F12, 0x1F13, 0x1F14, 0x1F15, 0x0000, 0x0000, + 0x1F20, 0x1F21, 0x1F22, 0x1F23, 0x1F24, 0x1F25, 0x1F26, 0x1F27, + 0x1F20, 0x1F21, 0x1F22, 0x1F23, 0x1F24, 0x1F25, 0x1F26, 0x1F27, + 0x1F30, 0x1F31, 0x1F32, 0x1F33, 0x1F34, 0x1F35, 0x1F36, 0x1F37, + 0x1F30, 0x1F31, 0x1F32, 0x1F33, 0x1F34, 0x1F35, 0x1F36, 0x1F37, + 0x1F40, 0x1F41, 0x1F42, 0x1F43, 0x1F44, 0x1F45, 0x0000, 0x0000, + 0x1F40, 0x1F41, 0x1F42, 0x1F43, 0x1F44, 0x1F45, 0x0000, 0x0000, + 0x1F50, 0x1F51, 0x1F52, 0x1F53, 0x1F54, 0x1F55, 0x1F56, 0x1F57, + 0x0000, 0x1F51, 0x0000, 0x1F53, 0x0000, 0x1F55, 0x0000, 0x1F57, + 0x1F60, 0x1F61, 0x1F62, 0x1F63, 0x1F64, 0x1F65, 0x1F66, 0x1F67, + 0x1F60, 0x1F61, 0x1F62, 0x1F63, 0x1F64, 0x1F65, 0x1F66, 0x1F67, + 0x1F70, 0x1F71, 0x1F72, 0x1F73, 0x1F74, 0x1F75, 0x1F76, 0x1F77, + 0x1F78, 0x1F79, 0x1F7A, 0x1F7B, 0x1F7C, 0x1F7D, 0x0000, 0x0000, + 0x1F80, 0x1F81, 0x1F82, 0x1F83, 0x1F84, 0x1F85, 0x1F86, 0x1F87, + 0x1F80, 0x1F81, 0x1F82, 0x1F83, 0x1F84, 0x1F85, 0x1F86, 0x1F87, + 0x1F90, 0x1F91, 0x1F92, 0x1F93, 0x1F94, 0x1F95, 0x1F96, 0x1F97, + 0x1F90, 0x1F91, 0x1F92, 0x1F93, 0x1F94, 0x1F95, 0x1F96, 0x1F97, + 0x1FA0, 0x1FA1, 0x1FA2, 0x1FA3, 0x1FA4, 0x1FA5, 0x1FA6, 0x1FA7, + 0x1FA0, 0x1FA1, 0x1FA2, 0x1FA3, 0x1FA4, 0x1FA5, 0x1FA6, 0x1FA7, + 0x1FB0, 0x1FB1, 0x1FB2, 0x1FB3, 0x1FB4, 0x0000, 0x1FB6, 0x1FB7, + 0x1FB0, 0x1FB1, 0x1F70, 0x1F71, 0x1FB3, 0x1FBD, 0x1FBE, 0x1FBF, + 0x1FC0, 0x1FC1, 0x1FC2, 0x1FC3, 0x1FC4, 0x0000, 0x1FC6, 0x1FC7, + 0x1F72, 0x1F73, 0x1F74, 0x1F75, 0x1FC3, 0x1FCD, 0x1FCE, 0x1FCF, + 0x1FD0, 0x1FD1, 0x1FD2, 0x1FD3, 0x0000, 0x0000, 0x1FD6, 0x1FD7, + 0x1FD0, 0x1FD1, 0x1F76, 0x1F77, 0x0000, 0x1FDD, 0x1FDE, 0x1FDF, + 0x1FE0, 0x1FE1, 0x1FE2, 0x1FE3, 0x1FE4, 0x1FE5, 0x1FE6, 0x1FE7, + 0x1FE0, 0x1FE1, 0x1F7A, 0x1F7B, 0x1FE5, 0x1FED, 0x1FEE, 0x1FEF, + 0x0000, 0x0000, 0x1FF2, 0x1FF3, 0x1FF4, 0x0000, 0x1FF6, 0x1FF7, + 0x1F78, 0x1F79, 0x1F7C, 0x1F7D, 0x1FF3, 0x1FFD, 0x1FFE, 0x0000 + }; + + static uint16_t const GreekExt_upper_mapping[] = { + 0x1F08, 0x1F09, 0x1F0A, 0x1F0B, 0x1F0C, 0x1F0D, 0x1F0E, 0x1F0F, + 0x1F08, 0x1F09, 0x1F0A, 0x1F0B, 0x1F0C, 0x1F0D, 0x1F0E, 0x1F0F, + 0x1F18, 0x1F19, 0x1F1A, 0x1F1B, 0x1F1C, 0x1F1D, 0x0000, 0x0000, + 0x1F18, 0x1F19, 0x1F1A, 0x1F1B, 0x1F1C, 0x1F1D, 0x0000, 0x0000, + 0x1F28, 0x1F29, 0x1F2A, 0x1F2B, 0x1F2C, 0x1F2D, 0x1F2E, 0x1F2F, + 0x1F28, 0x1F29, 0x1F2A, 0x1F2B, 0x1F2C, 0x1F2D, 0x1F2E, 0x1F2F, + 0x1F38, 0x1F39, 0x1F3A, 0x1F3B, 0x1F3C, 0x1F3D, 0x1F3E, 0x1F3F, + 0x1F38, 0x1F39, 0x1F3A, 0x1F3B, 0x1F3C, 0x1F3D, 0x1F3E, 0x1F3F, + 0x1F48, 0x1F49, 0x1F4A, 0x1F4B, 0x1F4C, 0x1F4D, 0x0000, 0x0000, + 0x1F48, 0x1F49, 0x1F4A, 0x1F4B, 0x1F4C, 0x1F4D, 0x0000, 0x0000, + 0x1F50, 0x1F59, 0x1F52, 0x1F5B, 0x1F54, 0x1F5D, 0x1F56, 0x1F5F, + 0x0000, 0x1F59, 0x0000, 0x1F5B, 0x0000, 0x1F5D, 0x0000, 0x1F5F, + 0x1F68, 0x1F69, 0x1F6A, 0x1F6B, 0x1F6C, 0x1F6D, 0x1F6E, 0x1F6F, + 0x1F68, 0x1F69, 0x1F6A, 0x1F6B, 0x1F6C, 0x1F6D, 0x1F6E, 0x1F6F, + 0x1FBA, 0x1FBB, 0x1FC8, 0x1FC9, 0x1FCA, 0x1FCB, 0x1FDA, 0x1FDB, + 0x1FF8, 0x1FF9, 0x1FEA, 0x1FEB, 0x1FFA, 0x1FFB, 0x0000, 0x0000, + 0x1F88, 0x1F89, 0x1F8A, 0x1F8B, 0x1F8C, 0x1F8D, 0x1F8E, 0x1F8F, + 0x1F88, 0x1F89, 0x1F8A, 0x1F8B, 0x1F8C, 0x1F8D, 0x1F8E, 0x1F8F, + 0x1F98, 0x1F99, 0x1F9A, 0x1F9B, 0x1F9C, 0x1F9D, 0x1F9E, 0x1F9F, + 0x1F98, 0x1F99, 0x1F9A, 0x1F9B, 0x1F9C, 0x1F9D, 0x1F9E, 0x1F9F, + 0x1FA8, 0x1FA9, 0x1FAA, 0x1FAB, 0x1FAC, 0x1FAD, 0x1FAE, 0x1FAF, + 0x1FA8, 0x1FA9, 0x1FAA, 0x1FAB, 0x1FAC, 0x1FAD, 0x1FAE, 0x1FAF, + 0x1FB8, 0x1FB9, 0x1FB2, 0x1FBC, 0x1FB4, 0x0000, 0x1FB6, 0x1FB7, + 0x1FB8, 0x1FB9, 0x1FBA, 0x1FBB, 0x1FBC, 0x1FBD, 0x0399, 0x1FBF, + 0x1FC0, 0x1FC1, 0x1FC2, 0x1FCC, 0x1FC4, 0x0000, 0x1FC6, 0x1FC7, + 0x1FC8, 0x1FC9, 0x1FCA, 0x1FCB, 0x1FCC, 0x1FCD, 0x1FCE, 0x1FCF, + 0x1FD8, 0x1FD9, 0x1FD2, 0x1FD3, 0x0000, 0x0000, 0x1FD6, 0x1FD7, + 0x1FD8, 0x1FD9, 0x1FDA, 0x1FDB, 0x0000, 0x1FDD, 0x1FDE, 0x1FDF, + 0x1FE8, 0x1FE9, 0x1FE2, 0x1FE3, 0x1FE4, 0x1FEC, 0x1FE6, 0x1FE7, + 0x1FE8, 0x1FE9, 0x1FEA, 0x1FEB, 0x1FEC, 0x1FED, 0x1FEE, 0x1FEF, + 0x0000, 0x0000, 0x1FF2, 0x1FFC, 0x1FF4, 0x0000, 0x1FF6, 0x1FF7, + 0x1FF8, 0x1FF9, 0x1FFA, 0x1FFB, 0x1FFC, 0x1FFD, 0x1FFE, 0x0000 + }; + + *lower = code; + *upper = code; + + /* Basic Latin and Latin-1 Supplement, U+0000 to U+00FF */ + if (code <= 0x00ff) { + if (code >= 0x0041 && code <= 0x005a) /* A-Z */ + *lower += 0x20; + else if (code >= 0x0061 && code <= 0x007a) /* a-z */ + *upper -= 0x20; + else if ( (code >= 0x00c0 && code <= 0x00d6) || + (code >= 0x00d8 && code <= 0x00de) ) + *lower += 0x20; + else if ( (code >= 0x00e0 && code <= 0x00f6) || + (code >= 0x00f8 && code <= 0x00fe) ) + *upper -= 0x20; + else if (code == 0x00ff) /* y with diaeresis */ + *upper = 0x0178; + else if (code == 0x00b5) /* micro sign */ + *upper = 0x039c; + return; + } + + /* Latin Extended-A, U+0100 to U+017F */ + if (code >= 0x0100 && code <= 0x017f) { + if ( (code >= 0x0100 && code <= 0x012f) || + (code >= 0x0132 && code <= 0x0137) || + (code >= 0x014a && code <= 0x0177) ) { + *upper = code & ~1; + *lower = code | 1; + } + else if ( (code >= 0x0139 && code <= 0x0148) || + (code >= 0x0179 && code <= 0x017e) ) { + if (code & 1) + *lower += 1; + else + *upper -= 1; + } + else if (code == 0x0130) + *lower = 0x0069; + else if (code == 0x0131) + *upper = 0x0049; + else if (code == 0x0178) + *lower = 0x00ff; + else if (code == 0x017f) + *upper = 0x0053; + return; + } + + /* Latin Extended-B, U+0180 to U+024F */ + if (code >= 0x0180 && code <= 0x024f) { + if (code >= 0x01cd && code <= 0x01dc) { + if (code & 1) + *lower += 1; + else + *upper -= 1; + } + else if ( (code >= 0x01de && code <= 0x01ef) || + (code >= 0x01f4 && code <= 0x01f5) || + (code >= 0x01f8 && code <= 0x021f) || + (code >= 0x0222 && code <= 0x0233) ) { + *lower |= 1; + *upper &= ~1; + } + else if (code >= 0x0180 && code <= 0x01cc) { + *lower = LatinExtB_lower_mapping[code - 0x0180]; + *upper = LatinExtB_upper_mapping[code - 0x0180]; + } + else if (code == 0x01dd) + *upper = 0x018e; + else if (code == 0x01f1 || code == 0x01f2) { + *lower = 0x01f3; + *upper = 0x01f1; + } + else if (code == 0x01f3) + *upper = 0x01f1; + else if (code == 0x01f6) + *lower = 0x0195; + else if (code == 0x01f7) + *lower = 0x01bf; + else if (code == 0x0220) + *lower = 0x019e; + return; + } + + /* IPA Extensions, U+0250 to U+02AF */ + if (code >= 0x0253 && code <= 0x0292) { + *upper = IPAExt_upper_mapping[code - 0x0253]; + } + + /* Combining Diacritical Marks, U+0300 to U+036F */ + if (code == 0x0345) { + *upper = 0x0399; + } + + /* Greek and Coptic, U+0370 to U+03FF */ + if (code >= 0x0370 && code <= 0x03ff) { + *lower = Greek_lower_mapping[code - 0x0370]; + *upper = Greek_upper_mapping[code - 0x0370]; + if (*upper == 0) + *upper = code; + if (*lower == 0) + *lower = code; + } + + /* Cyrillic and Cyrillic Supplementary, U+0400 to U+052F */ + if ( (code >= 0x0400 && code <= 0x04ff) || + (code >= 0x0500 && code <= 0x052f) ) { + if (code >= 0x0400 && code <= 0x040f) + *lower += 0x50; + else if (code >= 0x0410 && code <= 0x042f) + *lower += 0x20; + else if (code >= 0x0430 && code <= 0x044f) + *upper -= 0x20; + else if (code >= 0x0450 && code <= 0x045f) + *upper -= 0x50; + else if ( (code >= 0x0460 && code <= 0x0481) || + (code >= 0x048a && code <= 0x04bf) || + (code >= 0x04d0 && code <= 0x04f5) || + (code >= 0x04f8 && code <= 0x04f9) || + (code >= 0x0500 && code <= 0x050f) ) { + *upper &= ~1; + *lower |= 1; + } + else if (code >= 0x04c1 && code <= 0x04ce) { + if (code & 1) + *lower += 1; + else + *upper -= 1; + } + } + + /* Armenian, U+0530 to U+058F */ + if (code >= 0x0530 && code <= 0x058f) { + if (code >= 0x0531 && code <= 0x0556) + *lower += 0x30; + else if (code >=0x0561 && code <= 0x0586) + *upper -= 0x30; + } + + /* Latin Extended Additional, U+1E00 to U+1EFF */ + if (code >= 0x1e00 && code <= 0x1eff) { + if ( (code >= 0x1e00 && code <= 0x1e95) || + (code >= 0x1ea0 && code <= 0x1ef9) ) { + *upper &= ~1; + *lower |= 1; + } + else if (code == 0x1e9b) + *upper = 0x1e60; + } + + /* Greek Extended, U+1F00 to U+1FFF */ + if (code >= 0x1f00 && code <= 0x1fff) { + *lower = GreekExt_lower_mapping[code - 0x1f00]; + *upper = GreekExt_upper_mapping[code - 0x1f00]; + if (*upper == 0) + *upper = code; + if (*lower == 0) + *lower = code; + } + + /* Letterlike Symbols, U+2100 to U+214F */ + if (code >= 0x2100 && code <= 0x214f) { + switch (code) { + case 0x2126: *lower = 0x03c9; break; + case 0x212a: *lower = 0x006b; break; + case 0x212b: *lower = 0x00e5; break; + } + } + /* Number Forms, U+2150 to U+218F */ + else if (code >= 0x2160 && code <= 0x216f) + *lower += 0x10; + else if (code >= 0x2170 && code <= 0x217f) + *upper -= 0x10; + /* Enclosed Alphanumerics, U+2460 to U+24FF */ + else if (code >= 0x24b6 && code <= 0x24cf) + *lower += 0x1a; + else if (code >= 0x24d0 && code <= 0x24e9) + *upper -= 0x1a; + /* Halfwidth and Fullwidth Forms, U+FF00 to U+FFEF */ + else if (code >= 0xff21 && code <= 0xff3a) + *lower += 0x20; + else if (code >= 0xff41 && code <= 0xff5a) + *upper -= 0x20; + /* Deseret, U+10400 to U+104FF */ + else if (code >= 0x10400 && code <= 0x10427) + *lower += 0x28; + else if (code >= 0x10428 && code <= 0x1044f) + *upper -= 0x28; +} + +static void +XConvertCase(xkb_keysym_t sym, xkb_keysym_t *lower, xkb_keysym_t *upper) +{ + /* Latin 1 keysym */ + if (sym < 0x100) { + UCSConvertCase(sym, lower, upper); + return; + } + + /* Unicode keysym */ + if ((sym & 0xff000000) == 0x01000000) { + UCSConvertCase((sym & 0x00ffffff), lower, upper); + *upper |= 0x01000000; + *lower |= 0x01000000; + return; + } + + /* Legacy keysym */ + + *lower = sym; + *upper = sym; + + switch(sym >> 8) { + case 1: /* Latin 2 */ + /* Assume the KeySym is a legal value (ignore discontinuities) */ + if (sym == XKB_KEY_Aogonek) + *lower = XKB_KEY_aogonek; + else if (sym >= XKB_KEY_Lstroke && sym <= XKB_KEY_Sacute) + *lower += (XKB_KEY_lstroke - XKB_KEY_Lstroke); + else if (sym >= XKB_KEY_Scaron && sym <= XKB_KEY_Zacute) + *lower += (XKB_KEY_scaron - XKB_KEY_Scaron); + else if (sym >= XKB_KEY_Zcaron && sym <= XKB_KEY_Zabovedot) + *lower += (XKB_KEY_zcaron - XKB_KEY_Zcaron); + else if (sym == XKB_KEY_aogonek) + *upper = XKB_KEY_Aogonek; + else if (sym >= XKB_KEY_lstroke && sym <= XKB_KEY_sacute) + *upper -= (XKB_KEY_lstroke - XKB_KEY_Lstroke); + else if (sym >= XKB_KEY_scaron && sym <= XKB_KEY_zacute) + *upper -= (XKB_KEY_scaron - XKB_KEY_Scaron); + else if (sym >= XKB_KEY_zcaron && sym <= XKB_KEY_zabovedot) + *upper -= (XKB_KEY_zcaron - XKB_KEY_Zcaron); + else if (sym >= XKB_KEY_Racute && sym <= XKB_KEY_Tcedilla) + *lower += (XKB_KEY_racute - XKB_KEY_Racute); + else if (sym >= XKB_KEY_racute && sym <= XKB_KEY_tcedilla) + *upper -= (XKB_KEY_racute - XKB_KEY_Racute); + break; + case 2: /* Latin 3 */ + /* Assume the KeySym is a legal value (ignore discontinuities) */ + if (sym >= XKB_KEY_Hstroke && sym <= XKB_KEY_Hcircumflex) + *lower += (XKB_KEY_hstroke - XKB_KEY_Hstroke); + else if (sym >= XKB_KEY_Gbreve && sym <= XKB_KEY_Jcircumflex) + *lower += (XKB_KEY_gbreve - XKB_KEY_Gbreve); + else if (sym >= XKB_KEY_hstroke && sym <= XKB_KEY_hcircumflex) + *upper -= (XKB_KEY_hstroke - XKB_KEY_Hstroke); + else if (sym >= XKB_KEY_gbreve && sym <= XKB_KEY_jcircumflex) + *upper -= (XKB_KEY_gbreve - XKB_KEY_Gbreve); + else if (sym >= XKB_KEY_Cabovedot && sym <= XKB_KEY_Scircumflex) + *lower += (XKB_KEY_cabovedot - XKB_KEY_Cabovedot); + else if (sym >= XKB_KEY_cabovedot && sym <= XKB_KEY_scircumflex) + *upper -= (XKB_KEY_cabovedot - XKB_KEY_Cabovedot); + break; + case 3: /* Latin 4 */ + /* Assume the KeySym is a legal value (ignore discontinuities) */ + if (sym >= XKB_KEY_Rcedilla && sym <= XKB_KEY_Tslash) + *lower += (XKB_KEY_rcedilla - XKB_KEY_Rcedilla); + else if (sym >= XKB_KEY_rcedilla && sym <= XKB_KEY_tslash) + *upper -= (XKB_KEY_rcedilla - XKB_KEY_Rcedilla); + else if (sym == XKB_KEY_ENG) + *lower = XKB_KEY_eng; + else if (sym == XKB_KEY_eng) + *upper = XKB_KEY_ENG; + else if (sym >= XKB_KEY_Amacron && sym <= XKB_KEY_Umacron) + *lower += (XKB_KEY_amacron - XKB_KEY_Amacron); + else if (sym >= XKB_KEY_amacron && sym <= XKB_KEY_umacron) + *upper -= (XKB_KEY_amacron - XKB_KEY_Amacron); + break; + case 6: /* Cyrillic */ + /* Assume the KeySym is a legal value (ignore discontinuities) */ + if (sym >= XKB_KEY_Serbian_DJE && sym <= XKB_KEY_Serbian_DZE) + *lower -= (XKB_KEY_Serbian_DJE - XKB_KEY_Serbian_dje); + else if (sym >= XKB_KEY_Serbian_dje && sym <= XKB_KEY_Serbian_dze) + *upper += (XKB_KEY_Serbian_DJE - XKB_KEY_Serbian_dje); + else if (sym >= XKB_KEY_Cyrillic_YU && sym <= XKB_KEY_Cyrillic_HARDSIGN) + *lower -= (XKB_KEY_Cyrillic_YU - XKB_KEY_Cyrillic_yu); + else if (sym >= XKB_KEY_Cyrillic_yu && sym <= XKB_KEY_Cyrillic_hardsign) + *upper += (XKB_KEY_Cyrillic_YU - XKB_KEY_Cyrillic_yu); + break; + case 7: /* Greek */ + /* Assume the KeySym is a legal value (ignore discontinuities) */ + if (sym >= XKB_KEY_Greek_ALPHAaccent && sym <= XKB_KEY_Greek_OMEGAaccent) + *lower += (XKB_KEY_Greek_alphaaccent - XKB_KEY_Greek_ALPHAaccent); + else if (sym >= XKB_KEY_Greek_alphaaccent && sym <= XKB_KEY_Greek_omegaaccent && + sym != XKB_KEY_Greek_iotaaccentdieresis && + sym != XKB_KEY_Greek_upsilonaccentdieresis) + *upper -= (XKB_KEY_Greek_alphaaccent - XKB_KEY_Greek_ALPHAaccent); + else if (sym >= XKB_KEY_Greek_ALPHA && sym <= XKB_KEY_Greek_OMEGA) + *lower += (XKB_KEY_Greek_alpha - XKB_KEY_Greek_ALPHA); + else if (sym >= XKB_KEY_Greek_alpha && sym <= XKB_KEY_Greek_omega && + sym != XKB_KEY_Greek_finalsmallsigma) + *upper -= (XKB_KEY_Greek_alpha - XKB_KEY_Greek_ALPHA); + break; + case 0x13: /* Latin 9 */ + if (sym == XKB_KEY_OE) + *lower = XKB_KEY_oe; + else if (sym == XKB_KEY_oe) + *upper = XKB_KEY_OE; + else if (sym == XKB_KEY_Ydiaeresis) + *lower = XKB_KEY_ydiaeresis; + break; + } +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.h new file mode 100644 index 0000000..ca2bd5e --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/keysym.h @@ -0,0 +1,71 @@ +/* + * Copyright 1985, 1987, 1990, 1998 The Open Group + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the names of the authors or their + * institutions shall not be used in advertising or otherwise to promote the + * sale, use or other dealings in this Software without prior written + * authorization from the authors. + */ + +/* + * Copyright © 2009 Dan Nicholson + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef KEYSYM_H +#define KEYSYM_H + +bool +xkb_keysym_is_lower(xkb_keysym_t keysym); + +bool +xkb_keysym_is_upper(xkb_keysym_t keysym); + +bool +xkb_keysym_is_keypad(xkb_keysym_t keysym); + +bool +xkb_keysym_is_modifier(xkb_keysym_t keysym); + +xkb_keysym_t +xkb_keysym_to_upper(xkb_keysym_t ks); + +xkb_keysym_t +xkb_keysym_to_lower(xkb_keysym_t ks); + +#endif diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/ks_tables.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/ks_tables.h new file mode 100644 index 0000000..1010b69 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/ks_tables.h @@ -0,0 +1,7104 @@ + +/** + * This file comes from libxkbcommon and was generated by makekeys.py + * You can always fetch the latest version from: + * https://raw.github.com/xkbcommon/libxkbcommon/master/src/ks_tables.h + */ + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Woverlength-strings" +static const char *keysym_names = + "0\0" + "1\0" + "2\0" + "3\0" + "3270_AltCursor\0" + "3270_Attn\0" + "3270_BackTab\0" + "3270_ChangeScreen\0" + "3270_Copy\0" + "3270_CursorBlink\0" + "3270_CursorSelect\0" + "3270_DeleteWord\0" + "3270_Duplicate\0" + "3270_Enter\0" + "3270_EraseEOF\0" + "3270_EraseInput\0" + "3270_ExSelect\0" + "3270_FieldMark\0" + "3270_Ident\0" + "3270_Jump\0" + "3270_KeyClick\0" + "3270_Left2\0" + "3270_PA1\0" + "3270_PA2\0" + "3270_PA3\0" + "3270_Play\0" + "3270_PrintScreen\0" + "3270_Quit\0" + "3270_Record\0" + "3270_Reset\0" + "3270_Right2\0" + "3270_Rule\0" + "3270_Setup\0" + "3270_Test\0" + "4\0" + "5\0" + "6\0" + "7\0" + "8\0" + "9\0" + "A\0" + "a\0" + "Aacute\0" + "aacute\0" + "Abelowdot\0" + "abelowdot\0" + "abovedot\0" + "Abreve\0" + "abreve\0" + "Abreveacute\0" + "abreveacute\0" + "Abrevebelowdot\0" + "abrevebelowdot\0" + "Abrevegrave\0" + "abrevegrave\0" + "Abrevehook\0" + "abrevehook\0" + "Abrevetilde\0" + "abrevetilde\0" + "AccessX_Enable\0" + "AccessX_Feedback_Enable\0" + "Acircumflex\0" + "acircumflex\0" + "Acircumflexacute\0" + "acircumflexacute\0" + "Acircumflexbelowdot\0" + "acircumflexbelowdot\0" + "Acircumflexgrave\0" + "acircumflexgrave\0" + "Acircumflexhook\0" + "acircumflexhook\0" + "Acircumflextilde\0" + "acircumflextilde\0" + "acute\0" + "Adiaeresis\0" + "adiaeresis\0" + "AE\0" + "ae\0" + "Agrave\0" + "agrave\0" + "Ahook\0" + "ahook\0" + "Alt_L\0" + "Alt_R\0" + "Amacron\0" + "amacron\0" + "ampersand\0" + "Aogonek\0" + "aogonek\0" + "apostrophe\0" + "approxeq\0" + "approximate\0" + "Arabic_0\0" + "Arabic_1\0" + "Arabic_2\0" + "Arabic_3\0" + "Arabic_4\0" + "Arabic_5\0" + "Arabic_6\0" + "Arabic_7\0" + "Arabic_8\0" + "Arabic_9\0" + "Arabic_ain\0" + "Arabic_alef\0" + "Arabic_alefmaksura\0" + "Arabic_beh\0" + "Arabic_comma\0" + "Arabic_dad\0" + "Arabic_dal\0" + "Arabic_damma\0" + "Arabic_dammatan\0" + "Arabic_ddal\0" + "Arabic_farsi_yeh\0" + "Arabic_fatha\0" + "Arabic_fathatan\0" + "Arabic_feh\0" + "Arabic_fullstop\0" + "Arabic_gaf\0" + "Arabic_ghain\0" + "Arabic_ha\0" + "Arabic_hah\0" + "Arabic_hamza\0" + "Arabic_hamza_above\0" + "Arabic_hamza_below\0" + "Arabic_hamzaonalef\0" + "Arabic_hamzaonwaw\0" + "Arabic_hamzaonyeh\0" + "Arabic_hamzaunderalef\0" + "Arabic_heh\0" + "Arabic_heh_doachashmee\0" + "Arabic_heh_goal\0" + "Arabic_jeem\0" + "Arabic_jeh\0" + "Arabic_kaf\0" + "Arabic_kasra\0" + "Arabic_kasratan\0" + "Arabic_keheh\0" + "Arabic_khah\0" + "Arabic_lam\0" + "Arabic_madda_above\0" + "Arabic_maddaonalef\0" + "Arabic_meem\0" + "Arabic_noon\0" + "Arabic_noon_ghunna\0" + "Arabic_peh\0" + "Arabic_percent\0" + "Arabic_qaf\0" + "Arabic_question_mark\0" + "Arabic_ra\0" + "Arabic_rreh\0" + "Arabic_sad\0" + "Arabic_seen\0" + "Arabic_semicolon\0" + "Arabic_shadda\0" + "Arabic_sheen\0" + "Arabic_sukun\0" + "Arabic_superscript_alef\0" + "Arabic_switch\0" + "Arabic_tah\0" + "Arabic_tatweel\0" + "Arabic_tcheh\0" + "Arabic_teh\0" + "Arabic_tehmarbuta\0" + "Arabic_thal\0" + "Arabic_theh\0" + "Arabic_tteh\0" + "Arabic_veh\0" + "Arabic_waw\0" + "Arabic_yeh\0" + "Arabic_yeh_baree\0" + "Arabic_zah\0" + "Arabic_zain\0" + "Aring\0" + "aring\0" + "Armenian_accent\0" + "Armenian_amanak\0" + "Armenian_apostrophe\0" + "Armenian_AT\0" + "Armenian_at\0" + "Armenian_AYB\0" + "Armenian_ayb\0" + "Armenian_BEN\0" + "Armenian_ben\0" + "Armenian_but\0" + "Armenian_CHA\0" + "Armenian_cha\0" + "Armenian_DA\0" + "Armenian_da\0" + "Armenian_DZA\0" + "Armenian_dza\0" + "Armenian_E\0" + "Armenian_e\0" + "Armenian_exclam\0" + "Armenian_FE\0" + "Armenian_fe\0" + "Armenian_full_stop\0" + "Armenian_GHAT\0" + "Armenian_ghat\0" + "Armenian_GIM\0" + "Armenian_gim\0" + "Armenian_HI\0" + "Armenian_hi\0" + "Armenian_HO\0" + "Armenian_ho\0" + "Armenian_hyphen\0" + "Armenian_INI\0" + "Armenian_ini\0" + "Armenian_JE\0" + "Armenian_je\0" + "Armenian_KE\0" + "Armenian_ke\0" + "Armenian_KEN\0" + "Armenian_ken\0" + "Armenian_KHE\0" + "Armenian_khe\0" + "Armenian_ligature_ew\0" + "Armenian_LYUN\0" + "Armenian_lyun\0" + "Armenian_MEN\0" + "Armenian_men\0" + "Armenian_NU\0" + "Armenian_nu\0" + "Armenian_O\0" + "Armenian_o\0" + "Armenian_paruyk\0" + "Armenian_PE\0" + "Armenian_pe\0" + "Armenian_PYUR\0" + "Armenian_pyur\0" + "Armenian_question\0" + "Armenian_RA\0" + "Armenian_ra\0" + "Armenian_RE\0" + "Armenian_re\0" + "Armenian_SE\0" + "Armenian_se\0" + "Armenian_separation_mark\0" + "Armenian_SHA\0" + "Armenian_sha\0" + "Armenian_shesht\0" + "Armenian_TCHE\0" + "Armenian_tche\0" + "Armenian_TO\0" + "Armenian_to\0" + "Armenian_TSA\0" + "Armenian_tsa\0" + "Armenian_TSO\0" + "Armenian_tso\0" + "Armenian_TYUN\0" + "Armenian_tyun\0" + "Armenian_verjaket\0" + "Armenian_VEV\0" + "Armenian_vev\0" + "Armenian_VO\0" + "Armenian_vo\0" + "Armenian_VYUN\0" + "Armenian_vyun\0" + "Armenian_YECH\0" + "Armenian_yech\0" + "Armenian_yentamna\0" + "Armenian_ZA\0" + "Armenian_za\0" + "Armenian_ZHE\0" + "Armenian_zhe\0" + "asciicircum\0" + "asciitilde\0" + "asterisk\0" + "at\0" + "Atilde\0" + "atilde\0" + "AudibleBell_Enable\0" + "B\0" + "b\0" + "Babovedot\0" + "babovedot\0" + "backslash\0" + "BackSpace\0" + "BackTab\0" + "ballotcross\0" + "bar\0" + "because\0" + "Begin\0" + "blank\0" + "block\0" + "botintegral\0" + "botleftparens\0" + "botleftsqbracket\0" + "botleftsummation\0" + "botrightparens\0" + "botrightsqbracket\0" + "botrightsummation\0" + "bott\0" + "botvertsummationconnector\0" + "BounceKeys_Enable\0" + "braceleft\0" + "braceright\0" + "bracketleft\0" + "bracketright\0" + "braille_blank\0" + "braille_dot_1\0" + "braille_dot_10\0" + "braille_dot_2\0" + "braille_dot_3\0" + "braille_dot_4\0" + "braille_dot_5\0" + "braille_dot_6\0" + "braille_dot_7\0" + "braille_dot_8\0" + "braille_dot_9\0" + "braille_dots_1\0" + "braille_dots_12\0" + "braille_dots_123\0" + "braille_dots_1234\0" + "braille_dots_12345\0" + "braille_dots_123456\0" + "braille_dots_1234567\0" + "braille_dots_12345678\0" + "braille_dots_1234568\0" + "braille_dots_123457\0" + "braille_dots_1234578\0" + "braille_dots_123458\0" + "braille_dots_12346\0" + "braille_dots_123467\0" + "braille_dots_1234678\0" + "braille_dots_123468\0" + "braille_dots_12347\0" + "braille_dots_123478\0" + "braille_dots_12348\0" + "braille_dots_1235\0" + "braille_dots_12356\0" + "braille_dots_123567\0" + "braille_dots_1235678\0" + "braille_dots_123568\0" + "braille_dots_12357\0" + "braille_dots_123578\0" + "braille_dots_12358\0" + "braille_dots_1236\0" + "braille_dots_12367\0" + "braille_dots_123678\0" + "braille_dots_12368\0" + "braille_dots_1237\0" + "braille_dots_12378\0" + "braille_dots_1238\0" + "braille_dots_124\0" + "braille_dots_1245\0" + "braille_dots_12456\0" + "braille_dots_124567\0" + "braille_dots_1245678\0" + "braille_dots_124568\0" + "braille_dots_12457\0" + "braille_dots_124578\0" + "braille_dots_12458\0" + "braille_dots_1246\0" + "braille_dots_12467\0" + "braille_dots_124678\0" + "braille_dots_12468\0" + "braille_dots_1247\0" + "braille_dots_12478\0" + "braille_dots_1248\0" + "braille_dots_125\0" + "braille_dots_1256\0" + "braille_dots_12567\0" + "braille_dots_125678\0" + "braille_dots_12568\0" + "braille_dots_1257\0" + "braille_dots_12578\0" + "braille_dots_1258\0" + "braille_dots_126\0" + "braille_dots_1267\0" + "braille_dots_12678\0" + "braille_dots_1268\0" + "braille_dots_127\0" + "braille_dots_1278\0" + "braille_dots_128\0" + "braille_dots_13\0" + "braille_dots_134\0" + "braille_dots_1345\0" + "braille_dots_13456\0" + "braille_dots_134567\0" + "braille_dots_1345678\0" + "braille_dots_134568\0" + "braille_dots_13457\0" + "braille_dots_134578\0" + "braille_dots_13458\0" + "braille_dots_1346\0" + "braille_dots_13467\0" + "braille_dots_134678\0" + "braille_dots_13468\0" + "braille_dots_1347\0" + "braille_dots_13478\0" + "braille_dots_1348\0" + "braille_dots_135\0" + "braille_dots_1356\0" + "braille_dots_13567\0" + "braille_dots_135678\0" + "braille_dots_13568\0" + "braille_dots_1357\0" + "braille_dots_13578\0" + "braille_dots_1358\0" + "braille_dots_136\0" + "braille_dots_1367\0" + "braille_dots_13678\0" + "braille_dots_1368\0" + "braille_dots_137\0" + "braille_dots_1378\0" + "braille_dots_138\0" + "braille_dots_14\0" + "braille_dots_145\0" + "braille_dots_1456\0" + "braille_dots_14567\0" + "braille_dots_145678\0" + "braille_dots_14568\0" + "braille_dots_1457\0" + "braille_dots_14578\0" + "braille_dots_1458\0" + "braille_dots_146\0" + "braille_dots_1467\0" + "braille_dots_14678\0" + "braille_dots_1468\0" + "braille_dots_147\0" + "braille_dots_1478\0" + "braille_dots_148\0" + "braille_dots_15\0" + "braille_dots_156\0" + "braille_dots_1567\0" + "braille_dots_15678\0" + "braille_dots_1568\0" + "braille_dots_157\0" + "braille_dots_1578\0" + "braille_dots_158\0" + "braille_dots_16\0" + "braille_dots_167\0" + "braille_dots_1678\0" + "braille_dots_168\0" + "braille_dots_17\0" + "braille_dots_178\0" + "braille_dots_18\0" + "braille_dots_2\0" + "braille_dots_23\0" + "braille_dots_234\0" + "braille_dots_2345\0" + "braille_dots_23456\0" + "braille_dots_234567\0" + "braille_dots_2345678\0" + "braille_dots_234568\0" + "braille_dots_23457\0" + "braille_dots_234578\0" + "braille_dots_23458\0" + "braille_dots_2346\0" + "braille_dots_23467\0" + "braille_dots_234678\0" + "braille_dots_23468\0" + "braille_dots_2347\0" + "braille_dots_23478\0" + "braille_dots_2348\0" + "braille_dots_235\0" + "braille_dots_2356\0" + "braille_dots_23567\0" + "braille_dots_235678\0" + "braille_dots_23568\0" + "braille_dots_2357\0" + "braille_dots_23578\0" + "braille_dots_2358\0" + "braille_dots_236\0" + "braille_dots_2367\0" + "braille_dots_23678\0" + "braille_dots_2368\0" + "braille_dots_237\0" + "braille_dots_2378\0" + "braille_dots_238\0" + "braille_dots_24\0" + "braille_dots_245\0" + "braille_dots_2456\0" + "braille_dots_24567\0" + "braille_dots_245678\0" + "braille_dots_24568\0" + "braille_dots_2457\0" + "braille_dots_24578\0" + "braille_dots_2458\0" + "braille_dots_246\0" + "braille_dots_2467\0" + "braille_dots_24678\0" + "braille_dots_2468\0" + "braille_dots_247\0" + "braille_dots_2478\0" + "braille_dots_248\0" + "braille_dots_25\0" + "braille_dots_256\0" + "braille_dots_2567\0" + "braille_dots_25678\0" + "braille_dots_2568\0" + "braille_dots_257\0" + "braille_dots_2578\0" + "braille_dots_258\0" + "braille_dots_26\0" + "braille_dots_267\0" + "braille_dots_2678\0" + "braille_dots_268\0" + "braille_dots_27\0" + "braille_dots_278\0" + "braille_dots_28\0" + "braille_dots_3\0" + "braille_dots_34\0" + "braille_dots_345\0" + "braille_dots_3456\0" + "braille_dots_34567\0" + "braille_dots_345678\0" + "braille_dots_34568\0" + "braille_dots_3457\0" + "braille_dots_34578\0" + "braille_dots_3458\0" + "braille_dots_346\0" + "braille_dots_3467\0" + "braille_dots_34678\0" + "braille_dots_3468\0" + "braille_dots_347\0" + "braille_dots_3478\0" + "braille_dots_348\0" + "braille_dots_35\0" + "braille_dots_356\0" + "braille_dots_3567\0" + "braille_dots_35678\0" + "braille_dots_3568\0" + "braille_dots_357\0" + "braille_dots_3578\0" + "braille_dots_358\0" + "braille_dots_36\0" + "braille_dots_367\0" + "braille_dots_3678\0" + "braille_dots_368\0" + "braille_dots_37\0" + "braille_dots_378\0" + "braille_dots_38\0" + "braille_dots_4\0" + "braille_dots_45\0" + "braille_dots_456\0" + "braille_dots_4567\0" + "braille_dots_45678\0" + "braille_dots_4568\0" + "braille_dots_457\0" + "braille_dots_4578\0" + "braille_dots_458\0" + "braille_dots_46\0" + "braille_dots_467\0" + "braille_dots_4678\0" + "braille_dots_468\0" + "braille_dots_47\0" + "braille_dots_478\0" + "braille_dots_48\0" + "braille_dots_5\0" + "braille_dots_56\0" + "braille_dots_567\0" + "braille_dots_5678\0" + "braille_dots_568\0" + "braille_dots_57\0" + "braille_dots_578\0" + "braille_dots_58\0" + "braille_dots_6\0" + "braille_dots_67\0" + "braille_dots_678\0" + "braille_dots_68\0" + "braille_dots_7\0" + "braille_dots_78\0" + "braille_dots_8\0" + "Break\0" + "breve\0" + "brokenbar\0" + "Byelorussian_shortu\0" + "Byelorussian_SHORTU\0" + "C\0" + "c\0" + "c_h\0" + "C_h\0" + "C_H\0" + "Cabovedot\0" + "cabovedot\0" + "Cacute\0" + "cacute\0" + "Cancel\0" + "Caps_Lock\0" + "careof\0" + "caret\0" + "caron\0" + "Ccaron\0" + "ccaron\0" + "Ccedilla\0" + "ccedilla\0" + "Ccircumflex\0" + "ccircumflex\0" + "cedilla\0" + "cent\0" + "ch\0" + "Ch\0" + "CH\0" + "checkerboard\0" + "checkmark\0" + "circle\0" + "Clear\0" + "ClearLine\0" + "club\0" + "Codeinput\0" + "colon\0" + "ColonSign\0" + "comma\0" + "containsas\0" + "Control_L\0" + "Control_R\0" + "copyright\0" + "cr\0" + "crossinglines\0" + "CruzeiroSign\0" + "cuberoot\0" + "currency\0" + "cursor\0" + "Cyrillic_a\0" + "Cyrillic_A\0" + "Cyrillic_be\0" + "Cyrillic_BE\0" + "Cyrillic_che\0" + "Cyrillic_CHE\0" + "Cyrillic_CHE_descender\0" + "Cyrillic_che_descender\0" + "Cyrillic_CHE_vertstroke\0" + "Cyrillic_che_vertstroke\0" + "Cyrillic_de\0" + "Cyrillic_DE\0" + "Cyrillic_dzhe\0" + "Cyrillic_DZHE\0" + "Cyrillic_e\0" + "Cyrillic_E\0" + "Cyrillic_ef\0" + "Cyrillic_EF\0" + "Cyrillic_el\0" + "Cyrillic_EL\0" + "Cyrillic_em\0" + "Cyrillic_EM\0" + "Cyrillic_en\0" + "Cyrillic_EN\0" + "Cyrillic_EN_descender\0" + "Cyrillic_en_descender\0" + "Cyrillic_er\0" + "Cyrillic_ER\0" + "Cyrillic_es\0" + "Cyrillic_ES\0" + "Cyrillic_ghe\0" + "Cyrillic_GHE\0" + "Cyrillic_GHE_bar\0" + "Cyrillic_ghe_bar\0" + "Cyrillic_ha\0" + "Cyrillic_HA\0" + "Cyrillic_HA_descender\0" + "Cyrillic_ha_descender\0" + "Cyrillic_hardsign\0" + "Cyrillic_HARDSIGN\0" + "Cyrillic_i\0" + "Cyrillic_I\0" + "Cyrillic_I_macron\0" + "Cyrillic_i_macron\0" + "Cyrillic_ie\0" + "Cyrillic_IE\0" + "Cyrillic_io\0" + "Cyrillic_IO\0" + "Cyrillic_je\0" + "Cyrillic_JE\0" + "Cyrillic_ka\0" + "Cyrillic_KA\0" + "Cyrillic_KA_descender\0" + "Cyrillic_ka_descender\0" + "Cyrillic_KA_vertstroke\0" + "Cyrillic_ka_vertstroke\0" + "Cyrillic_lje\0" + "Cyrillic_LJE\0" + "Cyrillic_nje\0" + "Cyrillic_NJE\0" + "Cyrillic_o\0" + "Cyrillic_O\0" + "Cyrillic_O_bar\0" + "Cyrillic_o_bar\0" + "Cyrillic_pe\0" + "Cyrillic_PE\0" + "Cyrillic_SCHWA\0" + "Cyrillic_schwa\0" + "Cyrillic_sha\0" + "Cyrillic_SHA\0" + "Cyrillic_shcha\0" + "Cyrillic_SHCHA\0" + "Cyrillic_SHHA\0" + "Cyrillic_shha\0" + "Cyrillic_shorti\0" + "Cyrillic_SHORTI\0" + "Cyrillic_softsign\0" + "Cyrillic_SOFTSIGN\0" + "Cyrillic_te\0" + "Cyrillic_TE\0" + "Cyrillic_tse\0" + "Cyrillic_TSE\0" + "Cyrillic_u\0" + "Cyrillic_U\0" + "Cyrillic_U_macron\0" + "Cyrillic_u_macron\0" + "Cyrillic_U_straight\0" + "Cyrillic_u_straight\0" + "Cyrillic_U_straight_bar\0" + "Cyrillic_u_straight_bar\0" + "Cyrillic_ve\0" + "Cyrillic_VE\0" + "Cyrillic_ya\0" + "Cyrillic_YA\0" + "Cyrillic_yeru\0" + "Cyrillic_YERU\0" + "Cyrillic_yu\0" + "Cyrillic_YU\0" + "Cyrillic_ze\0" + "Cyrillic_ZE\0" + "Cyrillic_zhe\0" + "Cyrillic_ZHE\0" + "Cyrillic_ZHE_descender\0" + "Cyrillic_zhe_descender\0" + "D\0" + "d\0" + "Dabovedot\0" + "dabovedot\0" + "Dacute_accent\0" + "dagger\0" + "Dcaron\0" + "dcaron\0" + "Dcedilla_accent\0" + "Dcircumflex_accent\0" + "Ddiaeresis\0" + "dead_a\0" + "dead_A\0" + "dead_abovecomma\0" + "dead_abovedot\0" + "dead_abovereversedcomma\0" + "dead_abovering\0" + "dead_aboveverticalline\0" + "dead_acute\0" + "dead_belowbreve\0" + "dead_belowcircumflex\0" + "dead_belowcomma\0" + "dead_belowdiaeresis\0" + "dead_belowdot\0" + "dead_belowmacron\0" + "dead_belowring\0" + "dead_belowtilde\0" + "dead_belowverticalline\0" + "dead_breve\0" + "dead_capital_schwa\0" + "dead_caron\0" + "dead_cedilla\0" + "dead_circumflex\0" + "dead_currency\0" + "dead_dasia\0" + "dead_diaeresis\0" + "dead_doubleacute\0" + "dead_doublegrave\0" + "dead_e\0" + "dead_E\0" + "dead_grave\0" + "dead_greek\0" + "dead_hook\0" + "dead_horn\0" + "dead_i\0" + "dead_I\0" + "dead_invertedbreve\0" + "dead_iota\0" + "dead_longsolidusoverlay\0" + "dead_lowline\0" + "dead_macron\0" + "dead_o\0" + "dead_O\0" + "dead_ogonek\0" + "dead_perispomeni\0" + "dead_psili\0" + "dead_semivoiced_sound\0" + "dead_small_schwa\0" + "dead_stroke\0" + "dead_tilde\0" + "dead_u\0" + "dead_U\0" + "dead_voiced_sound\0" + "decimalpoint\0" + "degree\0" + "Delete\0" + "DeleteChar\0" + "DeleteLine\0" + "Dgrave_accent\0" + "diaeresis\0" + "diamond\0" + "digitspace\0" + "dintegral\0" + "division\0" + "dollar\0" + "DongSign\0" + "doubbaselinedot\0" + "doubleacute\0" + "doubledagger\0" + "doublelowquotemark\0" + "Down\0" + "downarrow\0" + "downcaret\0" + "downshoe\0" + "downstile\0" + "downtack\0" + "DRemove\0" + "Dring_accent\0" + "Dstroke\0" + "dstroke\0" + "Dtilde\0" + "E\0" + "e\0" + "Eabovedot\0" + "eabovedot\0" + "Eacute\0" + "eacute\0" + "Ebelowdot\0" + "ebelowdot\0" + "Ecaron\0" + "ecaron\0" + "Ecircumflex\0" + "ecircumflex\0" + "Ecircumflexacute\0" + "ecircumflexacute\0" + "Ecircumflexbelowdot\0" + "ecircumflexbelowdot\0" + "Ecircumflexgrave\0" + "ecircumflexgrave\0" + "Ecircumflexhook\0" + "ecircumflexhook\0" + "Ecircumflextilde\0" + "ecircumflextilde\0" + "EcuSign\0" + "Ediaeresis\0" + "ediaeresis\0" + "Egrave\0" + "egrave\0" + "Ehook\0" + "ehook\0" + "eightsubscript\0" + "eightsuperior\0" + "Eisu_Shift\0" + "Eisu_toggle\0" + "elementof\0" + "ellipsis\0" + "em3space\0" + "em4space\0" + "Emacron\0" + "emacron\0" + "emdash\0" + "emfilledcircle\0" + "emfilledrect\0" + "emopencircle\0" + "emopenrectangle\0" + "emptyset\0" + "emspace\0" + "End\0" + "endash\0" + "enfilledcircbullet\0" + "enfilledsqbullet\0" + "ENG\0" + "eng\0" + "enopencircbullet\0" + "enopensquarebullet\0" + "enspace\0" + "Eogonek\0" + "eogonek\0" + "equal\0" + "Escape\0" + "ETH\0" + "Eth\0" + "eth\0" + "Etilde\0" + "etilde\0" + "EuroSign\0" + "exclam\0" + "exclamdown\0" + "Execute\0" + "Ext16bit_L\0" + "Ext16bit_R\0" + "EZH\0" + "ezh\0" + "F\0" + "f\0" + "F1\0" + "F10\0" + "F11\0" + "F12\0" + "F13\0" + "F14\0" + "F15\0" + "F16\0" + "F17\0" + "F18\0" + "F19\0" + "F2\0" + "F20\0" + "F21\0" + "F22\0" + "F23\0" + "F24\0" + "F25\0" + "F26\0" + "F27\0" + "F28\0" + "F29\0" + "F3\0" + "F30\0" + "F31\0" + "F32\0" + "F33\0" + "F34\0" + "F35\0" + "F4\0" + "F5\0" + "F6\0" + "F7\0" + "F8\0" + "F9\0" + "Fabovedot\0" + "fabovedot\0" + "Farsi_0\0" + "Farsi_1\0" + "Farsi_2\0" + "Farsi_3\0" + "Farsi_4\0" + "Farsi_5\0" + "Farsi_6\0" + "Farsi_7\0" + "Farsi_8\0" + "Farsi_9\0" + "Farsi_yeh\0" + "femalesymbol\0" + "ff\0" + "FFrancSign\0" + "figdash\0" + "filledlefttribullet\0" + "filledrectbullet\0" + "filledrighttribullet\0" + "filledtribulletdown\0" + "filledtribulletup\0" + "Find\0" + "First_Virtual_Screen\0" + "fiveeighths\0" + "fivesixths\0" + "fivesubscript\0" + "fivesuperior\0" + "fourfifths\0" + "foursubscript\0" + "foursuperior\0" + "fourthroot\0" + "function\0" + "G\0" + "g\0" + "Gabovedot\0" + "gabovedot\0" + "Gbreve\0" + "gbreve\0" + "Gcaron\0" + "gcaron\0" + "Gcedilla\0" + "gcedilla\0" + "Gcircumflex\0" + "gcircumflex\0" + "Georgian_an\0" + "Georgian_ban\0" + "Georgian_can\0" + "Georgian_char\0" + "Georgian_chin\0" + "Georgian_cil\0" + "Georgian_don\0" + "Georgian_en\0" + "Georgian_fi\0" + "Georgian_gan\0" + "Georgian_ghan\0" + "Georgian_hae\0" + "Georgian_har\0" + "Georgian_he\0" + "Georgian_hie\0" + "Georgian_hoe\0" + "Georgian_in\0" + "Georgian_jhan\0" + "Georgian_jil\0" + "Georgian_kan\0" + "Georgian_khar\0" + "Georgian_las\0" + "Georgian_man\0" + "Georgian_nar\0" + "Georgian_on\0" + "Georgian_par\0" + "Georgian_phar\0" + "Georgian_qar\0" + "Georgian_rae\0" + "Georgian_san\0" + "Georgian_shin\0" + "Georgian_tan\0" + "Georgian_tar\0" + "Georgian_un\0" + "Georgian_vin\0" + "Georgian_we\0" + "Georgian_xan\0" + "Georgian_zen\0" + "Georgian_zhar\0" + "grave\0" + "greater\0" + "greaterthanequal\0" + "Greek_accentdieresis\0" + "Greek_ALPHA\0" + "Greek_alpha\0" + "Greek_ALPHAaccent\0" + "Greek_alphaaccent\0" + "Greek_BETA\0" + "Greek_beta\0" + "Greek_CHI\0" + "Greek_chi\0" + "Greek_DELTA\0" + "Greek_delta\0" + "Greek_EPSILON\0" + "Greek_epsilon\0" + "Greek_EPSILONaccent\0" + "Greek_epsilonaccent\0" + "Greek_ETA\0" + "Greek_eta\0" + "Greek_ETAaccent\0" + "Greek_etaaccent\0" + "Greek_finalsmallsigma\0" + "Greek_GAMMA\0" + "Greek_gamma\0" + "Greek_horizbar\0" + "Greek_IOTA\0" + "Greek_iota\0" + "Greek_IOTAaccent\0" + "Greek_iotaaccent\0" + "Greek_iotaaccentdieresis\0" + "Greek_IOTAdiaeresis\0" + "Greek_IOTAdieresis\0" + "Greek_iotadieresis\0" + "Greek_KAPPA\0" + "Greek_kappa\0" + "Greek_LAMBDA\0" + "Greek_lambda\0" + "Greek_LAMDA\0" + "Greek_lamda\0" + "Greek_MU\0" + "Greek_mu\0" + "Greek_NU\0" + "Greek_nu\0" + "Greek_OMEGA\0" + "Greek_omega\0" + "Greek_OMEGAaccent\0" + "Greek_omegaaccent\0" + "Greek_OMICRON\0" + "Greek_omicron\0" + "Greek_OMICRONaccent\0" + "Greek_omicronaccent\0" + "Greek_PHI\0" + "Greek_phi\0" + "Greek_PI\0" + "Greek_pi\0" + "Greek_PSI\0" + "Greek_psi\0" + "Greek_RHO\0" + "Greek_rho\0" + "Greek_SIGMA\0" + "Greek_sigma\0" + "Greek_switch\0" + "Greek_TAU\0" + "Greek_tau\0" + "Greek_THETA\0" + "Greek_theta\0" + "Greek_UPSILON\0" + "Greek_upsilon\0" + "Greek_UPSILONaccent\0" + "Greek_upsilonaccent\0" + "Greek_upsilonaccentdieresis\0" + "Greek_UPSILONdieresis\0" + "Greek_upsilondieresis\0" + "Greek_XI\0" + "Greek_xi\0" + "Greek_ZETA\0" + "Greek_zeta\0" + "guilder\0" + "guillemotleft\0" + "guillemotright\0" + "H\0" + "h\0" + "hairspace\0" + "Hangul\0" + "Hangul_A\0" + "Hangul_AE\0" + "Hangul_AraeA\0" + "Hangul_AraeAE\0" + "Hangul_Banja\0" + "Hangul_Cieuc\0" + "Hangul_Codeinput\0" + "Hangul_Dikeud\0" + "Hangul_E\0" + "Hangul_End\0" + "Hangul_EO\0" + "Hangul_EU\0" + "Hangul_Hanja\0" + "Hangul_Hieuh\0" + "Hangul_I\0" + "Hangul_Ieung\0" + "Hangul_J_Cieuc\0" + "Hangul_J_Dikeud\0" + "Hangul_J_Hieuh\0" + "Hangul_J_Ieung\0" + "Hangul_J_Jieuj\0" + "Hangul_J_Khieuq\0" + "Hangul_J_Kiyeog\0" + "Hangul_J_KiyeogSios\0" + "Hangul_J_KkogjiDalrinIeung\0" + "Hangul_J_Mieum\0" + "Hangul_J_Nieun\0" + "Hangul_J_NieunHieuh\0" + "Hangul_J_NieunJieuj\0" + "Hangul_J_PanSios\0" + "Hangul_J_Phieuf\0" + "Hangul_J_Pieub\0" + "Hangul_J_PieubSios\0" + "Hangul_J_Rieul\0" + "Hangul_J_RieulHieuh\0" + "Hangul_J_RieulKiyeog\0" + "Hangul_J_RieulMieum\0" + "Hangul_J_RieulPhieuf\0" + "Hangul_J_RieulPieub\0" + "Hangul_J_RieulSios\0" + "Hangul_J_RieulTieut\0" + "Hangul_J_Sios\0" + "Hangul_J_SsangKiyeog\0" + "Hangul_J_SsangSios\0" + "Hangul_J_Tieut\0" + "Hangul_J_YeorinHieuh\0" + "Hangul_Jamo\0" + "Hangul_Jeonja\0" + "Hangul_Jieuj\0" + "Hangul_Khieuq\0" + "Hangul_Kiyeog\0" + "Hangul_KiyeogSios\0" + "Hangul_KkogjiDalrinIeung\0" + "Hangul_Mieum\0" + "Hangul_MultipleCandidate\0" + "Hangul_Nieun\0" + "Hangul_NieunHieuh\0" + "Hangul_NieunJieuj\0" + "Hangul_O\0" + "Hangul_OE\0" + "Hangul_PanSios\0" + "Hangul_Phieuf\0" + "Hangul_Pieub\0" + "Hangul_PieubSios\0" + "Hangul_PostHanja\0" + "Hangul_PreHanja\0" + "Hangul_PreviousCandidate\0" + "Hangul_Rieul\0" + "Hangul_RieulHieuh\0" + "Hangul_RieulKiyeog\0" + "Hangul_RieulMieum\0" + "Hangul_RieulPhieuf\0" + "Hangul_RieulPieub\0" + "Hangul_RieulSios\0" + "Hangul_RieulTieut\0" + "Hangul_RieulYeorinHieuh\0" + "Hangul_Romaja\0" + "Hangul_SingleCandidate\0" + "Hangul_Sios\0" + "Hangul_Special\0" + "Hangul_SsangDikeud\0" + "Hangul_SsangJieuj\0" + "Hangul_SsangKiyeog\0" + "Hangul_SsangPieub\0" + "Hangul_SsangSios\0" + "Hangul_Start\0" + "Hangul_SunkyeongeumMieum\0" + "Hangul_SunkyeongeumPhieuf\0" + "Hangul_SunkyeongeumPieub\0" + "Hangul_switch\0" + "Hangul_Tieut\0" + "Hangul_U\0" + "Hangul_WA\0" + "Hangul_WAE\0" + "Hangul_WE\0" + "Hangul_WEO\0" + "Hangul_WI\0" + "Hangul_YA\0" + "Hangul_YAE\0" + "Hangul_YE\0" + "Hangul_YEO\0" + "Hangul_YeorinHieuh\0" + "Hangul_YI\0" + "Hangul_YO\0" + "Hangul_YU\0" + "Hankaku\0" + "Hcircumflex\0" + "hcircumflex\0" + "heart\0" + "hebrew_aleph\0" + "hebrew_ayin\0" + "hebrew_bet\0" + "hebrew_beth\0" + "hebrew_chet\0" + "hebrew_dalet\0" + "hebrew_daleth\0" + "hebrew_doublelowline\0" + "hebrew_finalkaph\0" + "hebrew_finalmem\0" + "hebrew_finalnun\0" + "hebrew_finalpe\0" + "hebrew_finalzade\0" + "hebrew_finalzadi\0" + "hebrew_gimel\0" + "hebrew_gimmel\0" + "hebrew_he\0" + "hebrew_het\0" + "hebrew_kaph\0" + "hebrew_kuf\0" + "hebrew_lamed\0" + "hebrew_mem\0" + "hebrew_nun\0" + "hebrew_pe\0" + "hebrew_qoph\0" + "hebrew_resh\0" + "hebrew_samech\0" + "hebrew_samekh\0" + "hebrew_shin\0" + "Hebrew_switch\0" + "hebrew_taf\0" + "hebrew_taw\0" + "hebrew_tet\0" + "hebrew_teth\0" + "hebrew_waw\0" + "hebrew_yod\0" + "hebrew_zade\0" + "hebrew_zadi\0" + "hebrew_zain\0" + "hebrew_zayin\0" + "Help\0" + "Henkan\0" + "Henkan_Mode\0" + "hexagram\0" + "Hiragana\0" + "Hiragana_Katakana\0" + "Home\0" + "horizconnector\0" + "horizlinescan1\0" + "horizlinescan3\0" + "horizlinescan5\0" + "horizlinescan7\0" + "horizlinescan9\0" + "hpBackTab\0" + "hpblock\0" + "hpClearLine\0" + "hpDeleteChar\0" + "hpDeleteLine\0" + "hpguilder\0" + "hpInsertChar\0" + "hpInsertLine\0" + "hpIO\0" + "hpKP_BackTab\0" + "hplira\0" + "hplongminus\0" + "hpModelock1\0" + "hpModelock2\0" + "hpmute_acute\0" + "hpmute_asciicircum\0" + "hpmute_asciitilde\0" + "hpmute_diaeresis\0" + "hpmute_grave\0" + "hpReset\0" + "hpSystem\0" + "hpUser\0" + "hpYdiaeresis\0" + "Hstroke\0" + "hstroke\0" + "ht\0" + "Hyper_L\0" + "Hyper_R\0" + "hyphen\0" + "I\0" + "i\0" + "Iabovedot\0" + "Iacute\0" + "iacute\0" + "Ibelowdot\0" + "ibelowdot\0" + "Ibreve\0" + "ibreve\0" + "Icircumflex\0" + "icircumflex\0" + "identical\0" + "Idiaeresis\0" + "idiaeresis\0" + "idotless\0" + "ifonlyif\0" + "Igrave\0" + "igrave\0" + "Ihook\0" + "ihook\0" + "Imacron\0" + "imacron\0" + "implies\0" + "includedin\0" + "includes\0" + "infinity\0" + "Insert\0" + "InsertChar\0" + "InsertLine\0" + "integral\0" + "intersection\0" + "IO\0" + "Iogonek\0" + "iogonek\0" + "ISO_Center_Object\0" + "ISO_Continuous_Underline\0" + "ISO_Discontinuous_Underline\0" + "ISO_Emphasize\0" + "ISO_Enter\0" + "ISO_Fast_Cursor_Down\0" + "ISO_Fast_Cursor_Left\0" + "ISO_Fast_Cursor_Right\0" + "ISO_Fast_Cursor_Up\0" + "ISO_First_Group\0" + "ISO_First_Group_Lock\0" + "ISO_Group_Latch\0" + "ISO_Group_Lock\0" + "ISO_Group_Shift\0" + "ISO_Last_Group\0" + "ISO_Last_Group_Lock\0" + "ISO_Left_Tab\0" + "ISO_Level2_Latch\0" + "ISO_Level3_Latch\0" + "ISO_Level3_Lock\0" + "ISO_Level3_Shift\0" + "ISO_Level5_Latch\0" + "ISO_Level5_Lock\0" + "ISO_Level5_Shift\0" + "ISO_Lock\0" + "ISO_Move_Line_Down\0" + "ISO_Move_Line_Up\0" + "ISO_Next_Group\0" + "ISO_Next_Group_Lock\0" + "ISO_Partial_Line_Down\0" + "ISO_Partial_Line_Up\0" + "ISO_Partial_Space_Left\0" + "ISO_Partial_Space_Right\0" + "ISO_Prev_Group\0" + "ISO_Prev_Group_Lock\0" + "ISO_Release_Both_Margins\0" + "ISO_Release_Margin_Left\0" + "ISO_Release_Margin_Right\0" + "ISO_Set_Margin_Left\0" + "ISO_Set_Margin_Right\0" + "Itilde\0" + "itilde\0" + "J\0" + "j\0" + "Jcircumflex\0" + "jcircumflex\0" + "jot\0" + "K\0" + "k\0" + "kana_a\0" + "kana_A\0" + "kana_CHI\0" + "kana_closingbracket\0" + "kana_comma\0" + "kana_conjunctive\0" + "kana_e\0" + "kana_E\0" + "kana_FU\0" + "kana_fullstop\0" + "kana_HA\0" + "kana_HE\0" + "kana_HI\0" + "kana_HO\0" + "kana_HU\0" + "kana_i\0" + "kana_I\0" + "kana_KA\0" + "kana_KE\0" + "kana_KI\0" + "kana_KO\0" + "kana_KU\0" + "Kana_Lock\0" + "kana_MA\0" + "kana_ME\0" + "kana_MI\0" + "kana_middledot\0" + "kana_MO\0" + "kana_MU\0" + "kana_N\0" + "kana_NA\0" + "kana_NE\0" + "kana_NI\0" + "kana_NO\0" + "kana_NU\0" + "kana_o\0" + "kana_O\0" + "kana_openingbracket\0" + "kana_RA\0" + "kana_RE\0" + "kana_RI\0" + "kana_RO\0" + "kana_RU\0" + "kana_SA\0" + "kana_SE\0" + "kana_SHI\0" + "Kana_Shift\0" + "kana_SO\0" + "kana_SU\0" + "kana_switch\0" + "kana_TA\0" + "kana_TE\0" + "kana_TI\0" + "kana_TO\0" + "kana_tsu\0" + "kana_TSU\0" + "kana_tu\0" + "kana_TU\0" + "kana_u\0" + "kana_U\0" + "kana_WA\0" + "kana_WO\0" + "kana_ya\0" + "kana_YA\0" + "kana_yo\0" + "kana_YO\0" + "kana_yu\0" + "kana_YU\0" + "Kanji\0" + "Kanji_Bangou\0" + "kappa\0" + "Katakana\0" + "Kcedilla\0" + "kcedilla\0" + "Korean_Won\0" + "KP_0\0" + "KP_1\0" + "KP_2\0" + "KP_3\0" + "KP_4\0" + "KP_5\0" + "KP_6\0" + "KP_7\0" + "KP_8\0" + "KP_9\0" + "KP_Add\0" + "KP_BackTab\0" + "KP_Begin\0" + "KP_Decimal\0" + "KP_Delete\0" + "KP_Divide\0" + "KP_Down\0" + "KP_End\0" + "KP_Enter\0" + "KP_Equal\0" + "KP_F1\0" + "KP_F2\0" + "KP_F3\0" + "KP_F4\0" + "KP_Home\0" + "KP_Insert\0" + "KP_Left\0" + "KP_Multiply\0" + "KP_Next\0" + "KP_Page_Down\0" + "KP_Page_Up\0" + "KP_Prior\0" + "KP_Right\0" + "KP_Separator\0" + "KP_Space\0" + "KP_Subtract\0" + "KP_Tab\0" + "KP_Up\0" + "kra\0" + "L\0" + "l\0" + "L1\0" + "L10\0" + "L2\0" + "L3\0" + "L4\0" + "L5\0" + "L6\0" + "L7\0" + "L8\0" + "L9\0" + "Lacute\0" + "lacute\0" + "Last_Virtual_Screen\0" + "latincross\0" + "Lbelowdot\0" + "lbelowdot\0" + "Lcaron\0" + "lcaron\0" + "Lcedilla\0" + "lcedilla\0" + "Left\0" + "leftanglebracket\0" + "leftarrow\0" + "leftcaret\0" + "leftdoublequotemark\0" + "leftmiddlecurlybrace\0" + "leftopentriangle\0" + "leftpointer\0" + "leftradical\0" + "leftshoe\0" + "leftsinglequotemark\0" + "leftt\0" + "lefttack\0" + "less\0" + "lessthanequal\0" + "lf\0" + "Linefeed\0" + "lira\0" + "LiraSign\0" + "logicaland\0" + "logicalor\0" + "longminus\0" + "lowleftcorner\0" + "lowrightcorner\0" + "Lstroke\0" + "lstroke\0" + "M\0" + "m\0" + "Mabovedot\0" + "mabovedot\0" + "Macedonia_dse\0" + "Macedonia_DSE\0" + "Macedonia_gje\0" + "Macedonia_GJE\0" + "Macedonia_kje\0" + "Macedonia_KJE\0" + "macron\0" + "Mae_Koho\0" + "malesymbol\0" + "maltesecross\0" + "marker\0" + "masculine\0" + "Massyo\0" + "Menu\0" + "Meta_L\0" + "Meta_R\0" + "MillSign\0" + "minus\0" + "minutes\0" + "Mode_switch\0" + "MouseKeys_Accel_Enable\0" + "MouseKeys_Enable\0" + "mu\0" + "Muhenkan\0" + "Multi_key\0" + "MultipleCandidate\0" + "multiply\0" + "musicalflat\0" + "musicalsharp\0" + "mute_acute\0" + "mute_asciicircum\0" + "mute_asciitilde\0" + "mute_diaeresis\0" + "mute_grave\0" + "N\0" + "n\0" + "nabla\0" + "Nacute\0" + "nacute\0" + "NairaSign\0" + "Ncaron\0" + "ncaron\0" + "Ncedilla\0" + "ncedilla\0" + "NewSheqelSign\0" + "Next\0" + "Next_Virtual_Screen\0" + "ninesubscript\0" + "ninesuperior\0" + "nl\0" + "nobreakspace\0" + "NoSymbol\0" + "notapproxeq\0" + "notelementof\0" + "notequal\0" + "notidentical\0" + "notsign\0" + "Ntilde\0" + "ntilde\0" + "Num_Lock\0" + "numbersign\0" + "numerosign\0" + "O\0" + "o\0" + "Oacute\0" + "oacute\0" + "Obarred\0" + "obarred\0" + "Obelowdot\0" + "obelowdot\0" + "Ocaron\0" + "ocaron\0" + "Ocircumflex\0" + "ocircumflex\0" + "Ocircumflexacute\0" + "ocircumflexacute\0" + "Ocircumflexbelowdot\0" + "ocircumflexbelowdot\0" + "Ocircumflexgrave\0" + "ocircumflexgrave\0" + "Ocircumflexhook\0" + "ocircumflexhook\0" + "Ocircumflextilde\0" + "ocircumflextilde\0" + "Odiaeresis\0" + "odiaeresis\0" + "Odoubleacute\0" + "odoubleacute\0" + "OE\0" + "oe\0" + "ogonek\0" + "Ograve\0" + "ograve\0" + "Ohook\0" + "ohook\0" + "Ohorn\0" + "ohorn\0" + "Ohornacute\0" + "ohornacute\0" + "Ohornbelowdot\0" + "ohornbelowdot\0" + "Ohorngrave\0" + "ohorngrave\0" + "Ohornhook\0" + "ohornhook\0" + "Ohorntilde\0" + "ohorntilde\0" + "Omacron\0" + "omacron\0" + "oneeighth\0" + "onefifth\0" + "onehalf\0" + "onequarter\0" + "onesixth\0" + "onesubscript\0" + "onesuperior\0" + "onethird\0" + "Ooblique\0" + "ooblique\0" + "openrectbullet\0" + "openstar\0" + "opentribulletdown\0" + "opentribulletup\0" + "ordfeminine\0" + "osfActivate\0" + "osfAddMode\0" + "osfBackSpace\0" + "osfBackTab\0" + "osfBeginData\0" + "osfBeginLine\0" + "osfCancel\0" + "osfClear\0" + "osfCopy\0" + "osfCut\0" + "osfDelete\0" + "osfDeselectAll\0" + "osfDown\0" + "osfEndData\0" + "osfEndLine\0" + "osfEscape\0" + "osfExtend\0" + "osfHelp\0" + "osfInsert\0" + "osfLeft\0" + "osfMenu\0" + "osfMenuBar\0" + "osfNextField\0" + "osfNextMenu\0" + "osfPageDown\0" + "osfPageLeft\0" + "osfPageRight\0" + "osfPageUp\0" + "osfPaste\0" + "osfPrevField\0" + "osfPrevMenu\0" + "osfPrimaryPaste\0" + "osfQuickPaste\0" + "osfReselect\0" + "osfRestore\0" + "osfRight\0" + "osfSelect\0" + "osfSelectAll\0" + "osfUndo\0" + "osfUp\0" + "Oslash\0" + "oslash\0" + "Otilde\0" + "otilde\0" + "overbar\0" + "Overlay1_Enable\0" + "Overlay2_Enable\0" + "overline\0" + "P\0" + "p\0" + "Pabovedot\0" + "pabovedot\0" + "Page_Down\0" + "Page_Up\0" + "paragraph\0" + "parenleft\0" + "parenright\0" + "partdifferential\0" + "partialderivative\0" + "Pause\0" + "percent\0" + "period\0" + "periodcentered\0" + "permille\0" + "PesetaSign\0" + "phonographcopyright\0" + "plus\0" + "plusminus\0" + "Pointer_Accelerate\0" + "Pointer_Button1\0" + "Pointer_Button2\0" + "Pointer_Button3\0" + "Pointer_Button4\0" + "Pointer_Button5\0" + "Pointer_Button_Dflt\0" + "Pointer_DblClick1\0" + "Pointer_DblClick2\0" + "Pointer_DblClick3\0" + "Pointer_DblClick4\0" + "Pointer_DblClick5\0" + "Pointer_DblClick_Dflt\0" + "Pointer_DfltBtnNext\0" + "Pointer_DfltBtnPrev\0" + "Pointer_Down\0" + "Pointer_DownLeft\0" + "Pointer_DownRight\0" + "Pointer_Drag1\0" + "Pointer_Drag2\0" + "Pointer_Drag3\0" + "Pointer_Drag4\0" + "Pointer_Drag5\0" + "Pointer_Drag_Dflt\0" + "Pointer_EnableKeys\0" + "Pointer_Left\0" + "Pointer_Right\0" + "Pointer_Up\0" + "Pointer_UpLeft\0" + "Pointer_UpRight\0" + "prescription\0" + "Prev_Virtual_Screen\0" + "PreviousCandidate\0" + "Print\0" + "Prior\0" + "prolongedsound\0" + "punctspace\0" + "Q\0" + "q\0" + "quad\0" + "question\0" + "questiondown\0" + "quotedbl\0" + "quoteleft\0" + "quoteright\0" + "R\0" + "r\0" + "R1\0" + "R10\0" + "R11\0" + "R12\0" + "R13\0" + "R14\0" + "R15\0" + "R2\0" + "R3\0" + "R4\0" + "R5\0" + "R6\0" + "R7\0" + "R8\0" + "R9\0" + "Racute\0" + "racute\0" + "radical\0" + "Rcaron\0" + "rcaron\0" + "Rcedilla\0" + "rcedilla\0" + "Redo\0" + "registered\0" + "RepeatKeys_Enable\0" + "Reset\0" + "Return\0" + "Right\0" + "rightanglebracket\0" + "rightarrow\0" + "rightcaret\0" + "rightdoublequotemark\0" + "rightmiddlecurlybrace\0" + "rightmiddlesummation\0" + "rightopentriangle\0" + "rightpointer\0" + "rightshoe\0" + "rightsinglequotemark\0" + "rightt\0" + "righttack\0" + "Romaji\0" + "RupeeSign\0" + "S\0" + "s\0" + "Sabovedot\0" + "sabovedot\0" + "Sacute\0" + "sacute\0" + "Scaron\0" + "scaron\0" + "Scedilla\0" + "scedilla\0" + "SCHWA\0" + "schwa\0" + "Scircumflex\0" + "scircumflex\0" + "script_switch\0" + "Scroll_Lock\0" + "seconds\0" + "section\0" + "Select\0" + "semicolon\0" + "semivoicedsound\0" + "Serbian_dje\0" + "Serbian_DJE\0" + "Serbian_dze\0" + "Serbian_DZE\0" + "Serbian_je\0" + "Serbian_JE\0" + "Serbian_lje\0" + "Serbian_LJE\0" + "Serbian_nje\0" + "Serbian_NJE\0" + "Serbian_tshe\0" + "Serbian_TSHE\0" + "seveneighths\0" + "sevensubscript\0" + "sevensuperior\0" + "Shift_L\0" + "Shift_Lock\0" + "Shift_R\0" + "signaturemark\0" + "signifblank\0" + "similarequal\0" + "SingleCandidate\0" + "singlelowquotemark\0" + "Sinh_a\0" + "Sinh_aa\0" + "Sinh_aa2\0" + "Sinh_ae\0" + "Sinh_ae2\0" + "Sinh_aee\0" + "Sinh_aee2\0" + "Sinh_ai\0" + "Sinh_ai2\0" + "Sinh_al\0" + "Sinh_au\0" + "Sinh_au2\0" + "Sinh_ba\0" + "Sinh_bha\0" + "Sinh_ca\0" + "Sinh_cha\0" + "Sinh_dda\0" + "Sinh_ddha\0" + "Sinh_dha\0" + "Sinh_dhha\0" + "Sinh_e\0" + "Sinh_e2\0" + "Sinh_ee\0" + "Sinh_ee2\0" + "Sinh_fa\0" + "Sinh_ga\0" + "Sinh_gha\0" + "Sinh_h2\0" + "Sinh_ha\0" + "Sinh_i\0" + "Sinh_i2\0" + "Sinh_ii\0" + "Sinh_ii2\0" + "Sinh_ja\0" + "Sinh_jha\0" + "Sinh_jnya\0" + "Sinh_ka\0" + "Sinh_kha\0" + "Sinh_kunddaliya\0" + "Sinh_la\0" + "Sinh_lla\0" + "Sinh_lu\0" + "Sinh_lu2\0" + "Sinh_luu\0" + "Sinh_luu2\0" + "Sinh_ma\0" + "Sinh_mba\0" + "Sinh_na\0" + "Sinh_ndda\0" + "Sinh_ndha\0" + "Sinh_ng\0" + "Sinh_ng2\0" + "Sinh_nga\0" + "Sinh_nja\0" + "Sinh_nna\0" + "Sinh_nya\0" + "Sinh_o\0" + "Sinh_o2\0" + "Sinh_oo\0" + "Sinh_oo2\0" + "Sinh_pa\0" + "Sinh_pha\0" + "Sinh_ra\0" + "Sinh_ri\0" + "Sinh_rii\0" + "Sinh_ru2\0" + "Sinh_ruu2\0" + "Sinh_sa\0" + "Sinh_sha\0" + "Sinh_ssha\0" + "Sinh_tha\0" + "Sinh_thha\0" + "Sinh_tta\0" + "Sinh_ttha\0" + "Sinh_u\0" + "Sinh_u2\0" + "Sinh_uu\0" + "Sinh_uu2\0" + "Sinh_va\0" + "Sinh_ya\0" + "sixsubscript\0" + "sixsuperior\0" + "slash\0" + "SlowKeys_Enable\0" + "soliddiamond\0" + "space\0" + "squareroot\0" + "ssharp\0" + "sterling\0" + "StickyKeys_Enable\0" + "stricteq\0" + "SunAgain\0" + "SunAltGraph\0" + "SunAudioLowerVolume\0" + "SunAudioMute\0" + "SunAudioRaiseVolume\0" + "SunCompose\0" + "SunCopy\0" + "SunCut\0" + "SunF36\0" + "SunF37\0" + "SunFA_Acute\0" + "SunFA_Cedilla\0" + "SunFA_Circum\0" + "SunFA_Diaeresis\0" + "SunFA_Grave\0" + "SunFA_Tilde\0" + "SunFind\0" + "SunFront\0" + "SunOpen\0" + "SunPageDown\0" + "SunPageUp\0" + "SunPaste\0" + "SunPowerSwitch\0" + "SunPowerSwitchShift\0" + "SunPrint_Screen\0" + "SunProps\0" + "SunStop\0" + "SunSys_Req\0" + "SunUndo\0" + "SunVideoDegauss\0" + "SunVideoLowerBrightness\0" + "SunVideoRaiseBrightness\0" + "Super_L\0" + "Super_R\0" + "Sys_Req\0" + "System\0" + "T\0" + "t\0" + "Tab\0" + "Tabovedot\0" + "tabovedot\0" + "Tcaron\0" + "tcaron\0" + "Tcedilla\0" + "tcedilla\0" + "telephone\0" + "telephonerecorder\0" + "Terminate_Server\0" + "Thai_baht\0" + "Thai_bobaimai\0" + "Thai_chochan\0" + "Thai_chochang\0" + "Thai_choching\0" + "Thai_chochoe\0" + "Thai_dochada\0" + "Thai_dodek\0" + "Thai_fofa\0" + "Thai_fofan\0" + "Thai_hohip\0" + "Thai_honokhuk\0" + "Thai_khokhai\0" + "Thai_khokhon\0" + "Thai_khokhuat\0" + "Thai_khokhwai\0" + "Thai_khorakhang\0" + "Thai_kokai\0" + "Thai_lakkhangyao\0" + "Thai_lekchet\0" + "Thai_lekha\0" + "Thai_lekhok\0" + "Thai_lekkao\0" + "Thai_leknung\0" + "Thai_lekpaet\0" + "Thai_leksam\0" + "Thai_leksi\0" + "Thai_leksong\0" + "Thai_leksun\0" + "Thai_lochula\0" + "Thai_loling\0" + "Thai_lu\0" + "Thai_maichattawa\0" + "Thai_maiek\0" + "Thai_maihanakat\0" + "Thai_maihanakat_maitho\0" + "Thai_maitaikhu\0" + "Thai_maitho\0" + "Thai_maitri\0" + "Thai_maiyamok\0" + "Thai_moma\0" + "Thai_ngongu\0" + "Thai_nikhahit\0" + "Thai_nonen\0" + "Thai_nonu\0" + "Thai_oang\0" + "Thai_paiyannoi\0" + "Thai_phinthu\0" + "Thai_phophan\0" + "Thai_phophung\0" + "Thai_phosamphao\0" + "Thai_popla\0" + "Thai_rorua\0" + "Thai_ru\0" + "Thai_saraa\0" + "Thai_saraaa\0" + "Thai_saraae\0" + "Thai_saraaimaimalai\0" + "Thai_saraaimaimuan\0" + "Thai_saraam\0" + "Thai_sarae\0" + "Thai_sarai\0" + "Thai_saraii\0" + "Thai_sarao\0" + "Thai_sarau\0" + "Thai_saraue\0" + "Thai_sarauee\0" + "Thai_sarauu\0" + "Thai_sorusi\0" + "Thai_sosala\0" + "Thai_soso\0" + "Thai_sosua\0" + "Thai_thanthakhat\0" + "Thai_thonangmontho\0" + "Thai_thophuthao\0" + "Thai_thothahan\0" + "Thai_thothan\0" + "Thai_thothong\0" + "Thai_thothung\0" + "Thai_topatak\0" + "Thai_totao\0" + "Thai_wowaen\0" + "Thai_yoyak\0" + "Thai_yoying\0" + "therefore\0" + "thinspace\0" + "THORN\0" + "Thorn\0" + "thorn\0" + "threeeighths\0" + "threefifths\0" + "threequarters\0" + "threesubscript\0" + "threesuperior\0" + "tintegral\0" + "topintegral\0" + "topleftparens\0" + "topleftradical\0" + "topleftsqbracket\0" + "topleftsummation\0" + "toprightparens\0" + "toprightsqbracket\0" + "toprightsummation\0" + "topt\0" + "topvertsummationconnector\0" + "Touroku\0" + "trademark\0" + "trademarkincircle\0" + "Tslash\0" + "tslash\0" + "twofifths\0" + "twosubscript\0" + "twosuperior\0" + "twothirds\0" + "U\0" + "u\0" + "Uacute\0" + "uacute\0" + "Ubelowdot\0" + "ubelowdot\0" + "Ubreve\0" + "ubreve\0" + "Ucircumflex\0" + "ucircumflex\0" + "Udiaeresis\0" + "udiaeresis\0" + "Udoubleacute\0" + "udoubleacute\0" + "Ugrave\0" + "ugrave\0" + "Uhook\0" + "uhook\0" + "Uhorn\0" + "uhorn\0" + "Uhornacute\0" + "uhornacute\0" + "Uhornbelowdot\0" + "uhornbelowdot\0" + "Uhorngrave\0" + "uhorngrave\0" + "Uhornhook\0" + "uhornhook\0" + "Uhorntilde\0" + "uhorntilde\0" + "Ukrainian_ghe_with_upturn\0" + "Ukrainian_GHE_WITH_UPTURN\0" + "Ukrainian_i\0" + "Ukrainian_I\0" + "Ukrainian_ie\0" + "Ukrainian_IE\0" + "Ukrainian_yi\0" + "Ukrainian_YI\0" + "Ukranian_i\0" + "Ukranian_I\0" + "Ukranian_je\0" + "Ukranian_JE\0" + "Ukranian_yi\0" + "Ukranian_YI\0" + "Umacron\0" + "umacron\0" + "underbar\0" + "underscore\0" + "Undo\0" + "union\0" + "Uogonek\0" + "uogonek\0" + "Up\0" + "uparrow\0" + "upcaret\0" + "upleftcorner\0" + "uprightcorner\0" + "upshoe\0" + "upstile\0" + "uptack\0" + "Uring\0" + "uring\0" + "User\0" + "Utilde\0" + "utilde\0" + "V\0" + "v\0" + "variation\0" + "vertbar\0" + "vertconnector\0" + "voicedsound\0" + "VoidSymbol\0" + "vt\0" + "W\0" + "w\0" + "Wacute\0" + "wacute\0" + "Wcircumflex\0" + "wcircumflex\0" + "Wdiaeresis\0" + "wdiaeresis\0" + "Wgrave\0" + "wgrave\0" + "WonSign\0" + "X\0" + "x\0" + "Xabovedot\0" + "xabovedot\0" + "XF86AddFavorite\0" + "XF86ApplicationLeft\0" + "XF86ApplicationRight\0" + "XF86AudioCycleTrack\0" + "XF86AudioForward\0" + "XF86AudioLowerVolume\0" + "XF86AudioMedia\0" + "XF86AudioMicMute\0" + "XF86AudioMute\0" + "XF86AudioNext\0" + "XF86AudioPause\0" + "XF86AudioPlay\0" + "XF86AudioPrev\0" + "XF86AudioRaiseVolume\0" + "XF86AudioRandomPlay\0" + "XF86AudioRecord\0" + "XF86AudioRepeat\0" + "XF86AudioRewind\0" + "XF86AudioStop\0" + "XF86Away\0" + "XF86Back\0" + "XF86BackForward\0" + "XF86Battery\0" + "XF86Blue\0" + "XF86Bluetooth\0" + "XF86Book\0" + "XF86BrightnessAdjust\0" + "XF86Calculater\0" + "XF86Calculator\0" + "XF86Calendar\0" + "XF86CD\0" + "XF86Clear\0" + "XF86ClearGrab\0" + "XF86Close\0" + "XF86Community\0" + "XF86ContrastAdjust\0" + "XF86Copy\0" + "XF86Cut\0" + "XF86CycleAngle\0" + "XF86Display\0" + "XF86Documents\0" + "XF86DOS\0" + "XF86Eject\0" + "XF86Excel\0" + "XF86Explorer\0" + "XF86Favorites\0" + "XF86Finance\0" + "XF86Forward\0" + "XF86FrameBack\0" + "XF86FrameForward\0" + "XF86Game\0" + "XF86Go\0" + "XF86Green\0" + "XF86Hibernate\0" + "XF86History\0" + "XF86HomePage\0" + "XF86HotLinks\0" + "XF86iTouch\0" + "XF86KbdBrightnessDown\0" + "XF86KbdBrightnessUp\0" + "XF86KbdLightOnOff\0" + "XF86Launch0\0" + "XF86Launch1\0" + "XF86Launch2\0" + "XF86Launch3\0" + "XF86Launch4\0" + "XF86Launch5\0" + "XF86Launch6\0" + "XF86Launch7\0" + "XF86Launch8\0" + "XF86Launch9\0" + "XF86LaunchA\0" + "XF86LaunchB\0" + "XF86LaunchC\0" + "XF86LaunchD\0" + "XF86LaunchE\0" + "XF86LaunchF\0" + "XF86LightBulb\0" + "XF86LogGrabInfo\0" + "XF86LogOff\0" + "XF86LogWindowTree\0" + "XF86Mail\0" + "XF86MailForward\0" + "XF86Market\0" + "XF86Meeting\0" + "XF86Memo\0" + "XF86MenuKB\0" + "XF86MenuPB\0" + "XF86Messenger\0" + "XF86ModeLock\0" + "XF86MonBrightnessDown\0" + "XF86MonBrightnessUp\0" + "XF86Music\0" + "XF86MyComputer\0" + "XF86MySites\0" + "XF86New\0" + "XF86News\0" + "XF86Next_VMode\0" + "XF86OfficeHome\0" + "XF86Open\0" + "XF86OpenURL\0" + "XF86Option\0" + "XF86Paste\0" + "XF86Phone\0" + "XF86Pictures\0" + "XF86PowerDown\0" + "XF86PowerOff\0" + "XF86Prev_VMode\0" + "XF86Q\0" + "XF86Red\0" + "XF86Refresh\0" + "XF86Reload\0" + "XF86Reply\0" + "XF86RockerDown\0" + "XF86RockerEnter\0" + "XF86RockerUp\0" + "XF86RotateWindows\0" + "XF86RotationKB\0" + "XF86RotationPB\0" + "XF86Save\0" + "XF86ScreenSaver\0" + "XF86ScrollClick\0" + "XF86ScrollDown\0" + "XF86ScrollUp\0" + "XF86Search\0" + "XF86Select\0" + "XF86Send\0" + "XF86Shop\0" + "XF86Sleep\0" + "XF86Spell\0" + "XF86SplitScreen\0" + "XF86Standby\0" + "XF86Start\0" + "XF86Stop\0" + "XF86Subtitle\0" + "XF86Support\0" + "XF86Suspend\0" + "XF86Switch_VT_1\0" + "XF86Switch_VT_10\0" + "XF86Switch_VT_11\0" + "XF86Switch_VT_12\0" + "XF86Switch_VT_2\0" + "XF86Switch_VT_3\0" + "XF86Switch_VT_4\0" + "XF86Switch_VT_5\0" + "XF86Switch_VT_6\0" + "XF86Switch_VT_7\0" + "XF86Switch_VT_8\0" + "XF86Switch_VT_9\0" + "XF86TaskPane\0" + "XF86Terminal\0" + "XF86Time\0" + "XF86ToDoList\0" + "XF86Tools\0" + "XF86TopMenu\0" + "XF86TouchpadOff\0" + "XF86TouchpadOn\0" + "XF86TouchpadToggle\0" + "XF86Travel\0" + "XF86Ungrab\0" + "XF86User1KB\0" + "XF86User2KB\0" + "XF86UserPB\0" + "XF86UWB\0" + "XF86VendorHome\0" + "XF86Video\0" + "XF86View\0" + "XF86WakeUp\0" + "XF86WebCam\0" + "XF86WheelButton\0" + "XF86WLAN\0" + "XF86Word\0" + "XF86WWW\0" + "XF86Xfer\0" + "XF86Yellow\0" + "XF86ZoomIn\0" + "XF86ZoomOut\0" + "Y\0" + "y\0" + "Yacute\0" + "yacute\0" + "Ybelowdot\0" + "ybelowdot\0" + "Ycircumflex\0" + "ycircumflex\0" + "ydiaeresis\0" + "Ydiaeresis\0" + "yen\0" + "Ygrave\0" + "ygrave\0" + "Yhook\0" + "yhook\0" + "Ytilde\0" + "ytilde\0" + "Z\0" + "z\0" + "Zabovedot\0" + "zabovedot\0" + "Zacute\0" + "zacute\0" + "Zcaron\0" + "zcaron\0" + "Zen_Koho\0" + "Zenkaku\0" + "Zenkaku_Hankaku\0" + "zerosubscript\0" + "zerosuperior\0" + "Zstroke\0" + "zstroke\0" +; +#pragma GCC diagnostic pop + +struct name_keysym { + xkb_keysym_t keysym; + uint32_t offset; +}; + +static const struct name_keysym name_to_keysym[] = { + { 0x00000030, 0 }, /* 0 */ + { 0x00000031, 2 }, /* 1 */ + { 0x00000032, 4 }, /* 2 */ + { 0x00000033, 6 }, /* 3 */ + { 0x0000fd10, 8 }, /* 3270_AltCursor */ + { 0x0000fd0e, 23 }, /* 3270_Attn */ + { 0x0000fd05, 33 }, /* 3270_BackTab */ + { 0x0000fd19, 46 }, /* 3270_ChangeScreen */ + { 0x0000fd15, 64 }, /* 3270_Copy */ + { 0x0000fd0f, 74 }, /* 3270_CursorBlink */ + { 0x0000fd1c, 91 }, /* 3270_CursorSelect */ + { 0x0000fd1a, 109 }, /* 3270_DeleteWord */ + { 0x0000fd01, 125 }, /* 3270_Duplicate */ + { 0x0000fd1e, 140 }, /* 3270_Enter */ + { 0x0000fd06, 151 }, /* 3270_EraseEOF */ + { 0x0000fd07, 165 }, /* 3270_EraseInput */ + { 0x0000fd1b, 181 }, /* 3270_ExSelect */ + { 0x0000fd02, 195 }, /* 3270_FieldMark */ + { 0x0000fd13, 210 }, /* 3270_Ident */ + { 0x0000fd12, 221 }, /* 3270_Jump */ + { 0x0000fd11, 231 }, /* 3270_KeyClick */ + { 0x0000fd04, 245 }, /* 3270_Left2 */ + { 0x0000fd0a, 256 }, /* 3270_PA1 */ + { 0x0000fd0b, 265 }, /* 3270_PA2 */ + { 0x0000fd0c, 274 }, /* 3270_PA3 */ + { 0x0000fd16, 283 }, /* 3270_Play */ + { 0x0000fd1d, 293 }, /* 3270_PrintScreen */ + { 0x0000fd09, 310 }, /* 3270_Quit */ + { 0x0000fd18, 320 }, /* 3270_Record */ + { 0x0000fd08, 332 }, /* 3270_Reset */ + { 0x0000fd03, 343 }, /* 3270_Right2 */ + { 0x0000fd14, 355 }, /* 3270_Rule */ + { 0x0000fd17, 365 }, /* 3270_Setup */ + { 0x0000fd0d, 376 }, /* 3270_Test */ + { 0x00000034, 386 }, /* 4 */ + { 0x00000035, 388 }, /* 5 */ + { 0x00000036, 390 }, /* 6 */ + { 0x00000037, 392 }, /* 7 */ + { 0x00000038, 394 }, /* 8 */ + { 0x00000039, 396 }, /* 9 */ + { 0x00000041, 398 }, /* A */ + { 0x00000061, 400 }, /* a */ + { 0x000000c1, 402 }, /* Aacute */ + { 0x000000e1, 409 }, /* aacute */ + { 0x01001ea0, 416 }, /* Abelowdot */ + { 0x01001ea1, 426 }, /* abelowdot */ + { 0x000001ff, 436 }, /* abovedot */ + { 0x000001c3, 445 }, /* Abreve */ + { 0x000001e3, 452 }, /* abreve */ + { 0x01001eae, 459 }, /* Abreveacute */ + { 0x01001eaf, 471 }, /* abreveacute */ + { 0x01001eb6, 483 }, /* Abrevebelowdot */ + { 0x01001eb7, 498 }, /* abrevebelowdot */ + { 0x01001eb0, 513 }, /* Abrevegrave */ + { 0x01001eb1, 525 }, /* abrevegrave */ + { 0x01001eb2, 537 }, /* Abrevehook */ + { 0x01001eb3, 548 }, /* abrevehook */ + { 0x01001eb4, 559 }, /* Abrevetilde */ + { 0x01001eb5, 571 }, /* abrevetilde */ + { 0x0000fe70, 583 }, /* AccessX_Enable */ + { 0x0000fe71, 598 }, /* AccessX_Feedback_Enable */ + { 0x000000c2, 622 }, /* Acircumflex */ + { 0x000000e2, 634 }, /* acircumflex */ + { 0x01001ea4, 646 }, /* Acircumflexacute */ + { 0x01001ea5, 663 }, /* acircumflexacute */ + { 0x01001eac, 680 }, /* Acircumflexbelowdot */ + { 0x01001ead, 700 }, /* acircumflexbelowdot */ + { 0x01001ea6, 720 }, /* Acircumflexgrave */ + { 0x01001ea7, 737 }, /* acircumflexgrave */ + { 0x01001ea8, 754 }, /* Acircumflexhook */ + { 0x01001ea9, 770 }, /* acircumflexhook */ + { 0x01001eaa, 786 }, /* Acircumflextilde */ + { 0x01001eab, 803 }, /* acircumflextilde */ + { 0x000000b4, 820 }, /* acute */ + { 0x000000c4, 826 }, /* Adiaeresis */ + { 0x000000e4, 837 }, /* adiaeresis */ + { 0x000000c6, 848 }, /* AE */ + { 0x000000e6, 851 }, /* ae */ + { 0x000000c0, 854 }, /* Agrave */ + { 0x000000e0, 861 }, /* agrave */ + { 0x01001ea2, 868 }, /* Ahook */ + { 0x01001ea3, 874 }, /* ahook */ + { 0x0000ffe9, 880 }, /* Alt_L */ + { 0x0000ffea, 886 }, /* Alt_R */ + { 0x000003c0, 892 }, /* Amacron */ + { 0x000003e0, 900 }, /* amacron */ + { 0x00000026, 908 }, /* ampersand */ + { 0x000001a1, 918 }, /* Aogonek */ + { 0x000001b1, 926 }, /* aogonek */ + { 0x00000027, 934 }, /* apostrophe */ + { 0x01002248, 945 }, /* approxeq */ + { 0x000008c8, 954 }, /* approximate */ + { 0x01000660, 966 }, /* Arabic_0 */ + { 0x01000661, 975 }, /* Arabic_1 */ + { 0x01000662, 984 }, /* Arabic_2 */ + { 0x01000663, 993 }, /* Arabic_3 */ + { 0x01000664, 1002 }, /* Arabic_4 */ + { 0x01000665, 1011 }, /* Arabic_5 */ + { 0x01000666, 1020 }, /* Arabic_6 */ + { 0x01000667, 1029 }, /* Arabic_7 */ + { 0x01000668, 1038 }, /* Arabic_8 */ + { 0x01000669, 1047 }, /* Arabic_9 */ + { 0x000005d9, 1056 }, /* Arabic_ain */ + { 0x000005c7, 1067 }, /* Arabic_alef */ + { 0x000005e9, 1079 }, /* Arabic_alefmaksura */ + { 0x000005c8, 1098 }, /* Arabic_beh */ + { 0x000005ac, 1109 }, /* Arabic_comma */ + { 0x000005d6, 1122 }, /* Arabic_dad */ + { 0x000005cf, 1133 }, /* Arabic_dal */ + { 0x000005ef, 1144 }, /* Arabic_damma */ + { 0x000005ec, 1157 }, /* Arabic_dammatan */ + { 0x01000688, 1173 }, /* Arabic_ddal */ + { 0x010006cc, 1185 }, /* Arabic_farsi_yeh */ + { 0x000005ee, 1202 }, /* Arabic_fatha */ + { 0x000005eb, 1215 }, /* Arabic_fathatan */ + { 0x000005e1, 1231 }, /* Arabic_feh */ + { 0x010006d4, 1242 }, /* Arabic_fullstop */ + { 0x010006af, 1258 }, /* Arabic_gaf */ + { 0x000005da, 1269 }, /* Arabic_ghain */ + { 0x000005e7, 1282 }, /* Arabic_ha */ + { 0x000005cd, 1292 }, /* Arabic_hah */ + { 0x000005c1, 1303 }, /* Arabic_hamza */ + { 0x01000654, 1316 }, /* Arabic_hamza_above */ + { 0x01000655, 1335 }, /* Arabic_hamza_below */ + { 0x000005c3, 1354 }, /* Arabic_hamzaonalef */ + { 0x000005c4, 1373 }, /* Arabic_hamzaonwaw */ + { 0x000005c6, 1391 }, /* Arabic_hamzaonyeh */ + { 0x000005c5, 1409 }, /* Arabic_hamzaunderalef */ + { 0x000005e7, 1431 }, /* Arabic_heh */ + { 0x010006be, 1442 }, /* Arabic_heh_doachashmee */ + { 0x010006c1, 1465 }, /* Arabic_heh_goal */ + { 0x000005cc, 1481 }, /* Arabic_jeem */ + { 0x01000698, 1493 }, /* Arabic_jeh */ + { 0x000005e3, 1504 }, /* Arabic_kaf */ + { 0x000005f0, 1515 }, /* Arabic_kasra */ + { 0x000005ed, 1528 }, /* Arabic_kasratan */ + { 0x010006a9, 1544 }, /* Arabic_keheh */ + { 0x000005ce, 1557 }, /* Arabic_khah */ + { 0x000005e4, 1569 }, /* Arabic_lam */ + { 0x01000653, 1580 }, /* Arabic_madda_above */ + { 0x000005c2, 1599 }, /* Arabic_maddaonalef */ + { 0x000005e5, 1618 }, /* Arabic_meem */ + { 0x000005e6, 1630 }, /* Arabic_noon */ + { 0x010006ba, 1642 }, /* Arabic_noon_ghunna */ + { 0x0100067e, 1661 }, /* Arabic_peh */ + { 0x0100066a, 1672 }, /* Arabic_percent */ + { 0x000005e2, 1687 }, /* Arabic_qaf */ + { 0x000005bf, 1698 }, /* Arabic_question_mark */ + { 0x000005d1, 1719 }, /* Arabic_ra */ + { 0x01000691, 1729 }, /* Arabic_rreh */ + { 0x000005d5, 1741 }, /* Arabic_sad */ + { 0x000005d3, 1752 }, /* Arabic_seen */ + { 0x000005bb, 1764 }, /* Arabic_semicolon */ + { 0x000005f1, 1781 }, /* Arabic_shadda */ + { 0x000005d4, 1795 }, /* Arabic_sheen */ + { 0x000005f2, 1808 }, /* Arabic_sukun */ + { 0x01000670, 1821 }, /* Arabic_superscript_alef */ + { 0x0000ff7e, 1845 }, /* Arabic_switch */ + { 0x000005d7, 1859 }, /* Arabic_tah */ + { 0x000005e0, 1870 }, /* Arabic_tatweel */ + { 0x01000686, 1885 }, /* Arabic_tcheh */ + { 0x000005ca, 1898 }, /* Arabic_teh */ + { 0x000005c9, 1909 }, /* Arabic_tehmarbuta */ + { 0x000005d0, 1927 }, /* Arabic_thal */ + { 0x000005cb, 1939 }, /* Arabic_theh */ + { 0x01000679, 1951 }, /* Arabic_tteh */ + { 0x010006a4, 1963 }, /* Arabic_veh */ + { 0x000005e8, 1974 }, /* Arabic_waw */ + { 0x000005ea, 1985 }, /* Arabic_yeh */ + { 0x010006d2, 1996 }, /* Arabic_yeh_baree */ + { 0x000005d8, 2013 }, /* Arabic_zah */ + { 0x000005d2, 2024 }, /* Arabic_zain */ + { 0x000000c5, 2036 }, /* Aring */ + { 0x000000e5, 2042 }, /* aring */ + { 0x0100055b, 2048 }, /* Armenian_accent */ + { 0x0100055c, 2064 }, /* Armenian_amanak */ + { 0x0100055a, 2080 }, /* Armenian_apostrophe */ + { 0x01000538, 2100 }, /* Armenian_AT */ + { 0x01000568, 2112 }, /* Armenian_at */ + { 0x01000531, 2124 }, /* Armenian_AYB */ + { 0x01000561, 2137 }, /* Armenian_ayb */ + { 0x01000532, 2150 }, /* Armenian_BEN */ + { 0x01000562, 2163 }, /* Armenian_ben */ + { 0x0100055d, 2176 }, /* Armenian_but */ + { 0x01000549, 2189 }, /* Armenian_CHA */ + { 0x01000579, 2202 }, /* Armenian_cha */ + { 0x01000534, 2215 }, /* Armenian_DA */ + { 0x01000564, 2227 }, /* Armenian_da */ + { 0x01000541, 2239 }, /* Armenian_DZA */ + { 0x01000571, 2252 }, /* Armenian_dza */ + { 0x01000537, 2265 }, /* Armenian_E */ + { 0x01000567, 2276 }, /* Armenian_e */ + { 0x0100055c, 2287 }, /* Armenian_exclam */ + { 0x01000556, 2303 }, /* Armenian_FE */ + { 0x01000586, 2315 }, /* Armenian_fe */ + { 0x01000589, 2327 }, /* Armenian_full_stop */ + { 0x01000542, 2346 }, /* Armenian_GHAT */ + { 0x01000572, 2360 }, /* Armenian_ghat */ + { 0x01000533, 2374 }, /* Armenian_GIM */ + { 0x01000563, 2387 }, /* Armenian_gim */ + { 0x01000545, 2400 }, /* Armenian_HI */ + { 0x01000575, 2412 }, /* Armenian_hi */ + { 0x01000540, 2424 }, /* Armenian_HO */ + { 0x01000570, 2436 }, /* Armenian_ho */ + { 0x0100058a, 2448 }, /* Armenian_hyphen */ + { 0x0100053b, 2464 }, /* Armenian_INI */ + { 0x0100056b, 2477 }, /* Armenian_ini */ + { 0x0100054b, 2490 }, /* Armenian_JE */ + { 0x0100057b, 2502 }, /* Armenian_je */ + { 0x01000554, 2514 }, /* Armenian_KE */ + { 0x01000584, 2526 }, /* Armenian_ke */ + { 0x0100053f, 2538 }, /* Armenian_KEN */ + { 0x0100056f, 2551 }, /* Armenian_ken */ + { 0x0100053d, 2564 }, /* Armenian_KHE */ + { 0x0100056d, 2577 }, /* Armenian_khe */ + { 0x01000587, 2590 }, /* Armenian_ligature_ew */ + { 0x0100053c, 2611 }, /* Armenian_LYUN */ + { 0x0100056c, 2625 }, /* Armenian_lyun */ + { 0x01000544, 2639 }, /* Armenian_MEN */ + { 0x01000574, 2652 }, /* Armenian_men */ + { 0x01000546, 2665 }, /* Armenian_NU */ + { 0x01000576, 2677 }, /* Armenian_nu */ + { 0x01000555, 2689 }, /* Armenian_O */ + { 0x01000585, 2700 }, /* Armenian_o */ + { 0x0100055e, 2711 }, /* Armenian_paruyk */ + { 0x0100054a, 2727 }, /* Armenian_PE */ + { 0x0100057a, 2739 }, /* Armenian_pe */ + { 0x01000553, 2751 }, /* Armenian_PYUR */ + { 0x01000583, 2765 }, /* Armenian_pyur */ + { 0x0100055e, 2779 }, /* Armenian_question */ + { 0x0100054c, 2797 }, /* Armenian_RA */ + { 0x0100057c, 2809 }, /* Armenian_ra */ + { 0x01000550, 2821 }, /* Armenian_RE */ + { 0x01000580, 2833 }, /* Armenian_re */ + { 0x0100054d, 2845 }, /* Armenian_SE */ + { 0x0100057d, 2857 }, /* Armenian_se */ + { 0x0100055d, 2869 }, /* Armenian_separation_mark */ + { 0x01000547, 2894 }, /* Armenian_SHA */ + { 0x01000577, 2907 }, /* Armenian_sha */ + { 0x0100055b, 2920 }, /* Armenian_shesht */ + { 0x01000543, 2936 }, /* Armenian_TCHE */ + { 0x01000573, 2950 }, /* Armenian_tche */ + { 0x01000539, 2964 }, /* Armenian_TO */ + { 0x01000569, 2976 }, /* Armenian_to */ + { 0x0100053e, 2988 }, /* Armenian_TSA */ + { 0x0100056e, 3001 }, /* Armenian_tsa */ + { 0x01000551, 3014 }, /* Armenian_TSO */ + { 0x01000581, 3027 }, /* Armenian_tso */ + { 0x0100054f, 3040 }, /* Armenian_TYUN */ + { 0x0100057f, 3054 }, /* Armenian_tyun */ + { 0x01000589, 3068 }, /* Armenian_verjaket */ + { 0x0100054e, 3086 }, /* Armenian_VEV */ + { 0x0100057e, 3099 }, /* Armenian_vev */ + { 0x01000548, 3112 }, /* Armenian_VO */ + { 0x01000578, 3124 }, /* Armenian_vo */ + { 0x01000552, 3136 }, /* Armenian_VYUN */ + { 0x01000582, 3150 }, /* Armenian_vyun */ + { 0x01000535, 3164 }, /* Armenian_YECH */ + { 0x01000565, 3178 }, /* Armenian_yech */ + { 0x0100058a, 3192 }, /* Armenian_yentamna */ + { 0x01000536, 3210 }, /* Armenian_ZA */ + { 0x01000566, 3222 }, /* Armenian_za */ + { 0x0100053a, 3234 }, /* Armenian_ZHE */ + { 0x0100056a, 3247 }, /* Armenian_zhe */ + { 0x0000005e, 3260 }, /* asciicircum */ + { 0x0000007e, 3272 }, /* asciitilde */ + { 0x0000002a, 3283 }, /* asterisk */ + { 0x00000040, 3292 }, /* at */ + { 0x000000c3, 3295 }, /* Atilde */ + { 0x000000e3, 3302 }, /* atilde */ + { 0x0000fe7a, 3309 }, /* AudibleBell_Enable */ + { 0x00000042, 3328 }, /* B */ + { 0x00000062, 3330 }, /* b */ + { 0x01001e02, 3332 }, /* Babovedot */ + { 0x01001e03, 3342 }, /* babovedot */ + { 0x0000005c, 3352 }, /* backslash */ + { 0x0000ff08, 3362 }, /* BackSpace */ + { 0x1000ff74, 3372 }, /* BackTab */ + { 0x00000af4, 3380 }, /* ballotcross */ + { 0x0000007c, 3392 }, /* bar */ + { 0x01002235, 3396 }, /* because */ + { 0x0000ff58, 3404 }, /* Begin */ + { 0x000009df, 3410 }, /* blank */ + { 0x100000fc, 3416 }, /* block */ + { 0x000008a5, 3422 }, /* botintegral */ + { 0x000008ac, 3434 }, /* botleftparens */ + { 0x000008a8, 3448 }, /* botleftsqbracket */ + { 0x000008b2, 3465 }, /* botleftsummation */ + { 0x000008ae, 3482 }, /* botrightparens */ + { 0x000008aa, 3497 }, /* botrightsqbracket */ + { 0x000008b6, 3515 }, /* botrightsummation */ + { 0x000009f6, 3533 }, /* bott */ + { 0x000008b4, 3538 }, /* botvertsummationconnector */ + { 0x0000fe74, 3564 }, /* BounceKeys_Enable */ + { 0x0000007b, 3582 }, /* braceleft */ + { 0x0000007d, 3592 }, /* braceright */ + { 0x0000005b, 3603 }, /* bracketleft */ + { 0x0000005d, 3615 }, /* bracketright */ + { 0x01002800, 3628 }, /* braille_blank */ + { 0x0000fff1, 3642 }, /* braille_dot_1 */ + { 0x0000fffa, 3656 }, /* braille_dot_10 */ + { 0x0000fff2, 3671 }, /* braille_dot_2 */ + { 0x0000fff3, 3685 }, /* braille_dot_3 */ + { 0x0000fff4, 3699 }, /* braille_dot_4 */ + { 0x0000fff5, 3713 }, /* braille_dot_5 */ + { 0x0000fff6, 3727 }, /* braille_dot_6 */ + { 0x0000fff7, 3741 }, /* braille_dot_7 */ + { 0x0000fff8, 3755 }, /* braille_dot_8 */ + { 0x0000fff9, 3769 }, /* braille_dot_9 */ + { 0x01002801, 3783 }, /* braille_dots_1 */ + { 0x01002803, 3798 }, /* braille_dots_12 */ + { 0x01002807, 3814 }, /* braille_dots_123 */ + { 0x0100280f, 3831 }, /* braille_dots_1234 */ + { 0x0100281f, 3849 }, /* braille_dots_12345 */ + { 0x0100283f, 3868 }, /* braille_dots_123456 */ + { 0x0100287f, 3888 }, /* braille_dots_1234567 */ + { 0x010028ff, 3909 }, /* braille_dots_12345678 */ + { 0x010028bf, 3931 }, /* braille_dots_1234568 */ + { 0x0100285f, 3952 }, /* braille_dots_123457 */ + { 0x010028df, 3972 }, /* braille_dots_1234578 */ + { 0x0100289f, 3993 }, /* braille_dots_123458 */ + { 0x0100282f, 4013 }, /* braille_dots_12346 */ + { 0x0100286f, 4032 }, /* braille_dots_123467 */ + { 0x010028ef, 4052 }, /* braille_dots_1234678 */ + { 0x010028af, 4073 }, /* braille_dots_123468 */ + { 0x0100284f, 4093 }, /* braille_dots_12347 */ + { 0x010028cf, 4112 }, /* braille_dots_123478 */ + { 0x0100288f, 4132 }, /* braille_dots_12348 */ + { 0x01002817, 4151 }, /* braille_dots_1235 */ + { 0x01002837, 4169 }, /* braille_dots_12356 */ + { 0x01002877, 4188 }, /* braille_dots_123567 */ + { 0x010028f7, 4208 }, /* braille_dots_1235678 */ + { 0x010028b7, 4229 }, /* braille_dots_123568 */ + { 0x01002857, 4249 }, /* braille_dots_12357 */ + { 0x010028d7, 4268 }, /* braille_dots_123578 */ + { 0x01002897, 4288 }, /* braille_dots_12358 */ + { 0x01002827, 4307 }, /* braille_dots_1236 */ + { 0x01002867, 4325 }, /* braille_dots_12367 */ + { 0x010028e7, 4344 }, /* braille_dots_123678 */ + { 0x010028a7, 4364 }, /* braille_dots_12368 */ + { 0x01002847, 4383 }, /* braille_dots_1237 */ + { 0x010028c7, 4401 }, /* braille_dots_12378 */ + { 0x01002887, 4420 }, /* braille_dots_1238 */ + { 0x0100280b, 4438 }, /* braille_dots_124 */ + { 0x0100281b, 4455 }, /* braille_dots_1245 */ + { 0x0100283b, 4473 }, /* braille_dots_12456 */ + { 0x0100287b, 4492 }, /* braille_dots_124567 */ + { 0x010028fb, 4512 }, /* braille_dots_1245678 */ + { 0x010028bb, 4533 }, /* braille_dots_124568 */ + { 0x0100285b, 4553 }, /* braille_dots_12457 */ + { 0x010028db, 4572 }, /* braille_dots_124578 */ + { 0x0100289b, 4592 }, /* braille_dots_12458 */ + { 0x0100282b, 4611 }, /* braille_dots_1246 */ + { 0x0100286b, 4629 }, /* braille_dots_12467 */ + { 0x010028eb, 4648 }, /* braille_dots_124678 */ + { 0x010028ab, 4668 }, /* braille_dots_12468 */ + { 0x0100284b, 4687 }, /* braille_dots_1247 */ + { 0x010028cb, 4705 }, /* braille_dots_12478 */ + { 0x0100288b, 4724 }, /* braille_dots_1248 */ + { 0x01002813, 4742 }, /* braille_dots_125 */ + { 0x01002833, 4759 }, /* braille_dots_1256 */ + { 0x01002873, 4777 }, /* braille_dots_12567 */ + { 0x010028f3, 4796 }, /* braille_dots_125678 */ + { 0x010028b3, 4816 }, /* braille_dots_12568 */ + { 0x01002853, 4835 }, /* braille_dots_1257 */ + { 0x010028d3, 4853 }, /* braille_dots_12578 */ + { 0x01002893, 4872 }, /* braille_dots_1258 */ + { 0x01002823, 4890 }, /* braille_dots_126 */ + { 0x01002863, 4907 }, /* braille_dots_1267 */ + { 0x010028e3, 4925 }, /* braille_dots_12678 */ + { 0x010028a3, 4944 }, /* braille_dots_1268 */ + { 0x01002843, 4962 }, /* braille_dots_127 */ + { 0x010028c3, 4979 }, /* braille_dots_1278 */ + { 0x01002883, 4997 }, /* braille_dots_128 */ + { 0x01002805, 5014 }, /* braille_dots_13 */ + { 0x0100280d, 5030 }, /* braille_dots_134 */ + { 0x0100281d, 5047 }, /* braille_dots_1345 */ + { 0x0100283d, 5065 }, /* braille_dots_13456 */ + { 0x0100287d, 5084 }, /* braille_dots_134567 */ + { 0x010028fd, 5104 }, /* braille_dots_1345678 */ + { 0x010028bd, 5125 }, /* braille_dots_134568 */ + { 0x0100285d, 5145 }, /* braille_dots_13457 */ + { 0x010028dd, 5164 }, /* braille_dots_134578 */ + { 0x0100289d, 5184 }, /* braille_dots_13458 */ + { 0x0100282d, 5203 }, /* braille_dots_1346 */ + { 0x0100286d, 5221 }, /* braille_dots_13467 */ + { 0x010028ed, 5240 }, /* braille_dots_134678 */ + { 0x010028ad, 5260 }, /* braille_dots_13468 */ + { 0x0100284d, 5279 }, /* braille_dots_1347 */ + { 0x010028cd, 5297 }, /* braille_dots_13478 */ + { 0x0100288d, 5316 }, /* braille_dots_1348 */ + { 0x01002815, 5334 }, /* braille_dots_135 */ + { 0x01002835, 5351 }, /* braille_dots_1356 */ + { 0x01002875, 5369 }, /* braille_dots_13567 */ + { 0x010028f5, 5388 }, /* braille_dots_135678 */ + { 0x010028b5, 5408 }, /* braille_dots_13568 */ + { 0x01002855, 5427 }, /* braille_dots_1357 */ + { 0x010028d5, 5445 }, /* braille_dots_13578 */ + { 0x01002895, 5464 }, /* braille_dots_1358 */ + { 0x01002825, 5482 }, /* braille_dots_136 */ + { 0x01002865, 5499 }, /* braille_dots_1367 */ + { 0x010028e5, 5517 }, /* braille_dots_13678 */ + { 0x010028a5, 5536 }, /* braille_dots_1368 */ + { 0x01002845, 5554 }, /* braille_dots_137 */ + { 0x010028c5, 5571 }, /* braille_dots_1378 */ + { 0x01002885, 5589 }, /* braille_dots_138 */ + { 0x01002809, 5606 }, /* braille_dots_14 */ + { 0x01002819, 5622 }, /* braille_dots_145 */ + { 0x01002839, 5639 }, /* braille_dots_1456 */ + { 0x01002879, 5657 }, /* braille_dots_14567 */ + { 0x010028f9, 5676 }, /* braille_dots_145678 */ + { 0x010028b9, 5696 }, /* braille_dots_14568 */ + { 0x01002859, 5715 }, /* braille_dots_1457 */ + { 0x010028d9, 5733 }, /* braille_dots_14578 */ + { 0x01002899, 5752 }, /* braille_dots_1458 */ + { 0x01002829, 5770 }, /* braille_dots_146 */ + { 0x01002869, 5787 }, /* braille_dots_1467 */ + { 0x010028e9, 5805 }, /* braille_dots_14678 */ + { 0x010028a9, 5824 }, /* braille_dots_1468 */ + { 0x01002849, 5842 }, /* braille_dots_147 */ + { 0x010028c9, 5859 }, /* braille_dots_1478 */ + { 0x01002889, 5877 }, /* braille_dots_148 */ + { 0x01002811, 5894 }, /* braille_dots_15 */ + { 0x01002831, 5910 }, /* braille_dots_156 */ + { 0x01002871, 5927 }, /* braille_dots_1567 */ + { 0x010028f1, 5945 }, /* braille_dots_15678 */ + { 0x010028b1, 5964 }, /* braille_dots_1568 */ + { 0x01002851, 5982 }, /* braille_dots_157 */ + { 0x010028d1, 5999 }, /* braille_dots_1578 */ + { 0x01002891, 6017 }, /* braille_dots_158 */ + { 0x01002821, 6034 }, /* braille_dots_16 */ + { 0x01002861, 6050 }, /* braille_dots_167 */ + { 0x010028e1, 6067 }, /* braille_dots_1678 */ + { 0x010028a1, 6085 }, /* braille_dots_168 */ + { 0x01002841, 6102 }, /* braille_dots_17 */ + { 0x010028c1, 6118 }, /* braille_dots_178 */ + { 0x01002881, 6135 }, /* braille_dots_18 */ + { 0x01002802, 6151 }, /* braille_dots_2 */ + { 0x01002806, 6166 }, /* braille_dots_23 */ + { 0x0100280e, 6182 }, /* braille_dots_234 */ + { 0x0100281e, 6199 }, /* braille_dots_2345 */ + { 0x0100283e, 6217 }, /* braille_dots_23456 */ + { 0x0100287e, 6236 }, /* braille_dots_234567 */ + { 0x010028fe, 6256 }, /* braille_dots_2345678 */ + { 0x010028be, 6277 }, /* braille_dots_234568 */ + { 0x0100285e, 6297 }, /* braille_dots_23457 */ + { 0x010028de, 6316 }, /* braille_dots_234578 */ + { 0x0100289e, 6336 }, /* braille_dots_23458 */ + { 0x0100282e, 6355 }, /* braille_dots_2346 */ + { 0x0100286e, 6373 }, /* braille_dots_23467 */ + { 0x010028ee, 6392 }, /* braille_dots_234678 */ + { 0x010028ae, 6412 }, /* braille_dots_23468 */ + { 0x0100284e, 6431 }, /* braille_dots_2347 */ + { 0x010028ce, 6449 }, /* braille_dots_23478 */ + { 0x0100288e, 6468 }, /* braille_dots_2348 */ + { 0x01002816, 6486 }, /* braille_dots_235 */ + { 0x01002836, 6503 }, /* braille_dots_2356 */ + { 0x01002876, 6521 }, /* braille_dots_23567 */ + { 0x010028f6, 6540 }, /* braille_dots_235678 */ + { 0x010028b6, 6560 }, /* braille_dots_23568 */ + { 0x01002856, 6579 }, /* braille_dots_2357 */ + { 0x010028d6, 6597 }, /* braille_dots_23578 */ + { 0x01002896, 6616 }, /* braille_dots_2358 */ + { 0x01002826, 6634 }, /* braille_dots_236 */ + { 0x01002866, 6651 }, /* braille_dots_2367 */ + { 0x010028e6, 6669 }, /* braille_dots_23678 */ + { 0x010028a6, 6688 }, /* braille_dots_2368 */ + { 0x01002846, 6706 }, /* braille_dots_237 */ + { 0x010028c6, 6723 }, /* braille_dots_2378 */ + { 0x01002886, 6741 }, /* braille_dots_238 */ + { 0x0100280a, 6758 }, /* braille_dots_24 */ + { 0x0100281a, 6774 }, /* braille_dots_245 */ + { 0x0100283a, 6791 }, /* braille_dots_2456 */ + { 0x0100287a, 6809 }, /* braille_dots_24567 */ + { 0x010028fa, 6828 }, /* braille_dots_245678 */ + { 0x010028ba, 6848 }, /* braille_dots_24568 */ + { 0x0100285a, 6867 }, /* braille_dots_2457 */ + { 0x010028da, 6885 }, /* braille_dots_24578 */ + { 0x0100289a, 6904 }, /* braille_dots_2458 */ + { 0x0100282a, 6922 }, /* braille_dots_246 */ + { 0x0100286a, 6939 }, /* braille_dots_2467 */ + { 0x010028ea, 6957 }, /* braille_dots_24678 */ + { 0x010028aa, 6976 }, /* braille_dots_2468 */ + { 0x0100284a, 6994 }, /* braille_dots_247 */ + { 0x010028ca, 7011 }, /* braille_dots_2478 */ + { 0x0100288a, 7029 }, /* braille_dots_248 */ + { 0x01002812, 7046 }, /* braille_dots_25 */ + { 0x01002832, 7062 }, /* braille_dots_256 */ + { 0x01002872, 7079 }, /* braille_dots_2567 */ + { 0x010028f2, 7097 }, /* braille_dots_25678 */ + { 0x010028b2, 7116 }, /* braille_dots_2568 */ + { 0x01002852, 7134 }, /* braille_dots_257 */ + { 0x010028d2, 7151 }, /* braille_dots_2578 */ + { 0x01002892, 7169 }, /* braille_dots_258 */ + { 0x01002822, 7186 }, /* braille_dots_26 */ + { 0x01002862, 7202 }, /* braille_dots_267 */ + { 0x010028e2, 7219 }, /* braille_dots_2678 */ + { 0x010028a2, 7237 }, /* braille_dots_268 */ + { 0x01002842, 7254 }, /* braille_dots_27 */ + { 0x010028c2, 7270 }, /* braille_dots_278 */ + { 0x01002882, 7287 }, /* braille_dots_28 */ + { 0x01002804, 7303 }, /* braille_dots_3 */ + { 0x0100280c, 7318 }, /* braille_dots_34 */ + { 0x0100281c, 7334 }, /* braille_dots_345 */ + { 0x0100283c, 7351 }, /* braille_dots_3456 */ + { 0x0100287c, 7369 }, /* braille_dots_34567 */ + { 0x010028fc, 7388 }, /* braille_dots_345678 */ + { 0x010028bc, 7408 }, /* braille_dots_34568 */ + { 0x0100285c, 7427 }, /* braille_dots_3457 */ + { 0x010028dc, 7445 }, /* braille_dots_34578 */ + { 0x0100289c, 7464 }, /* braille_dots_3458 */ + { 0x0100282c, 7482 }, /* braille_dots_346 */ + { 0x0100286c, 7499 }, /* braille_dots_3467 */ + { 0x010028ec, 7517 }, /* braille_dots_34678 */ + { 0x010028ac, 7536 }, /* braille_dots_3468 */ + { 0x0100284c, 7554 }, /* braille_dots_347 */ + { 0x010028cc, 7571 }, /* braille_dots_3478 */ + { 0x0100288c, 7589 }, /* braille_dots_348 */ + { 0x01002814, 7606 }, /* braille_dots_35 */ + { 0x01002834, 7622 }, /* braille_dots_356 */ + { 0x01002874, 7639 }, /* braille_dots_3567 */ + { 0x010028f4, 7657 }, /* braille_dots_35678 */ + { 0x010028b4, 7676 }, /* braille_dots_3568 */ + { 0x01002854, 7694 }, /* braille_dots_357 */ + { 0x010028d4, 7711 }, /* braille_dots_3578 */ + { 0x01002894, 7729 }, /* braille_dots_358 */ + { 0x01002824, 7746 }, /* braille_dots_36 */ + { 0x01002864, 7762 }, /* braille_dots_367 */ + { 0x010028e4, 7779 }, /* braille_dots_3678 */ + { 0x010028a4, 7797 }, /* braille_dots_368 */ + { 0x01002844, 7814 }, /* braille_dots_37 */ + { 0x010028c4, 7830 }, /* braille_dots_378 */ + { 0x01002884, 7847 }, /* braille_dots_38 */ + { 0x01002808, 7863 }, /* braille_dots_4 */ + { 0x01002818, 7878 }, /* braille_dots_45 */ + { 0x01002838, 7894 }, /* braille_dots_456 */ + { 0x01002878, 7911 }, /* braille_dots_4567 */ + { 0x010028f8, 7929 }, /* braille_dots_45678 */ + { 0x010028b8, 7948 }, /* braille_dots_4568 */ + { 0x01002858, 7966 }, /* braille_dots_457 */ + { 0x010028d8, 7983 }, /* braille_dots_4578 */ + { 0x01002898, 8001 }, /* braille_dots_458 */ + { 0x01002828, 8018 }, /* braille_dots_46 */ + { 0x01002868, 8034 }, /* braille_dots_467 */ + { 0x010028e8, 8051 }, /* braille_dots_4678 */ + { 0x010028a8, 8069 }, /* braille_dots_468 */ + { 0x01002848, 8086 }, /* braille_dots_47 */ + { 0x010028c8, 8102 }, /* braille_dots_478 */ + { 0x01002888, 8119 }, /* braille_dots_48 */ + { 0x01002810, 8135 }, /* braille_dots_5 */ + { 0x01002830, 8150 }, /* braille_dots_56 */ + { 0x01002870, 8166 }, /* braille_dots_567 */ + { 0x010028f0, 8183 }, /* braille_dots_5678 */ + { 0x010028b0, 8201 }, /* braille_dots_568 */ + { 0x01002850, 8218 }, /* braille_dots_57 */ + { 0x010028d0, 8234 }, /* braille_dots_578 */ + { 0x01002890, 8251 }, /* braille_dots_58 */ + { 0x01002820, 8267 }, /* braille_dots_6 */ + { 0x01002860, 8282 }, /* braille_dots_67 */ + { 0x010028e0, 8298 }, /* braille_dots_678 */ + { 0x010028a0, 8315 }, /* braille_dots_68 */ + { 0x01002840, 8331 }, /* braille_dots_7 */ + { 0x010028c0, 8346 }, /* braille_dots_78 */ + { 0x01002880, 8362 }, /* braille_dots_8 */ + { 0x0000ff6b, 8377 }, /* Break */ + { 0x000001a2, 8383 }, /* breve */ + { 0x000000a6, 8389 }, /* brokenbar */ + { 0x000006ae, 8399 }, /* Byelorussian_shortu */ + { 0x000006be, 8419 }, /* Byelorussian_SHORTU */ + { 0x00000043, 8439 }, /* C */ + { 0x00000063, 8441 }, /* c */ + { 0x0000fea3, 8443 }, /* c_h */ + { 0x0000fea4, 8447 }, /* C_h */ + { 0x0000fea5, 8451 }, /* C_H */ + { 0x000002c5, 8455 }, /* Cabovedot */ + { 0x000002e5, 8465 }, /* cabovedot */ + { 0x000001c6, 8475 }, /* Cacute */ + { 0x000001e6, 8482 }, /* cacute */ + { 0x0000ff69, 8489 }, /* Cancel */ + { 0x0000ffe5, 8496 }, /* Caps_Lock */ + { 0x00000ab8, 8506 }, /* careof */ + { 0x00000afc, 8513 }, /* caret */ + { 0x000001b7, 8519 }, /* caron */ + { 0x000001c8, 8525 }, /* Ccaron */ + { 0x000001e8, 8532 }, /* ccaron */ + { 0x000000c7, 8539 }, /* Ccedilla */ + { 0x000000e7, 8548 }, /* ccedilla */ + { 0x000002c6, 8557 }, /* Ccircumflex */ + { 0x000002e6, 8569 }, /* ccircumflex */ + { 0x000000b8, 8581 }, /* cedilla */ + { 0x000000a2, 8589 }, /* cent */ + { 0x0000fea0, 8594 }, /* ch */ + { 0x0000fea1, 8597 }, /* Ch */ + { 0x0000fea2, 8600 }, /* CH */ + { 0x000009e1, 8603 }, /* checkerboard */ + { 0x00000af3, 8616 }, /* checkmark */ + { 0x00000bcf, 8626 }, /* circle */ + { 0x0000ff0b, 8633 }, /* Clear */ + { 0x1000ff6f, 8639 }, /* ClearLine */ + { 0x00000aec, 8649 }, /* club */ + { 0x0000ff37, 8654 }, /* Codeinput */ + { 0x0000003a, 8664 }, /* colon */ + { 0x010020a1, 8670 }, /* ColonSign */ + { 0x0000002c, 8680 }, /* comma */ + { 0x0100220b, 8686 }, /* containsas */ + { 0x0000ffe3, 8697 }, /* Control_L */ + { 0x0000ffe4, 8707 }, /* Control_R */ + { 0x000000a9, 8717 }, /* copyright */ + { 0x000009e4, 8727 }, /* cr */ + { 0x000009ee, 8730 }, /* crossinglines */ + { 0x010020a2, 8744 }, /* CruzeiroSign */ + { 0x0100221b, 8757 }, /* cuberoot */ + { 0x000000a4, 8766 }, /* currency */ + { 0x00000aff, 8775 }, /* cursor */ + { 0x000006c1, 8782 }, /* Cyrillic_a */ + { 0x000006e1, 8793 }, /* Cyrillic_A */ + { 0x000006c2, 8804 }, /* Cyrillic_be */ + { 0x000006e2, 8816 }, /* Cyrillic_BE */ + { 0x000006de, 8828 }, /* Cyrillic_che */ + { 0x000006fe, 8841 }, /* Cyrillic_CHE */ + { 0x010004b6, 8854 }, /* Cyrillic_CHE_descender */ + { 0x010004b7, 8877 }, /* Cyrillic_che_descender */ + { 0x010004b8, 8900 }, /* Cyrillic_CHE_vertstroke */ + { 0x010004b9, 8924 }, /* Cyrillic_che_vertstroke */ + { 0x000006c4, 8948 }, /* Cyrillic_de */ + { 0x000006e4, 8960 }, /* Cyrillic_DE */ + { 0x000006af, 8972 }, /* Cyrillic_dzhe */ + { 0x000006bf, 8986 }, /* Cyrillic_DZHE */ + { 0x000006dc, 9000 }, /* Cyrillic_e */ + { 0x000006fc, 9011 }, /* Cyrillic_E */ + { 0x000006c6, 9022 }, /* Cyrillic_ef */ + { 0x000006e6, 9034 }, /* Cyrillic_EF */ + { 0x000006cc, 9046 }, /* Cyrillic_el */ + { 0x000006ec, 9058 }, /* Cyrillic_EL */ + { 0x000006cd, 9070 }, /* Cyrillic_em */ + { 0x000006ed, 9082 }, /* Cyrillic_EM */ + { 0x000006ce, 9094 }, /* Cyrillic_en */ + { 0x000006ee, 9106 }, /* Cyrillic_EN */ + { 0x010004a2, 9118 }, /* Cyrillic_EN_descender */ + { 0x010004a3, 9140 }, /* Cyrillic_en_descender */ + { 0x000006d2, 9162 }, /* Cyrillic_er */ + { 0x000006f2, 9174 }, /* Cyrillic_ER */ + { 0x000006d3, 9186 }, /* Cyrillic_es */ + { 0x000006f3, 9198 }, /* Cyrillic_ES */ + { 0x000006c7, 9210 }, /* Cyrillic_ghe */ + { 0x000006e7, 9223 }, /* Cyrillic_GHE */ + { 0x01000492, 9236 }, /* Cyrillic_GHE_bar */ + { 0x01000493, 9253 }, /* Cyrillic_ghe_bar */ + { 0x000006c8, 9270 }, /* Cyrillic_ha */ + { 0x000006e8, 9282 }, /* Cyrillic_HA */ + { 0x010004b2, 9294 }, /* Cyrillic_HA_descender */ + { 0x010004b3, 9316 }, /* Cyrillic_ha_descender */ + { 0x000006df, 9338 }, /* Cyrillic_hardsign */ + { 0x000006ff, 9356 }, /* Cyrillic_HARDSIGN */ + { 0x000006c9, 9374 }, /* Cyrillic_i */ + { 0x000006e9, 9385 }, /* Cyrillic_I */ + { 0x010004e2, 9396 }, /* Cyrillic_I_macron */ + { 0x010004e3, 9414 }, /* Cyrillic_i_macron */ + { 0x000006c5, 9432 }, /* Cyrillic_ie */ + { 0x000006e5, 9444 }, /* Cyrillic_IE */ + { 0x000006a3, 9456 }, /* Cyrillic_io */ + { 0x000006b3, 9468 }, /* Cyrillic_IO */ + { 0x000006a8, 9480 }, /* Cyrillic_je */ + { 0x000006b8, 9492 }, /* Cyrillic_JE */ + { 0x000006cb, 9504 }, /* Cyrillic_ka */ + { 0x000006eb, 9516 }, /* Cyrillic_KA */ + { 0x0100049a, 9528 }, /* Cyrillic_KA_descender */ + { 0x0100049b, 9550 }, /* Cyrillic_ka_descender */ + { 0x0100049c, 9572 }, /* Cyrillic_KA_vertstroke */ + { 0x0100049d, 9595 }, /* Cyrillic_ka_vertstroke */ + { 0x000006a9, 9618 }, /* Cyrillic_lje */ + { 0x000006b9, 9631 }, /* Cyrillic_LJE */ + { 0x000006aa, 9644 }, /* Cyrillic_nje */ + { 0x000006ba, 9657 }, /* Cyrillic_NJE */ + { 0x000006cf, 9670 }, /* Cyrillic_o */ + { 0x000006ef, 9681 }, /* Cyrillic_O */ + { 0x010004e8, 9692 }, /* Cyrillic_O_bar */ + { 0x010004e9, 9707 }, /* Cyrillic_o_bar */ + { 0x000006d0, 9722 }, /* Cyrillic_pe */ + { 0x000006f0, 9734 }, /* Cyrillic_PE */ + { 0x010004d8, 9746 }, /* Cyrillic_SCHWA */ + { 0x010004d9, 9761 }, /* Cyrillic_schwa */ + { 0x000006db, 9776 }, /* Cyrillic_sha */ + { 0x000006fb, 9789 }, /* Cyrillic_SHA */ + { 0x000006dd, 9802 }, /* Cyrillic_shcha */ + { 0x000006fd, 9817 }, /* Cyrillic_SHCHA */ + { 0x010004ba, 9832 }, /* Cyrillic_SHHA */ + { 0x010004bb, 9846 }, /* Cyrillic_shha */ + { 0x000006ca, 9860 }, /* Cyrillic_shorti */ + { 0x000006ea, 9876 }, /* Cyrillic_SHORTI */ + { 0x000006d8, 9892 }, /* Cyrillic_softsign */ + { 0x000006f8, 9910 }, /* Cyrillic_SOFTSIGN */ + { 0x000006d4, 9928 }, /* Cyrillic_te */ + { 0x000006f4, 9940 }, /* Cyrillic_TE */ + { 0x000006c3, 9952 }, /* Cyrillic_tse */ + { 0x000006e3, 9965 }, /* Cyrillic_TSE */ + { 0x000006d5, 9978 }, /* Cyrillic_u */ + { 0x000006f5, 9989 }, /* Cyrillic_U */ + { 0x010004ee, 10000 }, /* Cyrillic_U_macron */ + { 0x010004ef, 10018 }, /* Cyrillic_u_macron */ + { 0x010004ae, 10036 }, /* Cyrillic_U_straight */ + { 0x010004af, 10056 }, /* Cyrillic_u_straight */ + { 0x010004b0, 10076 }, /* Cyrillic_U_straight_bar */ + { 0x010004b1, 10100 }, /* Cyrillic_u_straight_bar */ + { 0x000006d7, 10124 }, /* Cyrillic_ve */ + { 0x000006f7, 10136 }, /* Cyrillic_VE */ + { 0x000006d1, 10148 }, /* Cyrillic_ya */ + { 0x000006f1, 10160 }, /* Cyrillic_YA */ + { 0x000006d9, 10172 }, /* Cyrillic_yeru */ + { 0x000006f9, 10186 }, /* Cyrillic_YERU */ + { 0x000006c0, 10200 }, /* Cyrillic_yu */ + { 0x000006e0, 10212 }, /* Cyrillic_YU */ + { 0x000006da, 10224 }, /* Cyrillic_ze */ + { 0x000006fa, 10236 }, /* Cyrillic_ZE */ + { 0x000006d6, 10248 }, /* Cyrillic_zhe */ + { 0x000006f6, 10261 }, /* Cyrillic_ZHE */ + { 0x01000496, 10274 }, /* Cyrillic_ZHE_descender */ + { 0x01000497, 10297 }, /* Cyrillic_zhe_descender */ + { 0x00000044, 10320 }, /* D */ + { 0x00000064, 10322 }, /* d */ + { 0x01001e0a, 10324 }, /* Dabovedot */ + { 0x01001e0b, 10334 }, /* dabovedot */ + { 0x1000fe27, 10344 }, /* Dacute_accent */ + { 0x00000af1, 10358 }, /* dagger */ + { 0x000001cf, 10365 }, /* Dcaron */ + { 0x000001ef, 10372 }, /* dcaron */ + { 0x1000fe2c, 10379 }, /* Dcedilla_accent */ + { 0x1000fe5e, 10395 }, /* Dcircumflex_accent */ + { 0x1000fe22, 10414 }, /* Ddiaeresis */ + { 0x0000fe80, 10425 }, /* dead_a */ + { 0x0000fe81, 10432 }, /* dead_A */ + { 0x0000fe64, 10439 }, /* dead_abovecomma */ + { 0x0000fe56, 10455 }, /* dead_abovedot */ + { 0x0000fe65, 10469 }, /* dead_abovereversedcomma */ + { 0x0000fe58, 10493 }, /* dead_abovering */ + { 0x0000fe91, 10508 }, /* dead_aboveverticalline */ + { 0x0000fe51, 10531 }, /* dead_acute */ + { 0x0000fe6b, 10542 }, /* dead_belowbreve */ + { 0x0000fe69, 10558 }, /* dead_belowcircumflex */ + { 0x0000fe6e, 10579 }, /* dead_belowcomma */ + { 0x0000fe6c, 10595 }, /* dead_belowdiaeresis */ + { 0x0000fe60, 10615 }, /* dead_belowdot */ + { 0x0000fe68, 10629 }, /* dead_belowmacron */ + { 0x0000fe67, 10646 }, /* dead_belowring */ + { 0x0000fe6a, 10661 }, /* dead_belowtilde */ + { 0x0000fe92, 10677 }, /* dead_belowverticalline */ + { 0x0000fe55, 10700 }, /* dead_breve */ + { 0x0000fe8b, 10711 }, /* dead_capital_schwa */ + { 0x0000fe5a, 10730 }, /* dead_caron */ + { 0x0000fe5b, 10741 }, /* dead_cedilla */ + { 0x0000fe52, 10754 }, /* dead_circumflex */ + { 0x0000fe6f, 10770 }, /* dead_currency */ + { 0x0000fe65, 10784 }, /* dead_dasia */ + { 0x0000fe57, 10795 }, /* dead_diaeresis */ + { 0x0000fe59, 10810 }, /* dead_doubleacute */ + { 0x0000fe66, 10827 }, /* dead_doublegrave */ + { 0x0000fe82, 10844 }, /* dead_e */ + { 0x0000fe83, 10851 }, /* dead_E */ + { 0x0000fe50, 10858 }, /* dead_grave */ + { 0x0000fe8c, 10869 }, /* dead_greek */ + { 0x0000fe61, 10880 }, /* dead_hook */ + { 0x0000fe62, 10890 }, /* dead_horn */ + { 0x0000fe84, 10900 }, /* dead_i */ + { 0x0000fe85, 10907 }, /* dead_I */ + { 0x0000fe6d, 10914 }, /* dead_invertedbreve */ + { 0x0000fe5d, 10933 }, /* dead_iota */ + { 0x0000fe93, 10943 }, /* dead_longsolidusoverlay */ + { 0x0000fe90, 10967 }, /* dead_lowline */ + { 0x0000fe54, 10980 }, /* dead_macron */ + { 0x0000fe86, 10992 }, /* dead_o */ + { 0x0000fe87, 10999 }, /* dead_O */ + { 0x0000fe5c, 11006 }, /* dead_ogonek */ + { 0x0000fe53, 11018 }, /* dead_perispomeni */ + { 0x0000fe64, 11035 }, /* dead_psili */ + { 0x0000fe5f, 11046 }, /* dead_semivoiced_sound */ + { 0x0000fe8a, 11068 }, /* dead_small_schwa */ + { 0x0000fe63, 11085 }, /* dead_stroke */ + { 0x0000fe53, 11097 }, /* dead_tilde */ + { 0x0000fe88, 11108 }, /* dead_u */ + { 0x0000fe89, 11115 }, /* dead_U */ + { 0x0000fe5e, 11122 }, /* dead_voiced_sound */ + { 0x00000abd, 11140 }, /* decimalpoint */ + { 0x000000b0, 11153 }, /* degree */ + { 0x0000ffff, 11160 }, /* Delete */ + { 0x1000ff73, 11167 }, /* DeleteChar */ + { 0x1000ff71, 11178 }, /* DeleteLine */ + { 0x1000fe60, 11189 }, /* Dgrave_accent */ + { 0x000000a8, 11203 }, /* diaeresis */ + { 0x00000aed, 11213 }, /* diamond */ + { 0x00000aa5, 11221 }, /* digitspace */ + { 0x0100222c, 11232 }, /* dintegral */ + { 0x000000f7, 11242 }, /* division */ + { 0x00000024, 11251 }, /* dollar */ + { 0x010020ab, 11258 }, /* DongSign */ + { 0x00000aaf, 11267 }, /* doubbaselinedot */ + { 0x000001bd, 11283 }, /* doubleacute */ + { 0x00000af2, 11295 }, /* doubledagger */ + { 0x00000afe, 11308 }, /* doublelowquotemark */ + { 0x0000ff54, 11327 }, /* Down */ + { 0x000008fe, 11332 }, /* downarrow */ + { 0x00000ba8, 11342 }, /* downcaret */ + { 0x00000bd6, 11352 }, /* downshoe */ + { 0x00000bc4, 11361 }, /* downstile */ + { 0x00000bc2, 11371 }, /* downtack */ + { 0x1000ff00, 11380 }, /* DRemove */ + { 0x1000feb0, 11388 }, /* Dring_accent */ + { 0x000001d0, 11401 }, /* Dstroke */ + { 0x000001f0, 11409 }, /* dstroke */ + { 0x1000fe7e, 11417 }, /* Dtilde */ + { 0x00000045, 11424 }, /* E */ + { 0x00000065, 11426 }, /* e */ + { 0x000003cc, 11428 }, /* Eabovedot */ + { 0x000003ec, 11438 }, /* eabovedot */ + { 0x000000c9, 11448 }, /* Eacute */ + { 0x000000e9, 11455 }, /* eacute */ + { 0x01001eb8, 11462 }, /* Ebelowdot */ + { 0x01001eb9, 11472 }, /* ebelowdot */ + { 0x000001cc, 11482 }, /* Ecaron */ + { 0x000001ec, 11489 }, /* ecaron */ + { 0x000000ca, 11496 }, /* Ecircumflex */ + { 0x000000ea, 11508 }, /* ecircumflex */ + { 0x01001ebe, 11520 }, /* Ecircumflexacute */ + { 0x01001ebf, 11537 }, /* ecircumflexacute */ + { 0x01001ec6, 11554 }, /* Ecircumflexbelowdot */ + { 0x01001ec7, 11574 }, /* ecircumflexbelowdot */ + { 0x01001ec0, 11594 }, /* Ecircumflexgrave */ + { 0x01001ec1, 11611 }, /* ecircumflexgrave */ + { 0x01001ec2, 11628 }, /* Ecircumflexhook */ + { 0x01001ec3, 11644 }, /* ecircumflexhook */ + { 0x01001ec4, 11660 }, /* Ecircumflextilde */ + { 0x01001ec5, 11677 }, /* ecircumflextilde */ + { 0x010020a0, 11694 }, /* EcuSign */ + { 0x000000cb, 11702 }, /* Ediaeresis */ + { 0x000000eb, 11713 }, /* ediaeresis */ + { 0x000000c8, 11724 }, /* Egrave */ + { 0x000000e8, 11731 }, /* egrave */ + { 0x01001eba, 11738 }, /* Ehook */ + { 0x01001ebb, 11744 }, /* ehook */ + { 0x01002088, 11750 }, /* eightsubscript */ + { 0x01002078, 11765 }, /* eightsuperior */ + { 0x0000ff2f, 11779 }, /* Eisu_Shift */ + { 0x0000ff30, 11790 }, /* Eisu_toggle */ + { 0x01002208, 11802 }, /* elementof */ + { 0x00000aae, 11812 }, /* ellipsis */ + { 0x00000aa3, 11821 }, /* em3space */ + { 0x00000aa4, 11830 }, /* em4space */ + { 0x000003aa, 11839 }, /* Emacron */ + { 0x000003ba, 11847 }, /* emacron */ + { 0x00000aa9, 11855 }, /* emdash */ + { 0x00000ade, 11862 }, /* emfilledcircle */ + { 0x00000adf, 11877 }, /* emfilledrect */ + { 0x00000ace, 11890 }, /* emopencircle */ + { 0x00000acf, 11903 }, /* emopenrectangle */ + { 0x01002205, 11919 }, /* emptyset */ + { 0x00000aa1, 11928 }, /* emspace */ + { 0x0000ff57, 11936 }, /* End */ + { 0x00000aaa, 11940 }, /* endash */ + { 0x00000ae6, 11947 }, /* enfilledcircbullet */ + { 0x00000ae7, 11966 }, /* enfilledsqbullet */ + { 0x000003bd, 11983 }, /* ENG */ + { 0x000003bf, 11987 }, /* eng */ + { 0x00000ae0, 11991 }, /* enopencircbullet */ + { 0x00000ae1, 12008 }, /* enopensquarebullet */ + { 0x00000aa2, 12027 }, /* enspace */ + { 0x000001ca, 12035 }, /* Eogonek */ + { 0x000001ea, 12043 }, /* eogonek */ + { 0x0000003d, 12051 }, /* equal */ + { 0x0000ff1b, 12057 }, /* Escape */ + { 0x000000d0, 12064 }, /* ETH */ + { 0x000000d0, 12068 }, /* Eth */ + { 0x000000f0, 12072 }, /* eth */ + { 0x01001ebc, 12076 }, /* Etilde */ + { 0x01001ebd, 12083 }, /* etilde */ + { 0x000020ac, 12090 }, /* EuroSign */ + { 0x00000021, 12099 }, /* exclam */ + { 0x000000a1, 12106 }, /* exclamdown */ + { 0x0000ff62, 12117 }, /* Execute */ + { 0x1000ff76, 12125 }, /* Ext16bit_L */ + { 0x1000ff77, 12136 }, /* Ext16bit_R */ + { 0x010001b7, 12147 }, /* EZH */ + { 0x01000292, 12151 }, /* ezh */ + { 0x00000046, 12155 }, /* F */ + { 0x00000066, 12157 }, /* f */ + { 0x0000ffbe, 12159 }, /* F1 */ + { 0x0000ffc7, 12162 }, /* F10 */ + { 0x0000ffc8, 12166 }, /* F11 */ + { 0x0000ffc9, 12170 }, /* F12 */ + { 0x0000ffca, 12174 }, /* F13 */ + { 0x0000ffcb, 12178 }, /* F14 */ + { 0x0000ffcc, 12182 }, /* F15 */ + { 0x0000ffcd, 12186 }, /* F16 */ + { 0x0000ffce, 12190 }, /* F17 */ + { 0x0000ffcf, 12194 }, /* F18 */ + { 0x0000ffd0, 12198 }, /* F19 */ + { 0x0000ffbf, 12202 }, /* F2 */ + { 0x0000ffd1, 12205 }, /* F20 */ + { 0x0000ffd2, 12209 }, /* F21 */ + { 0x0000ffd3, 12213 }, /* F22 */ + { 0x0000ffd4, 12217 }, /* F23 */ + { 0x0000ffd5, 12221 }, /* F24 */ + { 0x0000ffd6, 12225 }, /* F25 */ + { 0x0000ffd7, 12229 }, /* F26 */ + { 0x0000ffd8, 12233 }, /* F27 */ + { 0x0000ffd9, 12237 }, /* F28 */ + { 0x0000ffda, 12241 }, /* F29 */ + { 0x0000ffc0, 12245 }, /* F3 */ + { 0x0000ffdb, 12248 }, /* F30 */ + { 0x0000ffdc, 12252 }, /* F31 */ + { 0x0000ffdd, 12256 }, /* F32 */ + { 0x0000ffde, 12260 }, /* F33 */ + { 0x0000ffdf, 12264 }, /* F34 */ + { 0x0000ffe0, 12268 }, /* F35 */ + { 0x0000ffc1, 12272 }, /* F4 */ + { 0x0000ffc2, 12275 }, /* F5 */ + { 0x0000ffc3, 12278 }, /* F6 */ + { 0x0000ffc4, 12281 }, /* F7 */ + { 0x0000ffc5, 12284 }, /* F8 */ + { 0x0000ffc6, 12287 }, /* F9 */ + { 0x01001e1e, 12290 }, /* Fabovedot */ + { 0x01001e1f, 12300 }, /* fabovedot */ + { 0x010006f0, 12310 }, /* Farsi_0 */ + { 0x010006f1, 12318 }, /* Farsi_1 */ + { 0x010006f2, 12326 }, /* Farsi_2 */ + { 0x010006f3, 12334 }, /* Farsi_3 */ + { 0x010006f4, 12342 }, /* Farsi_4 */ + { 0x010006f5, 12350 }, /* Farsi_5 */ + { 0x010006f6, 12358 }, /* Farsi_6 */ + { 0x010006f7, 12366 }, /* Farsi_7 */ + { 0x010006f8, 12374 }, /* Farsi_8 */ + { 0x010006f9, 12382 }, /* Farsi_9 */ + { 0x010006cc, 12390 }, /* Farsi_yeh */ + { 0x00000af8, 12400 }, /* femalesymbol */ + { 0x000009e3, 12413 }, /* ff */ + { 0x010020a3, 12416 }, /* FFrancSign */ + { 0x00000abb, 12427 }, /* figdash */ + { 0x00000adc, 12435 }, /* filledlefttribullet */ + { 0x00000adb, 12455 }, /* filledrectbullet */ + { 0x00000add, 12472 }, /* filledrighttribullet */ + { 0x00000ae9, 12493 }, /* filledtribulletdown */ + { 0x00000ae8, 12513 }, /* filledtribulletup */ + { 0x0000ff68, 12531 }, /* Find */ + { 0x0000fed0, 12536 }, /* First_Virtual_Screen */ + { 0x00000ac5, 12557 }, /* fiveeighths */ + { 0x00000ab7, 12569 }, /* fivesixths */ + { 0x01002085, 12580 }, /* fivesubscript */ + { 0x01002075, 12594 }, /* fivesuperior */ + { 0x00000ab5, 12607 }, /* fourfifths */ + { 0x01002084, 12618 }, /* foursubscript */ + { 0x01002074, 12632 }, /* foursuperior */ + { 0x0100221c, 12645 }, /* fourthroot */ + { 0x000008f6, 12656 }, /* function */ + { 0x00000047, 12665 }, /* G */ + { 0x00000067, 12667 }, /* g */ + { 0x000002d5, 12669 }, /* Gabovedot */ + { 0x000002f5, 12679 }, /* gabovedot */ + { 0x000002ab, 12689 }, /* Gbreve */ + { 0x000002bb, 12696 }, /* gbreve */ + { 0x010001e6, 12703 }, /* Gcaron */ + { 0x010001e7, 12710 }, /* gcaron */ + { 0x000003ab, 12717 }, /* Gcedilla */ + { 0x000003bb, 12726 }, /* gcedilla */ + { 0x000002d8, 12735 }, /* Gcircumflex */ + { 0x000002f8, 12747 }, /* gcircumflex */ + { 0x010010d0, 12759 }, /* Georgian_an */ + { 0x010010d1, 12771 }, /* Georgian_ban */ + { 0x010010ea, 12784 }, /* Georgian_can */ + { 0x010010ed, 12797 }, /* Georgian_char */ + { 0x010010e9, 12811 }, /* Georgian_chin */ + { 0x010010ec, 12825 }, /* Georgian_cil */ + { 0x010010d3, 12838 }, /* Georgian_don */ + { 0x010010d4, 12851 }, /* Georgian_en */ + { 0x010010f6, 12863 }, /* Georgian_fi */ + { 0x010010d2, 12875 }, /* Georgian_gan */ + { 0x010010e6, 12888 }, /* Georgian_ghan */ + { 0x010010f0, 12902 }, /* Georgian_hae */ + { 0x010010f4, 12915 }, /* Georgian_har */ + { 0x010010f1, 12928 }, /* Georgian_he */ + { 0x010010f2, 12940 }, /* Georgian_hie */ + { 0x010010f5, 12953 }, /* Georgian_hoe */ + { 0x010010d8, 12966 }, /* Georgian_in */ + { 0x010010ef, 12978 }, /* Georgian_jhan */ + { 0x010010eb, 12992 }, /* Georgian_jil */ + { 0x010010d9, 13005 }, /* Georgian_kan */ + { 0x010010e5, 13018 }, /* Georgian_khar */ + { 0x010010da, 13032 }, /* Georgian_las */ + { 0x010010db, 13045 }, /* Georgian_man */ + { 0x010010dc, 13058 }, /* Georgian_nar */ + { 0x010010dd, 13071 }, /* Georgian_on */ + { 0x010010de, 13083 }, /* Georgian_par */ + { 0x010010e4, 13096 }, /* Georgian_phar */ + { 0x010010e7, 13110 }, /* Georgian_qar */ + { 0x010010e0, 13123 }, /* Georgian_rae */ + { 0x010010e1, 13136 }, /* Georgian_san */ + { 0x010010e8, 13149 }, /* Georgian_shin */ + { 0x010010d7, 13163 }, /* Georgian_tan */ + { 0x010010e2, 13176 }, /* Georgian_tar */ + { 0x010010e3, 13189 }, /* Georgian_un */ + { 0x010010d5, 13201 }, /* Georgian_vin */ + { 0x010010f3, 13214 }, /* Georgian_we */ + { 0x010010ee, 13226 }, /* Georgian_xan */ + { 0x010010d6, 13239 }, /* Georgian_zen */ + { 0x010010df, 13252 }, /* Georgian_zhar */ + { 0x00000060, 13266 }, /* grave */ + { 0x0000003e, 13272 }, /* greater */ + { 0x000008be, 13280 }, /* greaterthanequal */ + { 0x000007ae, 13297 }, /* Greek_accentdieresis */ + { 0x000007c1, 13318 }, /* Greek_ALPHA */ + { 0x000007e1, 13330 }, /* Greek_alpha */ + { 0x000007a1, 13342 }, /* Greek_ALPHAaccent */ + { 0x000007b1, 13360 }, /* Greek_alphaaccent */ + { 0x000007c2, 13378 }, /* Greek_BETA */ + { 0x000007e2, 13389 }, /* Greek_beta */ + { 0x000007d7, 13400 }, /* Greek_CHI */ + { 0x000007f7, 13410 }, /* Greek_chi */ + { 0x000007c4, 13420 }, /* Greek_DELTA */ + { 0x000007e4, 13432 }, /* Greek_delta */ + { 0x000007c5, 13444 }, /* Greek_EPSILON */ + { 0x000007e5, 13458 }, /* Greek_epsilon */ + { 0x000007a2, 13472 }, /* Greek_EPSILONaccent */ + { 0x000007b2, 13492 }, /* Greek_epsilonaccent */ + { 0x000007c7, 13512 }, /* Greek_ETA */ + { 0x000007e7, 13522 }, /* Greek_eta */ + { 0x000007a3, 13532 }, /* Greek_ETAaccent */ + { 0x000007b3, 13548 }, /* Greek_etaaccent */ + { 0x000007f3, 13564 }, /* Greek_finalsmallsigma */ + { 0x000007c3, 13586 }, /* Greek_GAMMA */ + { 0x000007e3, 13598 }, /* Greek_gamma */ + { 0x000007af, 13610 }, /* Greek_horizbar */ + { 0x000007c9, 13625 }, /* Greek_IOTA */ + { 0x000007e9, 13636 }, /* Greek_iota */ + { 0x000007a4, 13647 }, /* Greek_IOTAaccent */ + { 0x000007b4, 13664 }, /* Greek_iotaaccent */ + { 0x000007b6, 13681 }, /* Greek_iotaaccentdieresis */ + { 0x000007a5, 13706 }, /* Greek_IOTAdiaeresis */ + { 0x000007a5, 13726 }, /* Greek_IOTAdieresis */ + { 0x000007b5, 13745 }, /* Greek_iotadieresis */ + { 0x000007ca, 13764 }, /* Greek_KAPPA */ + { 0x000007ea, 13776 }, /* Greek_kappa */ + { 0x000007cb, 13788 }, /* Greek_LAMBDA */ + { 0x000007eb, 13801 }, /* Greek_lambda */ + { 0x000007cb, 13814 }, /* Greek_LAMDA */ + { 0x000007eb, 13826 }, /* Greek_lamda */ + { 0x000007cc, 13838 }, /* Greek_MU */ + { 0x000007ec, 13847 }, /* Greek_mu */ + { 0x000007cd, 13856 }, /* Greek_NU */ + { 0x000007ed, 13865 }, /* Greek_nu */ + { 0x000007d9, 13874 }, /* Greek_OMEGA */ + { 0x000007f9, 13886 }, /* Greek_omega */ + { 0x000007ab, 13898 }, /* Greek_OMEGAaccent */ + { 0x000007bb, 13916 }, /* Greek_omegaaccent */ + { 0x000007cf, 13934 }, /* Greek_OMICRON */ + { 0x000007ef, 13948 }, /* Greek_omicron */ + { 0x000007a7, 13962 }, /* Greek_OMICRONaccent */ + { 0x000007b7, 13982 }, /* Greek_omicronaccent */ + { 0x000007d6, 14002 }, /* Greek_PHI */ + { 0x000007f6, 14012 }, /* Greek_phi */ + { 0x000007d0, 14022 }, /* Greek_PI */ + { 0x000007f0, 14031 }, /* Greek_pi */ + { 0x000007d8, 14040 }, /* Greek_PSI */ + { 0x000007f8, 14050 }, /* Greek_psi */ + { 0x000007d1, 14060 }, /* Greek_RHO */ + { 0x000007f1, 14070 }, /* Greek_rho */ + { 0x000007d2, 14080 }, /* Greek_SIGMA */ + { 0x000007f2, 14092 }, /* Greek_sigma */ + { 0x0000ff7e, 14104 }, /* Greek_switch */ + { 0x000007d4, 14117 }, /* Greek_TAU */ + { 0x000007f4, 14127 }, /* Greek_tau */ + { 0x000007c8, 14137 }, /* Greek_THETA */ + { 0x000007e8, 14149 }, /* Greek_theta */ + { 0x000007d5, 14161 }, /* Greek_UPSILON */ + { 0x000007f5, 14175 }, /* Greek_upsilon */ + { 0x000007a8, 14189 }, /* Greek_UPSILONaccent */ + { 0x000007b8, 14209 }, /* Greek_upsilonaccent */ + { 0x000007ba, 14229 }, /* Greek_upsilonaccentdieresis */ + { 0x000007a9, 14257 }, /* Greek_UPSILONdieresis */ + { 0x000007b9, 14279 }, /* Greek_upsilondieresis */ + { 0x000007ce, 14301 }, /* Greek_XI */ + { 0x000007ee, 14310 }, /* Greek_xi */ + { 0x000007c6, 14319 }, /* Greek_ZETA */ + { 0x000007e6, 14330 }, /* Greek_zeta */ + { 0x100000be, 14341 }, /* guilder */ + { 0x000000ab, 14349 }, /* guillemotleft */ + { 0x000000bb, 14363 }, /* guillemotright */ + { 0x00000048, 14378 }, /* H */ + { 0x00000068, 14380 }, /* h */ + { 0x00000aa8, 14382 }, /* hairspace */ + { 0x0000ff31, 14392 }, /* Hangul */ + { 0x00000ebf, 14399 }, /* Hangul_A */ + { 0x00000ec0, 14408 }, /* Hangul_AE */ + { 0x00000ef6, 14418 }, /* Hangul_AraeA */ + { 0x00000ef7, 14431 }, /* Hangul_AraeAE */ + { 0x0000ff39, 14445 }, /* Hangul_Banja */ + { 0x00000eba, 14458 }, /* Hangul_Cieuc */ + { 0x0000ff37, 14471 }, /* Hangul_Codeinput */ + { 0x00000ea7, 14488 }, /* Hangul_Dikeud */ + { 0x00000ec4, 14502 }, /* Hangul_E */ + { 0x0000ff33, 14511 }, /* Hangul_End */ + { 0x00000ec3, 14522 }, /* Hangul_EO */ + { 0x00000ed1, 14532 }, /* Hangul_EU */ + { 0x0000ff34, 14542 }, /* Hangul_Hanja */ + { 0x00000ebe, 14555 }, /* Hangul_Hieuh */ + { 0x00000ed3, 14568 }, /* Hangul_I */ + { 0x00000eb7, 14577 }, /* Hangul_Ieung */ + { 0x00000eea, 14590 }, /* Hangul_J_Cieuc */ + { 0x00000eda, 14605 }, /* Hangul_J_Dikeud */ + { 0x00000eee, 14621 }, /* Hangul_J_Hieuh */ + { 0x00000ee8, 14636 }, /* Hangul_J_Ieung */ + { 0x00000ee9, 14651 }, /* Hangul_J_Jieuj */ + { 0x00000eeb, 14666 }, /* Hangul_J_Khieuq */ + { 0x00000ed4, 14682 }, /* Hangul_J_Kiyeog */ + { 0x00000ed6, 14698 }, /* Hangul_J_KiyeogSios */ + { 0x00000ef9, 14718 }, /* Hangul_J_KkogjiDalrinIeung */ + { 0x00000ee3, 14745 }, /* Hangul_J_Mieum */ + { 0x00000ed7, 14760 }, /* Hangul_J_Nieun */ + { 0x00000ed9, 14775 }, /* Hangul_J_NieunHieuh */ + { 0x00000ed8, 14795 }, /* Hangul_J_NieunJieuj */ + { 0x00000ef8, 14815 }, /* Hangul_J_PanSios */ + { 0x00000eed, 14832 }, /* Hangul_J_Phieuf */ + { 0x00000ee4, 14848 }, /* Hangul_J_Pieub */ + { 0x00000ee5, 14863 }, /* Hangul_J_PieubSios */ + { 0x00000edb, 14882 }, /* Hangul_J_Rieul */ + { 0x00000ee2, 14897 }, /* Hangul_J_RieulHieuh */ + { 0x00000edc, 14917 }, /* Hangul_J_RieulKiyeog */ + { 0x00000edd, 14938 }, /* Hangul_J_RieulMieum */ + { 0x00000ee1, 14958 }, /* Hangul_J_RieulPhieuf */ + { 0x00000ede, 14979 }, /* Hangul_J_RieulPieub */ + { 0x00000edf, 14999 }, /* Hangul_J_RieulSios */ + { 0x00000ee0, 15018 }, /* Hangul_J_RieulTieut */ + { 0x00000ee6, 15038 }, /* Hangul_J_Sios */ + { 0x00000ed5, 15052 }, /* Hangul_J_SsangKiyeog */ + { 0x00000ee7, 15073 }, /* Hangul_J_SsangSios */ + { 0x00000eec, 15092 }, /* Hangul_J_Tieut */ + { 0x00000efa, 15107 }, /* Hangul_J_YeorinHieuh */ + { 0x0000ff35, 15128 }, /* Hangul_Jamo */ + { 0x0000ff38, 15140 }, /* Hangul_Jeonja */ + { 0x00000eb8, 15154 }, /* Hangul_Jieuj */ + { 0x00000ebb, 15167 }, /* Hangul_Khieuq */ + { 0x00000ea1, 15181 }, /* Hangul_Kiyeog */ + { 0x00000ea3, 15195 }, /* Hangul_KiyeogSios */ + { 0x00000ef3, 15213 }, /* Hangul_KkogjiDalrinIeung */ + { 0x00000eb1, 15238 }, /* Hangul_Mieum */ + { 0x0000ff3d, 15251 }, /* Hangul_MultipleCandidate */ + { 0x00000ea4, 15276 }, /* Hangul_Nieun */ + { 0x00000ea6, 15289 }, /* Hangul_NieunHieuh */ + { 0x00000ea5, 15307 }, /* Hangul_NieunJieuj */ + { 0x00000ec7, 15325 }, /* Hangul_O */ + { 0x00000eca, 15334 }, /* Hangul_OE */ + { 0x00000ef2, 15344 }, /* Hangul_PanSios */ + { 0x00000ebd, 15359 }, /* Hangul_Phieuf */ + { 0x00000eb2, 15373 }, /* Hangul_Pieub */ + { 0x00000eb4, 15386 }, /* Hangul_PieubSios */ + { 0x0000ff3b, 15403 }, /* Hangul_PostHanja */ + { 0x0000ff3a, 15420 }, /* Hangul_PreHanja */ + { 0x0000ff3e, 15436 }, /* Hangul_PreviousCandidate */ + { 0x00000ea9, 15461 }, /* Hangul_Rieul */ + { 0x00000eb0, 15474 }, /* Hangul_RieulHieuh */ + { 0x00000eaa, 15492 }, /* Hangul_RieulKiyeog */ + { 0x00000eab, 15511 }, /* Hangul_RieulMieum */ + { 0x00000eaf, 15529 }, /* Hangul_RieulPhieuf */ + { 0x00000eac, 15548 }, /* Hangul_RieulPieub */ + { 0x00000ead, 15566 }, /* Hangul_RieulSios */ + { 0x00000eae, 15583 }, /* Hangul_RieulTieut */ + { 0x00000eef, 15601 }, /* Hangul_RieulYeorinHieuh */ + { 0x0000ff36, 15625 }, /* Hangul_Romaja */ + { 0x0000ff3c, 15639 }, /* Hangul_SingleCandidate */ + { 0x00000eb5, 15662 }, /* Hangul_Sios */ + { 0x0000ff3f, 15674 }, /* Hangul_Special */ + { 0x00000ea8, 15689 }, /* Hangul_SsangDikeud */ + { 0x00000eb9, 15708 }, /* Hangul_SsangJieuj */ + { 0x00000ea2, 15726 }, /* Hangul_SsangKiyeog */ + { 0x00000eb3, 15745 }, /* Hangul_SsangPieub */ + { 0x00000eb6, 15763 }, /* Hangul_SsangSios */ + { 0x0000ff32, 15780 }, /* Hangul_Start */ + { 0x00000ef0, 15793 }, /* Hangul_SunkyeongeumMieum */ + { 0x00000ef4, 15818 }, /* Hangul_SunkyeongeumPhieuf */ + { 0x00000ef1, 15844 }, /* Hangul_SunkyeongeumPieub */ + { 0x0000ff7e, 15869 }, /* Hangul_switch */ + { 0x00000ebc, 15883 }, /* Hangul_Tieut */ + { 0x00000ecc, 15896 }, /* Hangul_U */ + { 0x00000ec8, 15905 }, /* Hangul_WA */ + { 0x00000ec9, 15915 }, /* Hangul_WAE */ + { 0x00000ece, 15926 }, /* Hangul_WE */ + { 0x00000ecd, 15936 }, /* Hangul_WEO */ + { 0x00000ecf, 15947 }, /* Hangul_WI */ + { 0x00000ec1, 15957 }, /* Hangul_YA */ + { 0x00000ec2, 15967 }, /* Hangul_YAE */ + { 0x00000ec6, 15978 }, /* Hangul_YE */ + { 0x00000ec5, 15988 }, /* Hangul_YEO */ + { 0x00000ef5, 15999 }, /* Hangul_YeorinHieuh */ + { 0x00000ed2, 16018 }, /* Hangul_YI */ + { 0x00000ecb, 16028 }, /* Hangul_YO */ + { 0x00000ed0, 16038 }, /* Hangul_YU */ + { 0x0000ff29, 16048 }, /* Hankaku */ + { 0x000002a6, 16056 }, /* Hcircumflex */ + { 0x000002b6, 16068 }, /* hcircumflex */ + { 0x00000aee, 16080 }, /* heart */ + { 0x00000ce0, 16086 }, /* hebrew_aleph */ + { 0x00000cf2, 16099 }, /* hebrew_ayin */ + { 0x00000ce1, 16111 }, /* hebrew_bet */ + { 0x00000ce1, 16122 }, /* hebrew_beth */ + { 0x00000ce7, 16134 }, /* hebrew_chet */ + { 0x00000ce3, 16146 }, /* hebrew_dalet */ + { 0x00000ce3, 16159 }, /* hebrew_daleth */ + { 0x00000cdf, 16173 }, /* hebrew_doublelowline */ + { 0x00000cea, 16194 }, /* hebrew_finalkaph */ + { 0x00000ced, 16211 }, /* hebrew_finalmem */ + { 0x00000cef, 16227 }, /* hebrew_finalnun */ + { 0x00000cf3, 16243 }, /* hebrew_finalpe */ + { 0x00000cf5, 16258 }, /* hebrew_finalzade */ + { 0x00000cf5, 16275 }, /* hebrew_finalzadi */ + { 0x00000ce2, 16292 }, /* hebrew_gimel */ + { 0x00000ce2, 16305 }, /* hebrew_gimmel */ + { 0x00000ce4, 16319 }, /* hebrew_he */ + { 0x00000ce7, 16329 }, /* hebrew_het */ + { 0x00000ceb, 16340 }, /* hebrew_kaph */ + { 0x00000cf7, 16352 }, /* hebrew_kuf */ + { 0x00000cec, 16363 }, /* hebrew_lamed */ + { 0x00000cee, 16376 }, /* hebrew_mem */ + { 0x00000cf0, 16387 }, /* hebrew_nun */ + { 0x00000cf4, 16398 }, /* hebrew_pe */ + { 0x00000cf7, 16408 }, /* hebrew_qoph */ + { 0x00000cf8, 16420 }, /* hebrew_resh */ + { 0x00000cf1, 16432 }, /* hebrew_samech */ + { 0x00000cf1, 16446 }, /* hebrew_samekh */ + { 0x00000cf9, 16460 }, /* hebrew_shin */ + { 0x0000ff7e, 16472 }, /* Hebrew_switch */ + { 0x00000cfa, 16486 }, /* hebrew_taf */ + { 0x00000cfa, 16497 }, /* hebrew_taw */ + { 0x00000ce8, 16508 }, /* hebrew_tet */ + { 0x00000ce8, 16519 }, /* hebrew_teth */ + { 0x00000ce5, 16531 }, /* hebrew_waw */ + { 0x00000ce9, 16542 }, /* hebrew_yod */ + { 0x00000cf6, 16553 }, /* hebrew_zade */ + { 0x00000cf6, 16565 }, /* hebrew_zadi */ + { 0x00000ce6, 16577 }, /* hebrew_zain */ + { 0x00000ce6, 16589 }, /* hebrew_zayin */ + { 0x0000ff6a, 16602 }, /* Help */ + { 0x0000ff23, 16607 }, /* Henkan */ + { 0x0000ff23, 16614 }, /* Henkan_Mode */ + { 0x00000ada, 16626 }, /* hexagram */ + { 0x0000ff25, 16635 }, /* Hiragana */ + { 0x0000ff27, 16644 }, /* Hiragana_Katakana */ + { 0x0000ff50, 16662 }, /* Home */ + { 0x000008a3, 16667 }, /* horizconnector */ + { 0x000009ef, 16682 }, /* horizlinescan1 */ + { 0x000009f0, 16697 }, /* horizlinescan3 */ + { 0x000009f1, 16712 }, /* horizlinescan5 */ + { 0x000009f2, 16727 }, /* horizlinescan7 */ + { 0x000009f3, 16742 }, /* horizlinescan9 */ + { 0x1000ff74, 16757 }, /* hpBackTab */ + { 0x100000fc, 16767 }, /* hpblock */ + { 0x1000ff6f, 16775 }, /* hpClearLine */ + { 0x1000ff73, 16787 }, /* hpDeleteChar */ + { 0x1000ff71, 16800 }, /* hpDeleteLine */ + { 0x100000be, 16813 }, /* hpguilder */ + { 0x1000ff72, 16823 }, /* hpInsertChar */ + { 0x1000ff70, 16836 }, /* hpInsertLine */ + { 0x100000ee, 16849 }, /* hpIO */ + { 0x1000ff75, 16854 }, /* hpKP_BackTab */ + { 0x100000af, 16867 }, /* hplira */ + { 0x100000f6, 16874 }, /* hplongminus */ + { 0x1000ff48, 16886 }, /* hpModelock1 */ + { 0x1000ff49, 16898 }, /* hpModelock2 */ + { 0x100000a8, 16910 }, /* hpmute_acute */ + { 0x100000aa, 16923 }, /* hpmute_asciicircum */ + { 0x100000ac, 16942 }, /* hpmute_asciitilde */ + { 0x100000ab, 16960 }, /* hpmute_diaeresis */ + { 0x100000a9, 16977 }, /* hpmute_grave */ + { 0x1000ff6c, 16990 }, /* hpReset */ + { 0x1000ff6d, 16998 }, /* hpSystem */ + { 0x1000ff6e, 17007 }, /* hpUser */ + { 0x100000ee, 17014 }, /* hpYdiaeresis */ + { 0x000002a1, 17027 }, /* Hstroke */ + { 0x000002b1, 17035 }, /* hstroke */ + { 0x000009e2, 17043 }, /* ht */ + { 0x0000ffed, 17046 }, /* Hyper_L */ + { 0x0000ffee, 17054 }, /* Hyper_R */ + { 0x000000ad, 17062 }, /* hyphen */ + { 0x00000049, 17069 }, /* I */ + { 0x00000069, 17071 }, /* i */ + { 0x000002a9, 17073 }, /* Iabovedot */ + { 0x000000cd, 17083 }, /* Iacute */ + { 0x000000ed, 17090 }, /* iacute */ + { 0x01001eca, 17097 }, /* Ibelowdot */ + { 0x01001ecb, 17107 }, /* ibelowdot */ + { 0x0100012c, 17117 }, /* Ibreve */ + { 0x0100012d, 17124 }, /* ibreve */ + { 0x000000ce, 17131 }, /* Icircumflex */ + { 0x000000ee, 17143 }, /* icircumflex */ + { 0x000008cf, 17155 }, /* identical */ + { 0x000000cf, 17165 }, /* Idiaeresis */ + { 0x000000ef, 17176 }, /* idiaeresis */ + { 0x000002b9, 17187 }, /* idotless */ + { 0x000008cd, 17196 }, /* ifonlyif */ + { 0x000000cc, 17205 }, /* Igrave */ + { 0x000000ec, 17212 }, /* igrave */ + { 0x01001ec8, 17219 }, /* Ihook */ + { 0x01001ec9, 17225 }, /* ihook */ + { 0x000003cf, 17231 }, /* Imacron */ + { 0x000003ef, 17239 }, /* imacron */ + { 0x000008ce, 17247 }, /* implies */ + { 0x000008da, 17255 }, /* includedin */ + { 0x000008db, 17266 }, /* includes */ + { 0x000008c2, 17275 }, /* infinity */ + { 0x0000ff63, 17284 }, /* Insert */ + { 0x1000ff72, 17291 }, /* InsertChar */ + { 0x1000ff70, 17302 }, /* InsertLine */ + { 0x000008bf, 17313 }, /* integral */ + { 0x000008dc, 17322 }, /* intersection */ + { 0x100000ee, 17335 }, /* IO */ + { 0x000003c7, 17338 }, /* Iogonek */ + { 0x000003e7, 17346 }, /* iogonek */ + { 0x0000fe33, 17354 }, /* ISO_Center_Object */ + { 0x0000fe30, 17372 }, /* ISO_Continuous_Underline */ + { 0x0000fe31, 17397 }, /* ISO_Discontinuous_Underline */ + { 0x0000fe32, 17425 }, /* ISO_Emphasize */ + { 0x0000fe34, 17439 }, /* ISO_Enter */ + { 0x0000fe2f, 17449 }, /* ISO_Fast_Cursor_Down */ + { 0x0000fe2c, 17470 }, /* ISO_Fast_Cursor_Left */ + { 0x0000fe2d, 17491 }, /* ISO_Fast_Cursor_Right */ + { 0x0000fe2e, 17513 }, /* ISO_Fast_Cursor_Up */ + { 0x0000fe0c, 17532 }, /* ISO_First_Group */ + { 0x0000fe0d, 17548 }, /* ISO_First_Group_Lock */ + { 0x0000fe06, 17569 }, /* ISO_Group_Latch */ + { 0x0000fe07, 17585 }, /* ISO_Group_Lock */ + { 0x0000ff7e, 17600 }, /* ISO_Group_Shift */ + { 0x0000fe0e, 17616 }, /* ISO_Last_Group */ + { 0x0000fe0f, 17631 }, /* ISO_Last_Group_Lock */ + { 0x0000fe20, 17651 }, /* ISO_Left_Tab */ + { 0x0000fe02, 17664 }, /* ISO_Level2_Latch */ + { 0x0000fe04, 17681 }, /* ISO_Level3_Latch */ + { 0x0000fe05, 17698 }, /* ISO_Level3_Lock */ + { 0x0000fe03, 17714 }, /* ISO_Level3_Shift */ + { 0x0000fe12, 17731 }, /* ISO_Level5_Latch */ + { 0x0000fe13, 17748 }, /* ISO_Level5_Lock */ + { 0x0000fe11, 17764 }, /* ISO_Level5_Shift */ + { 0x0000fe01, 17781 }, /* ISO_Lock */ + { 0x0000fe22, 17790 }, /* ISO_Move_Line_Down */ + { 0x0000fe21, 17809 }, /* ISO_Move_Line_Up */ + { 0x0000fe08, 17826 }, /* ISO_Next_Group */ + { 0x0000fe09, 17841 }, /* ISO_Next_Group_Lock */ + { 0x0000fe24, 17861 }, /* ISO_Partial_Line_Down */ + { 0x0000fe23, 17883 }, /* ISO_Partial_Line_Up */ + { 0x0000fe25, 17903 }, /* ISO_Partial_Space_Left */ + { 0x0000fe26, 17926 }, /* ISO_Partial_Space_Right */ + { 0x0000fe0a, 17950 }, /* ISO_Prev_Group */ + { 0x0000fe0b, 17965 }, /* ISO_Prev_Group_Lock */ + { 0x0000fe2b, 17985 }, /* ISO_Release_Both_Margins */ + { 0x0000fe29, 18010 }, /* ISO_Release_Margin_Left */ + { 0x0000fe2a, 18034 }, /* ISO_Release_Margin_Right */ + { 0x0000fe27, 18059 }, /* ISO_Set_Margin_Left */ + { 0x0000fe28, 18079 }, /* ISO_Set_Margin_Right */ + { 0x000003a5, 18100 }, /* Itilde */ + { 0x000003b5, 18107 }, /* itilde */ + { 0x0000004a, 18114 }, /* J */ + { 0x0000006a, 18116 }, /* j */ + { 0x000002ac, 18118 }, /* Jcircumflex */ + { 0x000002bc, 18130 }, /* jcircumflex */ + { 0x00000bca, 18142 }, /* jot */ + { 0x0000004b, 18146 }, /* K */ + { 0x0000006b, 18148 }, /* k */ + { 0x000004a7, 18150 }, /* kana_a */ + { 0x000004b1, 18157 }, /* kana_A */ + { 0x000004c1, 18164 }, /* kana_CHI */ + { 0x000004a3, 18173 }, /* kana_closingbracket */ + { 0x000004a4, 18193 }, /* kana_comma */ + { 0x000004a5, 18204 }, /* kana_conjunctive */ + { 0x000004aa, 18221 }, /* kana_e */ + { 0x000004b4, 18228 }, /* kana_E */ + { 0x000004cc, 18235 }, /* kana_FU */ + { 0x000004a1, 18243 }, /* kana_fullstop */ + { 0x000004ca, 18257 }, /* kana_HA */ + { 0x000004cd, 18265 }, /* kana_HE */ + { 0x000004cb, 18273 }, /* kana_HI */ + { 0x000004ce, 18281 }, /* kana_HO */ + { 0x000004cc, 18289 }, /* kana_HU */ + { 0x000004a8, 18297 }, /* kana_i */ + { 0x000004b2, 18304 }, /* kana_I */ + { 0x000004b6, 18311 }, /* kana_KA */ + { 0x000004b9, 18319 }, /* kana_KE */ + { 0x000004b7, 18327 }, /* kana_KI */ + { 0x000004ba, 18335 }, /* kana_KO */ + { 0x000004b8, 18343 }, /* kana_KU */ + { 0x0000ff2d, 18351 }, /* Kana_Lock */ + { 0x000004cf, 18361 }, /* kana_MA */ + { 0x000004d2, 18369 }, /* kana_ME */ + { 0x000004d0, 18377 }, /* kana_MI */ + { 0x000004a5, 18385 }, /* kana_middledot */ + { 0x000004d3, 18400 }, /* kana_MO */ + { 0x000004d1, 18408 }, /* kana_MU */ + { 0x000004dd, 18416 }, /* kana_N */ + { 0x000004c5, 18423 }, /* kana_NA */ + { 0x000004c8, 18431 }, /* kana_NE */ + { 0x000004c6, 18439 }, /* kana_NI */ + { 0x000004c9, 18447 }, /* kana_NO */ + { 0x000004c7, 18455 }, /* kana_NU */ + { 0x000004ab, 18463 }, /* kana_o */ + { 0x000004b5, 18470 }, /* kana_O */ + { 0x000004a2, 18477 }, /* kana_openingbracket */ + { 0x000004d7, 18497 }, /* kana_RA */ + { 0x000004da, 18505 }, /* kana_RE */ + { 0x000004d8, 18513 }, /* kana_RI */ + { 0x000004db, 18521 }, /* kana_RO */ + { 0x000004d9, 18529 }, /* kana_RU */ + { 0x000004bb, 18537 }, /* kana_SA */ + { 0x000004be, 18545 }, /* kana_SE */ + { 0x000004bc, 18553 }, /* kana_SHI */ + { 0x0000ff2e, 18562 }, /* Kana_Shift */ + { 0x000004bf, 18573 }, /* kana_SO */ + { 0x000004bd, 18581 }, /* kana_SU */ + { 0x0000ff7e, 18589 }, /* kana_switch */ + { 0x000004c0, 18601 }, /* kana_TA */ + { 0x000004c3, 18609 }, /* kana_TE */ + { 0x000004c1, 18617 }, /* kana_TI */ + { 0x000004c4, 18625 }, /* kana_TO */ + { 0x000004af, 18633 }, /* kana_tsu */ + { 0x000004c2, 18642 }, /* kana_TSU */ + { 0x000004af, 18651 }, /* kana_tu */ + { 0x000004c2, 18659 }, /* kana_TU */ + { 0x000004a9, 18667 }, /* kana_u */ + { 0x000004b3, 18674 }, /* kana_U */ + { 0x000004dc, 18681 }, /* kana_WA */ + { 0x000004a6, 18689 }, /* kana_WO */ + { 0x000004ac, 18697 }, /* kana_ya */ + { 0x000004d4, 18705 }, /* kana_YA */ + { 0x000004ae, 18713 }, /* kana_yo */ + { 0x000004d6, 18721 }, /* kana_YO */ + { 0x000004ad, 18729 }, /* kana_yu */ + { 0x000004d5, 18737 }, /* kana_YU */ + { 0x0000ff21, 18745 }, /* Kanji */ + { 0x0000ff37, 18751 }, /* Kanji_Bangou */ + { 0x000003a2, 18764 }, /* kappa */ + { 0x0000ff26, 18770 }, /* Katakana */ + { 0x000003d3, 18779 }, /* Kcedilla */ + { 0x000003f3, 18788 }, /* kcedilla */ + { 0x00000eff, 18797 }, /* Korean_Won */ + { 0x0000ffb0, 18808 }, /* KP_0 */ + { 0x0000ffb1, 18813 }, /* KP_1 */ + { 0x0000ffb2, 18818 }, /* KP_2 */ + { 0x0000ffb3, 18823 }, /* KP_3 */ + { 0x0000ffb4, 18828 }, /* KP_4 */ + { 0x0000ffb5, 18833 }, /* KP_5 */ + { 0x0000ffb6, 18838 }, /* KP_6 */ + { 0x0000ffb7, 18843 }, /* KP_7 */ + { 0x0000ffb8, 18848 }, /* KP_8 */ + { 0x0000ffb9, 18853 }, /* KP_9 */ + { 0x0000ffab, 18858 }, /* KP_Add */ + { 0x1000ff75, 18865 }, /* KP_BackTab */ + { 0x0000ff9d, 18876 }, /* KP_Begin */ + { 0x0000ffae, 18885 }, /* KP_Decimal */ + { 0x0000ff9f, 18896 }, /* KP_Delete */ + { 0x0000ffaf, 18906 }, /* KP_Divide */ + { 0x0000ff99, 18916 }, /* KP_Down */ + { 0x0000ff9c, 18924 }, /* KP_End */ + { 0x0000ff8d, 18931 }, /* KP_Enter */ + { 0x0000ffbd, 18940 }, /* KP_Equal */ + { 0x0000ff91, 18949 }, /* KP_F1 */ + { 0x0000ff92, 18955 }, /* KP_F2 */ + { 0x0000ff93, 18961 }, /* KP_F3 */ + { 0x0000ff94, 18967 }, /* KP_F4 */ + { 0x0000ff95, 18973 }, /* KP_Home */ + { 0x0000ff9e, 18981 }, /* KP_Insert */ + { 0x0000ff96, 18991 }, /* KP_Left */ + { 0x0000ffaa, 18999 }, /* KP_Multiply */ + { 0x0000ff9b, 19011 }, /* KP_Next */ + { 0x0000ff9b, 19019 }, /* KP_Page_Down */ + { 0x0000ff9a, 19032 }, /* KP_Page_Up */ + { 0x0000ff9a, 19043 }, /* KP_Prior */ + { 0x0000ff98, 19052 }, /* KP_Right */ + { 0x0000ffac, 19061 }, /* KP_Separator */ + { 0x0000ff80, 19074 }, /* KP_Space */ + { 0x0000ffad, 19083 }, /* KP_Subtract */ + { 0x0000ff89, 19095 }, /* KP_Tab */ + { 0x0000ff97, 19102 }, /* KP_Up */ + { 0x000003a2, 19108 }, /* kra */ + { 0x0000004c, 19112 }, /* L */ + { 0x0000006c, 19114 }, /* l */ + { 0x0000ffc8, 19116 }, /* L1 */ + { 0x0000ffd1, 19119 }, /* L10 */ + { 0x0000ffc9, 19123 }, /* L2 */ + { 0x0000ffca, 19126 }, /* L3 */ + { 0x0000ffcb, 19129 }, /* L4 */ + { 0x0000ffcc, 19132 }, /* L5 */ + { 0x0000ffcd, 19135 }, /* L6 */ + { 0x0000ffce, 19138 }, /* L7 */ + { 0x0000ffcf, 19141 }, /* L8 */ + { 0x0000ffd0, 19144 }, /* L9 */ + { 0x000001c5, 19147 }, /* Lacute */ + { 0x000001e5, 19154 }, /* lacute */ + { 0x0000fed4, 19161 }, /* Last_Virtual_Screen */ + { 0x00000ad9, 19181 }, /* latincross */ + { 0x01001e36, 19192 }, /* Lbelowdot */ + { 0x01001e37, 19202 }, /* lbelowdot */ + { 0x000001a5, 19212 }, /* Lcaron */ + { 0x000001b5, 19219 }, /* lcaron */ + { 0x000003a6, 19226 }, /* Lcedilla */ + { 0x000003b6, 19235 }, /* lcedilla */ + { 0x0000ff51, 19244 }, /* Left */ + { 0x00000abc, 19249 }, /* leftanglebracket */ + { 0x000008fb, 19266 }, /* leftarrow */ + { 0x00000ba3, 19276 }, /* leftcaret */ + { 0x00000ad2, 19286 }, /* leftdoublequotemark */ + { 0x000008af, 19306 }, /* leftmiddlecurlybrace */ + { 0x00000acc, 19327 }, /* leftopentriangle */ + { 0x00000aea, 19344 }, /* leftpointer */ + { 0x000008a1, 19356 }, /* leftradical */ + { 0x00000bda, 19368 }, /* leftshoe */ + { 0x00000ad0, 19377 }, /* leftsinglequotemark */ + { 0x000009f4, 19397 }, /* leftt */ + { 0x00000bdc, 19403 }, /* lefttack */ + { 0x0000003c, 19412 }, /* less */ + { 0x000008bc, 19417 }, /* lessthanequal */ + { 0x000009e5, 19431 }, /* lf */ + { 0x0000ff0a, 19434 }, /* Linefeed */ + { 0x100000af, 19443 }, /* lira */ + { 0x010020a4, 19448 }, /* LiraSign */ + { 0x000008de, 19457 }, /* logicaland */ + { 0x000008df, 19468 }, /* logicalor */ + { 0x100000f6, 19478 }, /* longminus */ + { 0x000009ed, 19488 }, /* lowleftcorner */ + { 0x000009ea, 19502 }, /* lowrightcorner */ + { 0x000001a3, 19517 }, /* Lstroke */ + { 0x000001b3, 19525 }, /* lstroke */ + { 0x0000004d, 19533 }, /* M */ + { 0x0000006d, 19535 }, /* m */ + { 0x01001e40, 19537 }, /* Mabovedot */ + { 0x01001e41, 19547 }, /* mabovedot */ + { 0x000006a5, 19557 }, /* Macedonia_dse */ + { 0x000006b5, 19571 }, /* Macedonia_DSE */ + { 0x000006a2, 19585 }, /* Macedonia_gje */ + { 0x000006b2, 19599 }, /* Macedonia_GJE */ + { 0x000006ac, 19613 }, /* Macedonia_kje */ + { 0x000006bc, 19627 }, /* Macedonia_KJE */ + { 0x000000af, 19641 }, /* macron */ + { 0x0000ff3e, 19648 }, /* Mae_Koho */ + { 0x00000af7, 19657 }, /* malesymbol */ + { 0x00000af0, 19668 }, /* maltesecross */ + { 0x00000abf, 19681 }, /* marker */ + { 0x000000ba, 19688 }, /* masculine */ + { 0x0000ff2c, 19698 }, /* Massyo */ + { 0x0000ff67, 19705 }, /* Menu */ + { 0x0000ffe7, 19710 }, /* Meta_L */ + { 0x0000ffe8, 19717 }, /* Meta_R */ + { 0x010020a5, 19724 }, /* MillSign */ + { 0x0000002d, 19733 }, /* minus */ + { 0x00000ad6, 19739 }, /* minutes */ + { 0x0000ff7e, 19747 }, /* Mode_switch */ + { 0x0000fe77, 19759 }, /* MouseKeys_Accel_Enable */ + { 0x0000fe76, 19782 }, /* MouseKeys_Enable */ + { 0x000000b5, 19799 }, /* mu */ + { 0x0000ff22, 19802 }, /* Muhenkan */ + { 0x0000ff20, 19811 }, /* Multi_key */ + { 0x0000ff3d, 19821 }, /* MultipleCandidate */ + { 0x000000d7, 19839 }, /* multiply */ + { 0x00000af6, 19848 }, /* musicalflat */ + { 0x00000af5, 19860 }, /* musicalsharp */ + { 0x100000a8, 19873 }, /* mute_acute */ + { 0x100000aa, 19884 }, /* mute_asciicircum */ + { 0x100000ac, 19901 }, /* mute_asciitilde */ + { 0x100000ab, 19917 }, /* mute_diaeresis */ + { 0x100000a9, 19932 }, /* mute_grave */ + { 0x0000004e, 19943 }, /* N */ + { 0x0000006e, 19945 }, /* n */ + { 0x000008c5, 19947 }, /* nabla */ + { 0x000001d1, 19953 }, /* Nacute */ + { 0x000001f1, 19960 }, /* nacute */ + { 0x010020a6, 19967 }, /* NairaSign */ + { 0x000001d2, 19977 }, /* Ncaron */ + { 0x000001f2, 19984 }, /* ncaron */ + { 0x000003d1, 19991 }, /* Ncedilla */ + { 0x000003f1, 20000 }, /* ncedilla */ + { 0x010020aa, 20009 }, /* NewSheqelSign */ + { 0x0000ff56, 20023 }, /* Next */ + { 0x0000fed2, 20028 }, /* Next_Virtual_Screen */ + { 0x01002089, 20048 }, /* ninesubscript */ + { 0x01002079, 20062 }, /* ninesuperior */ + { 0x000009e8, 20075 }, /* nl */ + { 0x000000a0, 20078 }, /* nobreakspace */ + { 0x00000000, 20091 }, /* NoSymbol */ + { 0x01002247, 20100 }, /* notapproxeq */ + { 0x01002209, 20112 }, /* notelementof */ + { 0x000008bd, 20125 }, /* notequal */ + { 0x01002262, 20134 }, /* notidentical */ + { 0x000000ac, 20147 }, /* notsign */ + { 0x000000d1, 20155 }, /* Ntilde */ + { 0x000000f1, 20162 }, /* ntilde */ + { 0x0000ff7f, 20169 }, /* Num_Lock */ + { 0x00000023, 20178 }, /* numbersign */ + { 0x000006b0, 20189 }, /* numerosign */ + { 0x0000004f, 20200 }, /* O */ + { 0x0000006f, 20202 }, /* o */ + { 0x000000d3, 20204 }, /* Oacute */ + { 0x000000f3, 20211 }, /* oacute */ + { 0x0100019f, 20218 }, /* Obarred */ + { 0x01000275, 20226 }, /* obarred */ + { 0x01001ecc, 20234 }, /* Obelowdot */ + { 0x01001ecd, 20244 }, /* obelowdot */ + { 0x010001d1, 20254 }, /* Ocaron */ + { 0x010001d2, 20261 }, /* ocaron */ + { 0x000000d4, 20268 }, /* Ocircumflex */ + { 0x000000f4, 20280 }, /* ocircumflex */ + { 0x01001ed0, 20292 }, /* Ocircumflexacute */ + { 0x01001ed1, 20309 }, /* ocircumflexacute */ + { 0x01001ed8, 20326 }, /* Ocircumflexbelowdot */ + { 0x01001ed9, 20346 }, /* ocircumflexbelowdot */ + { 0x01001ed2, 20366 }, /* Ocircumflexgrave */ + { 0x01001ed3, 20383 }, /* ocircumflexgrave */ + { 0x01001ed4, 20400 }, /* Ocircumflexhook */ + { 0x01001ed5, 20416 }, /* ocircumflexhook */ + { 0x01001ed6, 20432 }, /* Ocircumflextilde */ + { 0x01001ed7, 20449 }, /* ocircumflextilde */ + { 0x000000d6, 20466 }, /* Odiaeresis */ + { 0x000000f6, 20477 }, /* odiaeresis */ + { 0x000001d5, 20488 }, /* Odoubleacute */ + { 0x000001f5, 20501 }, /* odoubleacute */ + { 0x000013bc, 20514 }, /* OE */ + { 0x000013bd, 20517 }, /* oe */ + { 0x000001b2, 20520 }, /* ogonek */ + { 0x000000d2, 20527 }, /* Ograve */ + { 0x000000f2, 20534 }, /* ograve */ + { 0x01001ece, 20541 }, /* Ohook */ + { 0x01001ecf, 20547 }, /* ohook */ + { 0x010001a0, 20553 }, /* Ohorn */ + { 0x010001a1, 20559 }, /* ohorn */ + { 0x01001eda, 20565 }, /* Ohornacute */ + { 0x01001edb, 20576 }, /* ohornacute */ + { 0x01001ee2, 20587 }, /* Ohornbelowdot */ + { 0x01001ee3, 20601 }, /* ohornbelowdot */ + { 0x01001edc, 20615 }, /* Ohorngrave */ + { 0x01001edd, 20626 }, /* ohorngrave */ + { 0x01001ede, 20637 }, /* Ohornhook */ + { 0x01001edf, 20647 }, /* ohornhook */ + { 0x01001ee0, 20657 }, /* Ohorntilde */ + { 0x01001ee1, 20668 }, /* ohorntilde */ + { 0x000003d2, 20679 }, /* Omacron */ + { 0x000003f2, 20687 }, /* omacron */ + { 0x00000ac3, 20695 }, /* oneeighth */ + { 0x00000ab2, 20705 }, /* onefifth */ + { 0x000000bd, 20714 }, /* onehalf */ + { 0x000000bc, 20722 }, /* onequarter */ + { 0x00000ab6, 20733 }, /* onesixth */ + { 0x01002081, 20742 }, /* onesubscript */ + { 0x000000b9, 20755 }, /* onesuperior */ + { 0x00000ab0, 20767 }, /* onethird */ + { 0x000000d8, 20776 }, /* Ooblique */ + { 0x000000f8, 20785 }, /* ooblique */ + { 0x00000ae2, 20794 }, /* openrectbullet */ + { 0x00000ae5, 20809 }, /* openstar */ + { 0x00000ae4, 20818 }, /* opentribulletdown */ + { 0x00000ae3, 20836 }, /* opentribulletup */ + { 0x000000aa, 20852 }, /* ordfeminine */ + { 0x1004ff44, 20864 }, /* osfActivate */ + { 0x1004ff31, 20876 }, /* osfAddMode */ + { 0x1004ff08, 20887 }, /* osfBackSpace */ + { 0x1004ff07, 20900 }, /* osfBackTab */ + { 0x1004ff5a, 20911 }, /* osfBeginData */ + { 0x1004ff58, 20924 }, /* osfBeginLine */ + { 0x1004ff69, 20937 }, /* osfCancel */ + { 0x1004ff0b, 20947 }, /* osfClear */ + { 0x1004ff02, 20956 }, /* osfCopy */ + { 0x1004ff03, 20964 }, /* osfCut */ + { 0x1004ffff, 20971 }, /* osfDelete */ + { 0x1004ff72, 20981 }, /* osfDeselectAll */ + { 0x1004ff54, 20996 }, /* osfDown */ + { 0x1004ff59, 21004 }, /* osfEndData */ + { 0x1004ff57, 21015 }, /* osfEndLine */ + { 0x1004ff1b, 21026 }, /* osfEscape */ + { 0x1004ff74, 21036 }, /* osfExtend */ + { 0x1004ff6a, 21046 }, /* osfHelp */ + { 0x1004ff63, 21054 }, /* osfInsert */ + { 0x1004ff51, 21064 }, /* osfLeft */ + { 0x1004ff67, 21072 }, /* osfMenu */ + { 0x1004ff45, 21080 }, /* osfMenuBar */ + { 0x1004ff5e, 21091 }, /* osfNextField */ + { 0x1004ff5c, 21104 }, /* osfNextMenu */ + { 0x1004ff42, 21116 }, /* osfPageDown */ + { 0x1004ff40, 21128 }, /* osfPageLeft */ + { 0x1004ff43, 21140 }, /* osfPageRight */ + { 0x1004ff41, 21153 }, /* osfPageUp */ + { 0x1004ff04, 21163 }, /* osfPaste */ + { 0x1004ff5d, 21172 }, /* osfPrevField */ + { 0x1004ff5b, 21185 }, /* osfPrevMenu */ + { 0x1004ff32, 21197 }, /* osfPrimaryPaste */ + { 0x1004ff33, 21213 }, /* osfQuickPaste */ + { 0x1004ff73, 21227 }, /* osfReselect */ + { 0x1004ff78, 21239 }, /* osfRestore */ + { 0x1004ff53, 21250 }, /* osfRight */ + { 0x1004ff60, 21259 }, /* osfSelect */ + { 0x1004ff71, 21269 }, /* osfSelectAll */ + { 0x1004ff65, 21282 }, /* osfUndo */ + { 0x1004ff52, 21290 }, /* osfUp */ + { 0x000000d8, 21296 }, /* Oslash */ + { 0x000000f8, 21303 }, /* oslash */ + { 0x000000d5, 21310 }, /* Otilde */ + { 0x000000f5, 21317 }, /* otilde */ + { 0x00000bc0, 21324 }, /* overbar */ + { 0x0000fe78, 21332 }, /* Overlay1_Enable */ + { 0x0000fe79, 21348 }, /* Overlay2_Enable */ + { 0x0000047e, 21364 }, /* overline */ + { 0x00000050, 21373 }, /* P */ + { 0x00000070, 21375 }, /* p */ + { 0x01001e56, 21377 }, /* Pabovedot */ + { 0x01001e57, 21387 }, /* pabovedot */ + { 0x0000ff56, 21397 }, /* Page_Down */ + { 0x0000ff55, 21407 }, /* Page_Up */ + { 0x000000b6, 21415 }, /* paragraph */ + { 0x00000028, 21425 }, /* parenleft */ + { 0x00000029, 21435 }, /* parenright */ + { 0x01002202, 21446 }, /* partdifferential */ + { 0x000008ef, 21463 }, /* partialderivative */ + { 0x0000ff13, 21481 }, /* Pause */ + { 0x00000025, 21487 }, /* percent */ + { 0x0000002e, 21495 }, /* period */ + { 0x000000b7, 21502 }, /* periodcentered */ + { 0x00000ad5, 21517 }, /* permille */ + { 0x010020a7, 21526 }, /* PesetaSign */ + { 0x00000afb, 21537 }, /* phonographcopyright */ + { 0x0000002b, 21557 }, /* plus */ + { 0x000000b1, 21562 }, /* plusminus */ + { 0x0000fefa, 21572 }, /* Pointer_Accelerate */ + { 0x0000fee9, 21591 }, /* Pointer_Button1 */ + { 0x0000feea, 21607 }, /* Pointer_Button2 */ + { 0x0000feeb, 21623 }, /* Pointer_Button3 */ + { 0x0000feec, 21639 }, /* Pointer_Button4 */ + { 0x0000feed, 21655 }, /* Pointer_Button5 */ + { 0x0000fee8, 21671 }, /* Pointer_Button_Dflt */ + { 0x0000feef, 21691 }, /* Pointer_DblClick1 */ + { 0x0000fef0, 21709 }, /* Pointer_DblClick2 */ + { 0x0000fef1, 21727 }, /* Pointer_DblClick3 */ + { 0x0000fef2, 21745 }, /* Pointer_DblClick4 */ + { 0x0000fef3, 21763 }, /* Pointer_DblClick5 */ + { 0x0000feee, 21781 }, /* Pointer_DblClick_Dflt */ + { 0x0000fefb, 21803 }, /* Pointer_DfltBtnNext */ + { 0x0000fefc, 21823 }, /* Pointer_DfltBtnPrev */ + { 0x0000fee3, 21843 }, /* Pointer_Down */ + { 0x0000fee6, 21856 }, /* Pointer_DownLeft */ + { 0x0000fee7, 21873 }, /* Pointer_DownRight */ + { 0x0000fef5, 21891 }, /* Pointer_Drag1 */ + { 0x0000fef6, 21905 }, /* Pointer_Drag2 */ + { 0x0000fef7, 21919 }, /* Pointer_Drag3 */ + { 0x0000fef8, 21933 }, /* Pointer_Drag4 */ + { 0x0000fefd, 21947 }, /* Pointer_Drag5 */ + { 0x0000fef4, 21961 }, /* Pointer_Drag_Dflt */ + { 0x0000fef9, 21979 }, /* Pointer_EnableKeys */ + { 0x0000fee0, 21998 }, /* Pointer_Left */ + { 0x0000fee1, 22011 }, /* Pointer_Right */ + { 0x0000fee2, 22025 }, /* Pointer_Up */ + { 0x0000fee4, 22036 }, /* Pointer_UpLeft */ + { 0x0000fee5, 22051 }, /* Pointer_UpRight */ + { 0x00000ad4, 22067 }, /* prescription */ + { 0x0000fed1, 22080 }, /* Prev_Virtual_Screen */ + { 0x0000ff3e, 22100 }, /* PreviousCandidate */ + { 0x0000ff61, 22118 }, /* Print */ + { 0x0000ff55, 22124 }, /* Prior */ + { 0x000004b0, 22130 }, /* prolongedsound */ + { 0x00000aa6, 22145 }, /* punctspace */ + { 0x00000051, 22156 }, /* Q */ + { 0x00000071, 22158 }, /* q */ + { 0x00000bcc, 22160 }, /* quad */ + { 0x0000003f, 22165 }, /* question */ + { 0x000000bf, 22174 }, /* questiondown */ + { 0x00000022, 22187 }, /* quotedbl */ + { 0x00000060, 22196 }, /* quoteleft */ + { 0x00000027, 22206 }, /* quoteright */ + { 0x00000052, 22217 }, /* R */ + { 0x00000072, 22219 }, /* r */ + { 0x0000ffd2, 22221 }, /* R1 */ + { 0x0000ffdb, 22224 }, /* R10 */ + { 0x0000ffdc, 22228 }, /* R11 */ + { 0x0000ffdd, 22232 }, /* R12 */ + { 0x0000ffde, 22236 }, /* R13 */ + { 0x0000ffdf, 22240 }, /* R14 */ + { 0x0000ffe0, 22244 }, /* R15 */ + { 0x0000ffd3, 22248 }, /* R2 */ + { 0x0000ffd4, 22251 }, /* R3 */ + { 0x0000ffd5, 22254 }, /* R4 */ + { 0x0000ffd6, 22257 }, /* R5 */ + { 0x0000ffd7, 22260 }, /* R6 */ + { 0x0000ffd8, 22263 }, /* R7 */ + { 0x0000ffd9, 22266 }, /* R8 */ + { 0x0000ffda, 22269 }, /* R9 */ + { 0x000001c0, 22272 }, /* Racute */ + { 0x000001e0, 22279 }, /* racute */ + { 0x000008d6, 22286 }, /* radical */ + { 0x000001d8, 22294 }, /* Rcaron */ + { 0x000001f8, 22301 }, /* rcaron */ + { 0x000003a3, 22308 }, /* Rcedilla */ + { 0x000003b3, 22317 }, /* rcedilla */ + { 0x0000ff66, 22326 }, /* Redo */ + { 0x000000ae, 22331 }, /* registered */ + { 0x0000fe72, 22342 }, /* RepeatKeys_Enable */ + { 0x1000ff6c, 22360 }, /* Reset */ + { 0x0000ff0d, 22366 }, /* Return */ + { 0x0000ff53, 22373 }, /* Right */ + { 0x00000abe, 22379 }, /* rightanglebracket */ + { 0x000008fd, 22397 }, /* rightarrow */ + { 0x00000ba6, 22408 }, /* rightcaret */ + { 0x00000ad3, 22419 }, /* rightdoublequotemark */ + { 0x000008b0, 22440 }, /* rightmiddlecurlybrace */ + { 0x000008b7, 22462 }, /* rightmiddlesummation */ + { 0x00000acd, 22483 }, /* rightopentriangle */ + { 0x00000aeb, 22501 }, /* rightpointer */ + { 0x00000bd8, 22514 }, /* rightshoe */ + { 0x00000ad1, 22524 }, /* rightsinglequotemark */ + { 0x000009f5, 22545 }, /* rightt */ + { 0x00000bfc, 22552 }, /* righttack */ + { 0x0000ff24, 22562 }, /* Romaji */ + { 0x010020a8, 22569 }, /* RupeeSign */ + { 0x00000053, 22579 }, /* S */ + { 0x00000073, 22581 }, /* s */ + { 0x01001e60, 22583 }, /* Sabovedot */ + { 0x01001e61, 22593 }, /* sabovedot */ + { 0x000001a6, 22603 }, /* Sacute */ + { 0x000001b6, 22610 }, /* sacute */ + { 0x000001a9, 22617 }, /* Scaron */ + { 0x000001b9, 22624 }, /* scaron */ + { 0x000001aa, 22631 }, /* Scedilla */ + { 0x000001ba, 22640 }, /* scedilla */ + { 0x0100018f, 22649 }, /* SCHWA */ + { 0x01000259, 22655 }, /* schwa */ + { 0x000002de, 22661 }, /* Scircumflex */ + { 0x000002fe, 22673 }, /* scircumflex */ + { 0x0000ff7e, 22685 }, /* script_switch */ + { 0x0000ff14, 22699 }, /* Scroll_Lock */ + { 0x00000ad7, 22711 }, /* seconds */ + { 0x000000a7, 22719 }, /* section */ + { 0x0000ff60, 22727 }, /* Select */ + { 0x0000003b, 22734 }, /* semicolon */ + { 0x000004df, 22744 }, /* semivoicedsound */ + { 0x000006a1, 22760 }, /* Serbian_dje */ + { 0x000006b1, 22772 }, /* Serbian_DJE */ + { 0x000006af, 22784 }, /* Serbian_dze */ + { 0x000006bf, 22796 }, /* Serbian_DZE */ + { 0x000006a8, 22808 }, /* Serbian_je */ + { 0x000006b8, 22819 }, /* Serbian_JE */ + { 0x000006a9, 22830 }, /* Serbian_lje */ + { 0x000006b9, 22842 }, /* Serbian_LJE */ + { 0x000006aa, 22854 }, /* Serbian_nje */ + { 0x000006ba, 22866 }, /* Serbian_NJE */ + { 0x000006ab, 22878 }, /* Serbian_tshe */ + { 0x000006bb, 22891 }, /* Serbian_TSHE */ + { 0x00000ac6, 22904 }, /* seveneighths */ + { 0x01002087, 22917 }, /* sevensubscript */ + { 0x01002077, 22932 }, /* sevensuperior */ + { 0x0000ffe1, 22946 }, /* Shift_L */ + { 0x0000ffe6, 22954 }, /* Shift_Lock */ + { 0x0000ffe2, 22965 }, /* Shift_R */ + { 0x00000aca, 22973 }, /* signaturemark */ + { 0x00000aac, 22987 }, /* signifblank */ + { 0x000008c9, 22999 }, /* similarequal */ + { 0x0000ff3c, 23012 }, /* SingleCandidate */ + { 0x00000afd, 23028 }, /* singlelowquotemark */ + { 0x01000d85, 23047 }, /* Sinh_a */ + { 0x01000d86, 23054 }, /* Sinh_aa */ + { 0x01000dcf, 23062 }, /* Sinh_aa2 */ + { 0x01000d87, 23071 }, /* Sinh_ae */ + { 0x01000dd0, 23079 }, /* Sinh_ae2 */ + { 0x01000d88, 23088 }, /* Sinh_aee */ + { 0x01000dd1, 23097 }, /* Sinh_aee2 */ + { 0x01000d93, 23107 }, /* Sinh_ai */ + { 0x01000ddb, 23115 }, /* Sinh_ai2 */ + { 0x01000dca, 23124 }, /* Sinh_al */ + { 0x01000d96, 23132 }, /* Sinh_au */ + { 0x01000dde, 23140 }, /* Sinh_au2 */ + { 0x01000db6, 23149 }, /* Sinh_ba */ + { 0x01000db7, 23157 }, /* Sinh_bha */ + { 0x01000da0, 23166 }, /* Sinh_ca */ + { 0x01000da1, 23174 }, /* Sinh_cha */ + { 0x01000da9, 23183 }, /* Sinh_dda */ + { 0x01000daa, 23192 }, /* Sinh_ddha */ + { 0x01000daf, 23202 }, /* Sinh_dha */ + { 0x01000db0, 23211 }, /* Sinh_dhha */ + { 0x01000d91, 23221 }, /* Sinh_e */ + { 0x01000dd9, 23228 }, /* Sinh_e2 */ + { 0x01000d92, 23236 }, /* Sinh_ee */ + { 0x01000dda, 23244 }, /* Sinh_ee2 */ + { 0x01000dc6, 23253 }, /* Sinh_fa */ + { 0x01000d9c, 23261 }, /* Sinh_ga */ + { 0x01000d9d, 23269 }, /* Sinh_gha */ + { 0x01000d83, 23278 }, /* Sinh_h2 */ + { 0x01000dc4, 23286 }, /* Sinh_ha */ + { 0x01000d89, 23294 }, /* Sinh_i */ + { 0x01000dd2, 23301 }, /* Sinh_i2 */ + { 0x01000d8a, 23309 }, /* Sinh_ii */ + { 0x01000dd3, 23317 }, /* Sinh_ii2 */ + { 0x01000da2, 23326 }, /* Sinh_ja */ + { 0x01000da3, 23334 }, /* Sinh_jha */ + { 0x01000da5, 23343 }, /* Sinh_jnya */ + { 0x01000d9a, 23353 }, /* Sinh_ka */ + { 0x01000d9b, 23361 }, /* Sinh_kha */ + { 0x01000df4, 23370 }, /* Sinh_kunddaliya */ + { 0x01000dbd, 23386 }, /* Sinh_la */ + { 0x01000dc5, 23394 }, /* Sinh_lla */ + { 0x01000d8f, 23403 }, /* Sinh_lu */ + { 0x01000ddf, 23411 }, /* Sinh_lu2 */ + { 0x01000d90, 23420 }, /* Sinh_luu */ + { 0x01000df3, 23429 }, /* Sinh_luu2 */ + { 0x01000db8, 23439 }, /* Sinh_ma */ + { 0x01000db9, 23447 }, /* Sinh_mba */ + { 0x01000db1, 23456 }, /* Sinh_na */ + { 0x01000dac, 23464 }, /* Sinh_ndda */ + { 0x01000db3, 23474 }, /* Sinh_ndha */ + { 0x01000d82, 23484 }, /* Sinh_ng */ + { 0x01000d9e, 23492 }, /* Sinh_ng2 */ + { 0x01000d9f, 23501 }, /* Sinh_nga */ + { 0x01000da6, 23510 }, /* Sinh_nja */ + { 0x01000dab, 23519 }, /* Sinh_nna */ + { 0x01000da4, 23528 }, /* Sinh_nya */ + { 0x01000d94, 23537 }, /* Sinh_o */ + { 0x01000ddc, 23544 }, /* Sinh_o2 */ + { 0x01000d95, 23552 }, /* Sinh_oo */ + { 0x01000ddd, 23560 }, /* Sinh_oo2 */ + { 0x01000db4, 23569 }, /* Sinh_pa */ + { 0x01000db5, 23577 }, /* Sinh_pha */ + { 0x01000dbb, 23586 }, /* Sinh_ra */ + { 0x01000d8d, 23594 }, /* Sinh_ri */ + { 0x01000d8e, 23602 }, /* Sinh_rii */ + { 0x01000dd8, 23611 }, /* Sinh_ru2 */ + { 0x01000df2, 23620 }, /* Sinh_ruu2 */ + { 0x01000dc3, 23630 }, /* Sinh_sa */ + { 0x01000dc1, 23638 }, /* Sinh_sha */ + { 0x01000dc2, 23647 }, /* Sinh_ssha */ + { 0x01000dad, 23657 }, /* Sinh_tha */ + { 0x01000dae, 23666 }, /* Sinh_thha */ + { 0x01000da7, 23676 }, /* Sinh_tta */ + { 0x01000da8, 23685 }, /* Sinh_ttha */ + { 0x01000d8b, 23695 }, /* Sinh_u */ + { 0x01000dd4, 23702 }, /* Sinh_u2 */ + { 0x01000d8c, 23710 }, /* Sinh_uu */ + { 0x01000dd6, 23718 }, /* Sinh_uu2 */ + { 0x01000dc0, 23727 }, /* Sinh_va */ + { 0x01000dba, 23735 }, /* Sinh_ya */ + { 0x01002086, 23743 }, /* sixsubscript */ + { 0x01002076, 23756 }, /* sixsuperior */ + { 0x0000002f, 23768 }, /* slash */ + { 0x0000fe73, 23774 }, /* SlowKeys_Enable */ + { 0x000009e0, 23790 }, /* soliddiamond */ + { 0x00000020, 23803 }, /* space */ + { 0x0100221a, 23809 }, /* squareroot */ + { 0x000000df, 23820 }, /* ssharp */ + { 0x000000a3, 23827 }, /* sterling */ + { 0x0000fe75, 23836 }, /* StickyKeys_Enable */ + { 0x01002263, 23854 }, /* stricteq */ + { 0x0000ff66, 23863 }, /* SunAgain */ + { 0x0000ff7e, 23872 }, /* SunAltGraph */ + { 0x1005ff77, 23884 }, /* SunAudioLowerVolume */ + { 0x1005ff78, 23904 }, /* SunAudioMute */ + { 0x1005ff79, 23917 }, /* SunAudioRaiseVolume */ + { 0x0000ff20, 23937 }, /* SunCompose */ + { 0x1005ff72, 23948 }, /* SunCopy */ + { 0x1005ff75, 23956 }, /* SunCut */ + { 0x1005ff10, 23963 }, /* SunF36 */ + { 0x1005ff11, 23970 }, /* SunF37 */ + { 0x1005ff03, 23977 }, /* SunFA_Acute */ + { 0x1005ff05, 23989 }, /* SunFA_Cedilla */ + { 0x1005ff01, 24003 }, /* SunFA_Circum */ + { 0x1005ff04, 24016 }, /* SunFA_Diaeresis */ + { 0x1005ff00, 24032 }, /* SunFA_Grave */ + { 0x1005ff02, 24044 }, /* SunFA_Tilde */ + { 0x0000ff68, 24056 }, /* SunFind */ + { 0x1005ff71, 24064 }, /* SunFront */ + { 0x1005ff73, 24073 }, /* SunOpen */ + { 0x0000ff56, 24081 }, /* SunPageDown */ + { 0x0000ff55, 24093 }, /* SunPageUp */ + { 0x1005ff74, 24103 }, /* SunPaste */ + { 0x1005ff76, 24112 }, /* SunPowerSwitch */ + { 0x1005ff7d, 24127 }, /* SunPowerSwitchShift */ + { 0x0000ff61, 24147 }, /* SunPrint_Screen */ + { 0x1005ff70, 24163 }, /* SunProps */ + { 0x0000ff69, 24172 }, /* SunStop */ + { 0x1005ff60, 24180 }, /* SunSys_Req */ + { 0x0000ff65, 24191 }, /* SunUndo */ + { 0x1005ff7a, 24199 }, /* SunVideoDegauss */ + { 0x1005ff7b, 24215 }, /* SunVideoLowerBrightness */ + { 0x1005ff7c, 24239 }, /* SunVideoRaiseBrightness */ + { 0x0000ffeb, 24263 }, /* Super_L */ + { 0x0000ffec, 24271 }, /* Super_R */ + { 0x0000ff15, 24279 }, /* Sys_Req */ + { 0x1000ff6d, 24287 }, /* System */ + { 0x00000054, 24294 }, /* T */ + { 0x00000074, 24296 }, /* t */ + { 0x0000ff09, 24298 }, /* Tab */ + { 0x01001e6a, 24302 }, /* Tabovedot */ + { 0x01001e6b, 24312 }, /* tabovedot */ + { 0x000001ab, 24322 }, /* Tcaron */ + { 0x000001bb, 24329 }, /* tcaron */ + { 0x000001de, 24336 }, /* Tcedilla */ + { 0x000001fe, 24345 }, /* tcedilla */ + { 0x00000af9, 24354 }, /* telephone */ + { 0x00000afa, 24364 }, /* telephonerecorder */ + { 0x0000fed5, 24382 }, /* Terminate_Server */ + { 0x00000ddf, 24399 }, /* Thai_baht */ + { 0x00000dba, 24409 }, /* Thai_bobaimai */ + { 0x00000da8, 24423 }, /* Thai_chochan */ + { 0x00000daa, 24436 }, /* Thai_chochang */ + { 0x00000da9, 24450 }, /* Thai_choching */ + { 0x00000dac, 24464 }, /* Thai_chochoe */ + { 0x00000dae, 24477 }, /* Thai_dochada */ + { 0x00000db4, 24490 }, /* Thai_dodek */ + { 0x00000dbd, 24501 }, /* Thai_fofa */ + { 0x00000dbf, 24511 }, /* Thai_fofan */ + { 0x00000dcb, 24522 }, /* Thai_hohip */ + { 0x00000dce, 24533 }, /* Thai_honokhuk */ + { 0x00000da2, 24547 }, /* Thai_khokhai */ + { 0x00000da5, 24560 }, /* Thai_khokhon */ + { 0x00000da3, 24573 }, /* Thai_khokhuat */ + { 0x00000da4, 24587 }, /* Thai_khokhwai */ + { 0x00000da6, 24601 }, /* Thai_khorakhang */ + { 0x00000da1, 24617 }, /* Thai_kokai */ + { 0x00000de5, 24628 }, /* Thai_lakkhangyao */ + { 0x00000df7, 24645 }, /* Thai_lekchet */ + { 0x00000df5, 24658 }, /* Thai_lekha */ + { 0x00000df6, 24669 }, /* Thai_lekhok */ + { 0x00000df9, 24681 }, /* Thai_lekkao */ + { 0x00000df1, 24693 }, /* Thai_leknung */ + { 0x00000df8, 24706 }, /* Thai_lekpaet */ + { 0x00000df3, 24719 }, /* Thai_leksam */ + { 0x00000df4, 24731 }, /* Thai_leksi */ + { 0x00000df2, 24742 }, /* Thai_leksong */ + { 0x00000df0, 24755 }, /* Thai_leksun */ + { 0x00000dcc, 24767 }, /* Thai_lochula */ + { 0x00000dc5, 24780 }, /* Thai_loling */ + { 0x00000dc6, 24792 }, /* Thai_lu */ + { 0x00000deb, 24800 }, /* Thai_maichattawa */ + { 0x00000de8, 24817 }, /* Thai_maiek */ + { 0x00000dd1, 24828 }, /* Thai_maihanakat */ + { 0x00000dde, 24844 }, /* Thai_maihanakat_maitho */ + { 0x00000de7, 24867 }, /* Thai_maitaikhu */ + { 0x00000de9, 24882 }, /* Thai_maitho */ + { 0x00000dea, 24894 }, /* Thai_maitri */ + { 0x00000de6, 24906 }, /* Thai_maiyamok */ + { 0x00000dc1, 24920 }, /* Thai_moma */ + { 0x00000da7, 24930 }, /* Thai_ngongu */ + { 0x00000ded, 24942 }, /* Thai_nikhahit */ + { 0x00000db3, 24956 }, /* Thai_nonen */ + { 0x00000db9, 24967 }, /* Thai_nonu */ + { 0x00000dcd, 24977 }, /* Thai_oang */ + { 0x00000dcf, 24987 }, /* Thai_paiyannoi */ + { 0x00000dda, 25002 }, /* Thai_phinthu */ + { 0x00000dbe, 25015 }, /* Thai_phophan */ + { 0x00000dbc, 25028 }, /* Thai_phophung */ + { 0x00000dc0, 25042 }, /* Thai_phosamphao */ + { 0x00000dbb, 25058 }, /* Thai_popla */ + { 0x00000dc3, 25069 }, /* Thai_rorua */ + { 0x00000dc4, 25080 }, /* Thai_ru */ + { 0x00000dd0, 25088 }, /* Thai_saraa */ + { 0x00000dd2, 25099 }, /* Thai_saraaa */ + { 0x00000de1, 25111 }, /* Thai_saraae */ + { 0x00000de4, 25123 }, /* Thai_saraaimaimalai */ + { 0x00000de3, 25143 }, /* Thai_saraaimaimuan */ + { 0x00000dd3, 25162 }, /* Thai_saraam */ + { 0x00000de0, 25174 }, /* Thai_sarae */ + { 0x00000dd4, 25185 }, /* Thai_sarai */ + { 0x00000dd5, 25196 }, /* Thai_saraii */ + { 0x00000de2, 25208 }, /* Thai_sarao */ + { 0x00000dd8, 25219 }, /* Thai_sarau */ + { 0x00000dd6, 25230 }, /* Thai_saraue */ + { 0x00000dd7, 25242 }, /* Thai_sarauee */ + { 0x00000dd9, 25255 }, /* Thai_sarauu */ + { 0x00000dc9, 25267 }, /* Thai_sorusi */ + { 0x00000dc8, 25279 }, /* Thai_sosala */ + { 0x00000dab, 25291 }, /* Thai_soso */ + { 0x00000dca, 25301 }, /* Thai_sosua */ + { 0x00000dec, 25312 }, /* Thai_thanthakhat */ + { 0x00000db1, 25329 }, /* Thai_thonangmontho */ + { 0x00000db2, 25348 }, /* Thai_thophuthao */ + { 0x00000db7, 25364 }, /* Thai_thothahan */ + { 0x00000db0, 25379 }, /* Thai_thothan */ + { 0x00000db8, 25392 }, /* Thai_thothong */ + { 0x00000db6, 25406 }, /* Thai_thothung */ + { 0x00000daf, 25420 }, /* Thai_topatak */ + { 0x00000db5, 25433 }, /* Thai_totao */ + { 0x00000dc7, 25444 }, /* Thai_wowaen */ + { 0x00000dc2, 25456 }, /* Thai_yoyak */ + { 0x00000dad, 25467 }, /* Thai_yoying */ + { 0x000008c0, 25479 }, /* therefore */ + { 0x00000aa7, 25489 }, /* thinspace */ + { 0x000000de, 25499 }, /* THORN */ + { 0x000000de, 25505 }, /* Thorn */ + { 0x000000fe, 25511 }, /* thorn */ + { 0x00000ac4, 25517 }, /* threeeighths */ + { 0x00000ab4, 25530 }, /* threefifths */ + { 0x000000be, 25542 }, /* threequarters */ + { 0x01002083, 25556 }, /* threesubscript */ + { 0x000000b3, 25571 }, /* threesuperior */ + { 0x0100222d, 25585 }, /* tintegral */ + { 0x000008a4, 25595 }, /* topintegral */ + { 0x000008ab, 25607 }, /* topleftparens */ + { 0x000008a2, 25621 }, /* topleftradical */ + { 0x000008a7, 25636 }, /* topleftsqbracket */ + { 0x000008b1, 25653 }, /* topleftsummation */ + { 0x000008ad, 25670 }, /* toprightparens */ + { 0x000008a9, 25685 }, /* toprightsqbracket */ + { 0x000008b5, 25703 }, /* toprightsummation */ + { 0x000009f7, 25721 }, /* topt */ + { 0x000008b3, 25726 }, /* topvertsummationconnector */ + { 0x0000ff2b, 25752 }, /* Touroku */ + { 0x00000ac9, 25760 }, /* trademark */ + { 0x00000acb, 25770 }, /* trademarkincircle */ + { 0x000003ac, 25788 }, /* Tslash */ + { 0x000003bc, 25795 }, /* tslash */ + { 0x00000ab3, 25802 }, /* twofifths */ + { 0x01002082, 25812 }, /* twosubscript */ + { 0x000000b2, 25825 }, /* twosuperior */ + { 0x00000ab1, 25837 }, /* twothirds */ + { 0x00000055, 25847 }, /* U */ + { 0x00000075, 25849 }, /* u */ + { 0x000000da, 25851 }, /* Uacute */ + { 0x000000fa, 25858 }, /* uacute */ + { 0x01001ee4, 25865 }, /* Ubelowdot */ + { 0x01001ee5, 25875 }, /* ubelowdot */ + { 0x000002dd, 25885 }, /* Ubreve */ + { 0x000002fd, 25892 }, /* ubreve */ + { 0x000000db, 25899 }, /* Ucircumflex */ + { 0x000000fb, 25911 }, /* ucircumflex */ + { 0x000000dc, 25923 }, /* Udiaeresis */ + { 0x000000fc, 25934 }, /* udiaeresis */ + { 0x000001db, 25945 }, /* Udoubleacute */ + { 0x000001fb, 25958 }, /* udoubleacute */ + { 0x000000d9, 25971 }, /* Ugrave */ + { 0x000000f9, 25978 }, /* ugrave */ + { 0x01001ee6, 25985 }, /* Uhook */ + { 0x01001ee7, 25991 }, /* uhook */ + { 0x010001af, 25997 }, /* Uhorn */ + { 0x010001b0, 26003 }, /* uhorn */ + { 0x01001ee8, 26009 }, /* Uhornacute */ + { 0x01001ee9, 26020 }, /* uhornacute */ + { 0x01001ef0, 26031 }, /* Uhornbelowdot */ + { 0x01001ef1, 26045 }, /* uhornbelowdot */ + { 0x01001eea, 26059 }, /* Uhorngrave */ + { 0x01001eeb, 26070 }, /* uhorngrave */ + { 0x01001eec, 26081 }, /* Uhornhook */ + { 0x01001eed, 26091 }, /* uhornhook */ + { 0x01001eee, 26101 }, /* Uhorntilde */ + { 0x01001eef, 26112 }, /* uhorntilde */ + { 0x000006ad, 26123 }, /* Ukrainian_ghe_with_upturn */ + { 0x000006bd, 26149 }, /* Ukrainian_GHE_WITH_UPTURN */ + { 0x000006a6, 26175 }, /* Ukrainian_i */ + { 0x000006b6, 26187 }, /* Ukrainian_I */ + { 0x000006a4, 26199 }, /* Ukrainian_ie */ + { 0x000006b4, 26212 }, /* Ukrainian_IE */ + { 0x000006a7, 26225 }, /* Ukrainian_yi */ + { 0x000006b7, 26238 }, /* Ukrainian_YI */ + { 0x000006a6, 26251 }, /* Ukranian_i */ + { 0x000006b6, 26262 }, /* Ukranian_I */ + { 0x000006a4, 26273 }, /* Ukranian_je */ + { 0x000006b4, 26285 }, /* Ukranian_JE */ + { 0x000006a7, 26297 }, /* Ukranian_yi */ + { 0x000006b7, 26309 }, /* Ukranian_YI */ + { 0x000003de, 26321 }, /* Umacron */ + { 0x000003fe, 26329 }, /* umacron */ + { 0x00000bc6, 26337 }, /* underbar */ + { 0x0000005f, 26346 }, /* underscore */ + { 0x0000ff65, 26357 }, /* Undo */ + { 0x000008dd, 26362 }, /* union */ + { 0x000003d9, 26368 }, /* Uogonek */ + { 0x000003f9, 26376 }, /* uogonek */ + { 0x0000ff52, 26384 }, /* Up */ + { 0x000008fc, 26387 }, /* uparrow */ + { 0x00000ba9, 26395 }, /* upcaret */ + { 0x000009ec, 26403 }, /* upleftcorner */ + { 0x000009eb, 26416 }, /* uprightcorner */ + { 0x00000bc3, 26430 }, /* upshoe */ + { 0x00000bd3, 26437 }, /* upstile */ + { 0x00000bce, 26445 }, /* uptack */ + { 0x000001d9, 26452 }, /* Uring */ + { 0x000001f9, 26458 }, /* uring */ + { 0x1000ff6e, 26464 }, /* User */ + { 0x000003dd, 26469 }, /* Utilde */ + { 0x000003fd, 26476 }, /* utilde */ + { 0x00000056, 26483 }, /* V */ + { 0x00000076, 26485 }, /* v */ + { 0x000008c1, 26487 }, /* variation */ + { 0x000009f8, 26497 }, /* vertbar */ + { 0x000008a6, 26505 }, /* vertconnector */ + { 0x000004de, 26519 }, /* voicedsound */ + { 0x00ffffff, 26531 }, /* VoidSymbol */ + { 0x000009e9, 26542 }, /* vt */ + { 0x00000057, 26545 }, /* W */ + { 0x00000077, 26547 }, /* w */ + { 0x01001e82, 26549 }, /* Wacute */ + { 0x01001e83, 26556 }, /* wacute */ + { 0x01000174, 26563 }, /* Wcircumflex */ + { 0x01000175, 26575 }, /* wcircumflex */ + { 0x01001e84, 26587 }, /* Wdiaeresis */ + { 0x01001e85, 26598 }, /* wdiaeresis */ + { 0x01001e80, 26609 }, /* Wgrave */ + { 0x01001e81, 26616 }, /* wgrave */ + { 0x010020a9, 26623 }, /* WonSign */ + { 0x00000058, 26631 }, /* X */ + { 0x00000078, 26633 }, /* x */ + { 0x01001e8a, 26635 }, /* Xabovedot */ + { 0x01001e8b, 26645 }, /* xabovedot */ + { 0x1008ff39, 26655 }, /* XF86AddFavorite */ + { 0x1008ff50, 26671 }, /* XF86ApplicationLeft */ + { 0x1008ff51, 26691 }, /* XF86ApplicationRight */ + { 0x1008ff9b, 26712 }, /* XF86AudioCycleTrack */ + { 0x1008ff97, 26732 }, /* XF86AudioForward */ + { 0x1008ff11, 26749 }, /* XF86AudioLowerVolume */ + { 0x1008ff32, 26770 }, /* XF86AudioMedia */ + { 0x1008ffb2, 26785 }, /* XF86AudioMicMute */ + { 0x1008ff12, 26802 }, /* XF86AudioMute */ + { 0x1008ff17, 26816 }, /* XF86AudioNext */ + { 0x1008ff31, 26830 }, /* XF86AudioPause */ + { 0x1008ff14, 26845 }, /* XF86AudioPlay */ + { 0x1008ff16, 26859 }, /* XF86AudioPrev */ + { 0x1008ff13, 26873 }, /* XF86AudioRaiseVolume */ + { 0x1008ff99, 26894 }, /* XF86AudioRandomPlay */ + { 0x1008ff1c, 26914 }, /* XF86AudioRecord */ + { 0x1008ff98, 26930 }, /* XF86AudioRepeat */ + { 0x1008ff3e, 26946 }, /* XF86AudioRewind */ + { 0x1008ff15, 26962 }, /* XF86AudioStop */ + { 0x1008ff8d, 26976 }, /* XF86Away */ + { 0x1008ff26, 26985 }, /* XF86Back */ + { 0x1008ff3f, 26994 }, /* XF86BackForward */ + { 0x1008ff93, 27010 }, /* XF86Battery */ + { 0x1008ffa6, 27022 }, /* XF86Blue */ + { 0x1008ff94, 27031 }, /* XF86Bluetooth */ + { 0x1008ff52, 27045 }, /* XF86Book */ + { 0x1008ff3b, 27054 }, /* XF86BrightnessAdjust */ + { 0x1008ff54, 27075 }, /* XF86Calculater */ + { 0x1008ff1d, 27090 }, /* XF86Calculator */ + { 0x1008ff20, 27105 }, /* XF86Calendar */ + { 0x1008ff53, 27118 }, /* XF86CD */ + { 0x1008ff55, 27125 }, /* XF86Clear */ + { 0x1008fe21, 27135 }, /* XF86ClearGrab */ + { 0x1008ff56, 27149 }, /* XF86Close */ + { 0x1008ff3d, 27159 }, /* XF86Community */ + { 0x1008ff22, 27173 }, /* XF86ContrastAdjust */ + { 0x1008ff57, 27192 }, /* XF86Copy */ + { 0x1008ff58, 27201 }, /* XF86Cut */ + { 0x1008ff9c, 27209 }, /* XF86CycleAngle */ + { 0x1008ff59, 27224 }, /* XF86Display */ + { 0x1008ff5b, 27236 }, /* XF86Documents */ + { 0x1008ff5a, 27250 }, /* XF86DOS */ + { 0x1008ff2c, 27258 }, /* XF86Eject */ + { 0x1008ff5c, 27268 }, /* XF86Excel */ + { 0x1008ff5d, 27278 }, /* XF86Explorer */ + { 0x1008ff30, 27291 }, /* XF86Favorites */ + { 0x1008ff3c, 27305 }, /* XF86Finance */ + { 0x1008ff27, 27317 }, /* XF86Forward */ + { 0x1008ff9d, 27329 }, /* XF86FrameBack */ + { 0x1008ff9e, 27343 }, /* XF86FrameForward */ + { 0x1008ff5e, 27360 }, /* XF86Game */ + { 0x1008ff5f, 27369 }, /* XF86Go */ + { 0x1008ffa4, 27376 }, /* XF86Green */ + { 0x1008ffa8, 27386 }, /* XF86Hibernate */ + { 0x1008ff37, 27400 }, /* XF86History */ + { 0x1008ff18, 27412 }, /* XF86HomePage */ + { 0x1008ff3a, 27425 }, /* XF86HotLinks */ + { 0x1008ff60, 27438 }, /* XF86iTouch */ + { 0x1008ff06, 27449 }, /* XF86KbdBrightnessDown */ + { 0x1008ff05, 27471 }, /* XF86KbdBrightnessUp */ + { 0x1008ff04, 27491 }, /* XF86KbdLightOnOff */ + { 0x1008ff40, 27509 }, /* XF86Launch0 */ + { 0x1008ff41, 27521 }, /* XF86Launch1 */ + { 0x1008ff42, 27533 }, /* XF86Launch2 */ + { 0x1008ff43, 27545 }, /* XF86Launch3 */ + { 0x1008ff44, 27557 }, /* XF86Launch4 */ + { 0x1008ff45, 27569 }, /* XF86Launch5 */ + { 0x1008ff46, 27581 }, /* XF86Launch6 */ + { 0x1008ff47, 27593 }, /* XF86Launch7 */ + { 0x1008ff48, 27605 }, /* XF86Launch8 */ + { 0x1008ff49, 27617 }, /* XF86Launch9 */ + { 0x1008ff4a, 27629 }, /* XF86LaunchA */ + { 0x1008ff4b, 27641 }, /* XF86LaunchB */ + { 0x1008ff4c, 27653 }, /* XF86LaunchC */ + { 0x1008ff4d, 27665 }, /* XF86LaunchD */ + { 0x1008ff4e, 27677 }, /* XF86LaunchE */ + { 0x1008ff4f, 27689 }, /* XF86LaunchF */ + { 0x1008ff35, 27701 }, /* XF86LightBulb */ + { 0x1008fe25, 27715 }, /* XF86LogGrabInfo */ + { 0x1008ff61, 27731 }, /* XF86LogOff */ + { 0x1008fe24, 27742 }, /* XF86LogWindowTree */ + { 0x1008ff19, 27760 }, /* XF86Mail */ + { 0x1008ff90, 27769 }, /* XF86MailForward */ + { 0x1008ff62, 27785 }, /* XF86Market */ + { 0x1008ff63, 27796 }, /* XF86Meeting */ + { 0x1008ff1e, 27808 }, /* XF86Memo */ + { 0x1008ff65, 27817 }, /* XF86MenuKB */ + { 0x1008ff66, 27828 }, /* XF86MenuPB */ + { 0x1008ff8e, 27839 }, /* XF86Messenger */ + { 0x1008ff01, 27853 }, /* XF86ModeLock */ + { 0x1008ff03, 27866 }, /* XF86MonBrightnessDown */ + { 0x1008ff02, 27888 }, /* XF86MonBrightnessUp */ + { 0x1008ff92, 27908 }, /* XF86Music */ + { 0x1008ff33, 27918 }, /* XF86MyComputer */ + { 0x1008ff67, 27933 }, /* XF86MySites */ + { 0x1008ff68, 27945 }, /* XF86New */ + { 0x1008ff69, 27953 }, /* XF86News */ + { 0x1008fe22, 27962 }, /* XF86Next_VMode */ + { 0x1008ff6a, 27977 }, /* XF86OfficeHome */ + { 0x1008ff6b, 27992 }, /* XF86Open */ + { 0x1008ff38, 28001 }, /* XF86OpenURL */ + { 0x1008ff6c, 28013 }, /* XF86Option */ + { 0x1008ff6d, 28024 }, /* XF86Paste */ + { 0x1008ff6e, 28034 }, /* XF86Phone */ + { 0x1008ff91, 28044 }, /* XF86Pictures */ + { 0x1008ff21, 28057 }, /* XF86PowerDown */ + { 0x1008ff2a, 28071 }, /* XF86PowerOff */ + { 0x1008fe23, 28084 }, /* XF86Prev_VMode */ + { 0x1008ff70, 28099 }, /* XF86Q */ + { 0x1008ffa3, 28105 }, /* XF86Red */ + { 0x1008ff29, 28113 }, /* XF86Refresh */ + { 0x1008ff73, 28125 }, /* XF86Reload */ + { 0x1008ff72, 28136 }, /* XF86Reply */ + { 0x1008ff24, 28146 }, /* XF86RockerDown */ + { 0x1008ff25, 28161 }, /* XF86RockerEnter */ + { 0x1008ff23, 28177 }, /* XF86RockerUp */ + { 0x1008ff74, 28190 }, /* XF86RotateWindows */ + { 0x1008ff76, 28208 }, /* XF86RotationKB */ + { 0x1008ff75, 28223 }, /* XF86RotationPB */ + { 0x1008ff77, 28238 }, /* XF86Save */ + { 0x1008ff2d, 28247 }, /* XF86ScreenSaver */ + { 0x1008ff7a, 28263 }, /* XF86ScrollClick */ + { 0x1008ff79, 28279 }, /* XF86ScrollDown */ + { 0x1008ff78, 28294 }, /* XF86ScrollUp */ + { 0x1008ff1b, 28307 }, /* XF86Search */ + { 0x1008ffa0, 28318 }, /* XF86Select */ + { 0x1008ff7b, 28329 }, /* XF86Send */ + { 0x1008ff36, 28338 }, /* XF86Shop */ + { 0x1008ff2f, 28347 }, /* XF86Sleep */ + { 0x1008ff7c, 28357 }, /* XF86Spell */ + { 0x1008ff7d, 28367 }, /* XF86SplitScreen */ + { 0x1008ff10, 28383 }, /* XF86Standby */ + { 0x1008ff1a, 28395 }, /* XF86Start */ + { 0x1008ff28, 28405 }, /* XF86Stop */ + { 0x1008ff9a, 28414 }, /* XF86Subtitle */ + { 0x1008ff7e, 28427 }, /* XF86Support */ + { 0x1008ffa7, 28439 }, /* XF86Suspend */ + { 0x1008fe01, 28451 }, /* XF86Switch_VT_1 */ + { 0x1008fe0a, 28467 }, /* XF86Switch_VT_10 */ + { 0x1008fe0b, 28484 }, /* XF86Switch_VT_11 */ + { 0x1008fe0c, 28501 }, /* XF86Switch_VT_12 */ + { 0x1008fe02, 28518 }, /* XF86Switch_VT_2 */ + { 0x1008fe03, 28534 }, /* XF86Switch_VT_3 */ + { 0x1008fe04, 28550 }, /* XF86Switch_VT_4 */ + { 0x1008fe05, 28566 }, /* XF86Switch_VT_5 */ + { 0x1008fe06, 28582 }, /* XF86Switch_VT_6 */ + { 0x1008fe07, 28598 }, /* XF86Switch_VT_7 */ + { 0x1008fe08, 28614 }, /* XF86Switch_VT_8 */ + { 0x1008fe09, 28630 }, /* XF86Switch_VT_9 */ + { 0x1008ff7f, 28646 }, /* XF86TaskPane */ + { 0x1008ff80, 28659 }, /* XF86Terminal */ + { 0x1008ff9f, 28672 }, /* XF86Time */ + { 0x1008ff1f, 28681 }, /* XF86ToDoList */ + { 0x1008ff81, 28694 }, /* XF86Tools */ + { 0x1008ffa2, 28704 }, /* XF86TopMenu */ + { 0x1008ffb1, 28716 }, /* XF86TouchpadOff */ + { 0x1008ffb0, 28732 }, /* XF86TouchpadOn */ + { 0x1008ffa9, 28747 }, /* XF86TouchpadToggle */ + { 0x1008ff82, 28766 }, /* XF86Travel */ + { 0x1008fe20, 28777 }, /* XF86Ungrab */ + { 0x1008ff85, 28788 }, /* XF86User1KB */ + { 0x1008ff86, 28800 }, /* XF86User2KB */ + { 0x1008ff84, 28812 }, /* XF86UserPB */ + { 0x1008ff96, 28823 }, /* XF86UWB */ + { 0x1008ff34, 28831 }, /* XF86VendorHome */ + { 0x1008ff87, 28846 }, /* XF86Video */ + { 0x1008ffa1, 28856 }, /* XF86View */ + { 0x1008ff2b, 28865 }, /* XF86WakeUp */ + { 0x1008ff8f, 28876 }, /* XF86WebCam */ + { 0x1008ff88, 28887 }, /* XF86WheelButton */ + { 0x1008ff95, 28903 }, /* XF86WLAN */ + { 0x1008ff89, 28912 }, /* XF86Word */ + { 0x1008ff2e, 28921 }, /* XF86WWW */ + { 0x1008ff8a, 28929 }, /* XF86Xfer */ + { 0x1008ffa5, 28938 }, /* XF86Yellow */ + { 0x1008ff8b, 28949 }, /* XF86ZoomIn */ + { 0x1008ff8c, 28960 }, /* XF86ZoomOut */ + { 0x00000059, 28972 }, /* Y */ + { 0x00000079, 28974 }, /* y */ + { 0x000000dd, 28976 }, /* Yacute */ + { 0x000000fd, 28983 }, /* yacute */ + { 0x01001ef4, 28990 }, /* Ybelowdot */ + { 0x01001ef5, 29000 }, /* ybelowdot */ + { 0x01000176, 29010 }, /* Ycircumflex */ + { 0x01000177, 29022 }, /* ycircumflex */ + { 0x000000ff, 29034 }, /* ydiaeresis */ + { 0x000013be, 29045 }, /* Ydiaeresis */ + { 0x000000a5, 29056 }, /* yen */ + { 0x01001ef2, 29060 }, /* Ygrave */ + { 0x01001ef3, 29067 }, /* ygrave */ + { 0x01001ef6, 29074 }, /* Yhook */ + { 0x01001ef7, 29080 }, /* yhook */ + { 0x01001ef8, 29086 }, /* Ytilde */ + { 0x01001ef9, 29093 }, /* ytilde */ + { 0x0000005a, 29100 }, /* Z */ + { 0x0000007a, 29102 }, /* z */ + { 0x000001af, 29104 }, /* Zabovedot */ + { 0x000001bf, 29114 }, /* zabovedot */ + { 0x000001ac, 29124 }, /* Zacute */ + { 0x000001bc, 29131 }, /* zacute */ + { 0x000001ae, 29138 }, /* Zcaron */ + { 0x000001be, 29145 }, /* zcaron */ + { 0x0000ff3d, 29152 }, /* Zen_Koho */ + { 0x0000ff28, 29161 }, /* Zenkaku */ + { 0x0000ff2a, 29169 }, /* Zenkaku_Hankaku */ + { 0x01002080, 29185 }, /* zerosubscript */ + { 0x01002070, 29199 }, /* zerosuperior */ + { 0x010001b5, 29212 }, /* Zstroke */ + { 0x010001b6, 29220 }, /* zstroke */ +}; + +static const struct name_keysym keysym_to_name[] = { + { 0x00000000, 20091 }, /* NoSymbol */ + { 0x00000020, 23803 }, /* space */ + { 0x00000021, 12099 }, /* exclam */ + { 0x00000022, 22187 }, /* quotedbl */ + { 0x00000023, 20178 }, /* numbersign */ + { 0x00000024, 11251 }, /* dollar */ + { 0x00000025, 21487 }, /* percent */ + { 0x00000026, 908 }, /* ampersand */ + { 0x00000027, 934 }, /* apostrophe */ + { 0x00000028, 21425 }, /* parenleft */ + { 0x00000029, 21435 }, /* parenright */ + { 0x0000002a, 3283 }, /* asterisk */ + { 0x0000002b, 21557 }, /* plus */ + { 0x0000002c, 8680 }, /* comma */ + { 0x0000002d, 19733 }, /* minus */ + { 0x0000002e, 21495 }, /* period */ + { 0x0000002f, 23768 }, /* slash */ + { 0x00000030, 0 }, /* 0 */ + { 0x00000031, 2 }, /* 1 */ + { 0x00000032, 4 }, /* 2 */ + { 0x00000033, 6 }, /* 3 */ + { 0x00000034, 386 }, /* 4 */ + { 0x00000035, 388 }, /* 5 */ + { 0x00000036, 390 }, /* 6 */ + { 0x00000037, 392 }, /* 7 */ + { 0x00000038, 394 }, /* 8 */ + { 0x00000039, 396 }, /* 9 */ + { 0x0000003a, 8664 }, /* colon */ + { 0x0000003b, 22734 }, /* semicolon */ + { 0x0000003c, 19412 }, /* less */ + { 0x0000003d, 12051 }, /* equal */ + { 0x0000003e, 13272 }, /* greater */ + { 0x0000003f, 22165 }, /* question */ + { 0x00000040, 3292 }, /* at */ + { 0x00000041, 398 }, /* A */ + { 0x00000042, 3328 }, /* B */ + { 0x00000043, 8439 }, /* C */ + { 0x00000044, 10320 }, /* D */ + { 0x00000045, 11424 }, /* E */ + { 0x00000046, 12155 }, /* F */ + { 0x00000047, 12665 }, /* G */ + { 0x00000048, 14378 }, /* H */ + { 0x00000049, 17069 }, /* I */ + { 0x0000004a, 18114 }, /* J */ + { 0x0000004b, 18146 }, /* K */ + { 0x0000004c, 19112 }, /* L */ + { 0x0000004d, 19533 }, /* M */ + { 0x0000004e, 19943 }, /* N */ + { 0x0000004f, 20200 }, /* O */ + { 0x00000050, 21373 }, /* P */ + { 0x00000051, 22156 }, /* Q */ + { 0x00000052, 22217 }, /* R */ + { 0x00000053, 22579 }, /* S */ + { 0x00000054, 24294 }, /* T */ + { 0x00000055, 25847 }, /* U */ + { 0x00000056, 26483 }, /* V */ + { 0x00000057, 26545 }, /* W */ + { 0x00000058, 26631 }, /* X */ + { 0x00000059, 28972 }, /* Y */ + { 0x0000005a, 29100 }, /* Z */ + { 0x0000005b, 3603 }, /* bracketleft */ + { 0x0000005c, 3352 }, /* backslash */ + { 0x0000005d, 3615 }, /* bracketright */ + { 0x0000005e, 3260 }, /* asciicircum */ + { 0x0000005f, 26346 }, /* underscore */ + { 0x00000060, 13266 }, /* grave */ + { 0x00000061, 400 }, /* a */ + { 0x00000062, 3330 }, /* b */ + { 0x00000063, 8441 }, /* c */ + { 0x00000064, 10322 }, /* d */ + { 0x00000065, 11426 }, /* e */ + { 0x00000066, 12157 }, /* f */ + { 0x00000067, 12667 }, /* g */ + { 0x00000068, 14380 }, /* h */ + { 0x00000069, 17071 }, /* i */ + { 0x0000006a, 18116 }, /* j */ + { 0x0000006b, 18148 }, /* k */ + { 0x0000006c, 19114 }, /* l */ + { 0x0000006d, 19535 }, /* m */ + { 0x0000006e, 19945 }, /* n */ + { 0x0000006f, 20202 }, /* o */ + { 0x00000070, 21375 }, /* p */ + { 0x00000071, 22158 }, /* q */ + { 0x00000072, 22219 }, /* r */ + { 0x00000073, 22581 }, /* s */ + { 0x00000074, 24296 }, /* t */ + { 0x00000075, 25849 }, /* u */ + { 0x00000076, 26485 }, /* v */ + { 0x00000077, 26547 }, /* w */ + { 0x00000078, 26633 }, /* x */ + { 0x00000079, 28974 }, /* y */ + { 0x0000007a, 29102 }, /* z */ + { 0x0000007b, 3582 }, /* braceleft */ + { 0x0000007c, 3392 }, /* bar */ + { 0x0000007d, 3592 }, /* braceright */ + { 0x0000007e, 3272 }, /* asciitilde */ + { 0x000000a0, 20078 }, /* nobreakspace */ + { 0x000000a1, 12106 }, /* exclamdown */ + { 0x000000a2, 8589 }, /* cent */ + { 0x000000a3, 23827 }, /* sterling */ + { 0x000000a4, 8766 }, /* currency */ + { 0x000000a5, 29056 }, /* yen */ + { 0x000000a6, 8389 }, /* brokenbar */ + { 0x000000a7, 22719 }, /* section */ + { 0x000000a8, 11203 }, /* diaeresis */ + { 0x000000a9, 8717 }, /* copyright */ + { 0x000000aa, 20852 }, /* ordfeminine */ + { 0x000000ab, 14349 }, /* guillemotleft */ + { 0x000000ac, 20147 }, /* notsign */ + { 0x000000ad, 17062 }, /* hyphen */ + { 0x000000ae, 22331 }, /* registered */ + { 0x000000af, 19641 }, /* macron */ + { 0x000000b0, 11153 }, /* degree */ + { 0x000000b1, 21562 }, /* plusminus */ + { 0x000000b2, 25825 }, /* twosuperior */ + { 0x000000b3, 25571 }, /* threesuperior */ + { 0x000000b4, 820 }, /* acute */ + { 0x000000b5, 19799 }, /* mu */ + { 0x000000b6, 21415 }, /* paragraph */ + { 0x000000b7, 21502 }, /* periodcentered */ + { 0x000000b8, 8581 }, /* cedilla */ + { 0x000000b9, 20755 }, /* onesuperior */ + { 0x000000ba, 19688 }, /* masculine */ + { 0x000000bb, 14363 }, /* guillemotright */ + { 0x000000bc, 20722 }, /* onequarter */ + { 0x000000bd, 20714 }, /* onehalf */ + { 0x000000be, 25542 }, /* threequarters */ + { 0x000000bf, 22174 }, /* questiondown */ + { 0x000000c0, 854 }, /* Agrave */ + { 0x000000c1, 402 }, /* Aacute */ + { 0x000000c2, 622 }, /* Acircumflex */ + { 0x000000c3, 3295 }, /* Atilde */ + { 0x000000c4, 826 }, /* Adiaeresis */ + { 0x000000c5, 2036 }, /* Aring */ + { 0x000000c6, 848 }, /* AE */ + { 0x000000c7, 8539 }, /* Ccedilla */ + { 0x000000c8, 11724 }, /* Egrave */ + { 0x000000c9, 11448 }, /* Eacute */ + { 0x000000ca, 11496 }, /* Ecircumflex */ + { 0x000000cb, 11702 }, /* Ediaeresis */ + { 0x000000cc, 17205 }, /* Igrave */ + { 0x000000cd, 17083 }, /* Iacute */ + { 0x000000ce, 17131 }, /* Icircumflex */ + { 0x000000cf, 17165 }, /* Idiaeresis */ + { 0x000000d0, 12064 }, /* ETH */ + { 0x000000d1, 20155 }, /* Ntilde */ + { 0x000000d2, 20527 }, /* Ograve */ + { 0x000000d3, 20204 }, /* Oacute */ + { 0x000000d4, 20268 }, /* Ocircumflex */ + { 0x000000d5, 21310 }, /* Otilde */ + { 0x000000d6, 20466 }, /* Odiaeresis */ + { 0x000000d7, 19839 }, /* multiply */ + { 0x000000d8, 21296 }, /* Oslash */ + { 0x000000d9, 25971 }, /* Ugrave */ + { 0x000000da, 25851 }, /* Uacute */ + { 0x000000db, 25899 }, /* Ucircumflex */ + { 0x000000dc, 25923 }, /* Udiaeresis */ + { 0x000000dd, 28976 }, /* Yacute */ + { 0x000000de, 25499 }, /* THORN */ + { 0x000000df, 23820 }, /* ssharp */ + { 0x000000e0, 861 }, /* agrave */ + { 0x000000e1, 409 }, /* aacute */ + { 0x000000e2, 634 }, /* acircumflex */ + { 0x000000e3, 3302 }, /* atilde */ + { 0x000000e4, 837 }, /* adiaeresis */ + { 0x000000e5, 2042 }, /* aring */ + { 0x000000e6, 851 }, /* ae */ + { 0x000000e7, 8548 }, /* ccedilla */ + { 0x000000e8, 11731 }, /* egrave */ + { 0x000000e9, 11455 }, /* eacute */ + { 0x000000ea, 11508 }, /* ecircumflex */ + { 0x000000eb, 11713 }, /* ediaeresis */ + { 0x000000ec, 17212 }, /* igrave */ + { 0x000000ed, 17090 }, /* iacute */ + { 0x000000ee, 17143 }, /* icircumflex */ + { 0x000000ef, 17176 }, /* idiaeresis */ + { 0x000000f0, 12072 }, /* eth */ + { 0x000000f1, 20162 }, /* ntilde */ + { 0x000000f2, 20534 }, /* ograve */ + { 0x000000f3, 20211 }, /* oacute */ + { 0x000000f4, 20280 }, /* ocircumflex */ + { 0x000000f5, 21317 }, /* otilde */ + { 0x000000f6, 20477 }, /* odiaeresis */ + { 0x000000f7, 11242 }, /* division */ + { 0x000000f8, 21303 }, /* oslash */ + { 0x000000f9, 25978 }, /* ugrave */ + { 0x000000fa, 25858 }, /* uacute */ + { 0x000000fb, 25911 }, /* ucircumflex */ + { 0x000000fc, 25934 }, /* udiaeresis */ + { 0x000000fd, 28983 }, /* yacute */ + { 0x000000fe, 25511 }, /* thorn */ + { 0x000000ff, 29034 }, /* ydiaeresis */ + { 0x000001a1, 918 }, /* Aogonek */ + { 0x000001a2, 8383 }, /* breve */ + { 0x000001a3, 19517 }, /* Lstroke */ + { 0x000001a5, 19212 }, /* Lcaron */ + { 0x000001a6, 22603 }, /* Sacute */ + { 0x000001a9, 22617 }, /* Scaron */ + { 0x000001aa, 22631 }, /* Scedilla */ + { 0x000001ab, 24322 }, /* Tcaron */ + { 0x000001ac, 29124 }, /* Zacute */ + { 0x000001ae, 29138 }, /* Zcaron */ + { 0x000001af, 29104 }, /* Zabovedot */ + { 0x000001b1, 926 }, /* aogonek */ + { 0x000001b2, 20520 }, /* ogonek */ + { 0x000001b3, 19525 }, /* lstroke */ + { 0x000001b5, 19219 }, /* lcaron */ + { 0x000001b6, 22610 }, /* sacute */ + { 0x000001b7, 8519 }, /* caron */ + { 0x000001b9, 22624 }, /* scaron */ + { 0x000001ba, 22640 }, /* scedilla */ + { 0x000001bb, 24329 }, /* tcaron */ + { 0x000001bc, 29131 }, /* zacute */ + { 0x000001bd, 11283 }, /* doubleacute */ + { 0x000001be, 29145 }, /* zcaron */ + { 0x000001bf, 29114 }, /* zabovedot */ + { 0x000001c0, 22272 }, /* Racute */ + { 0x000001c3, 445 }, /* Abreve */ + { 0x000001c5, 19147 }, /* Lacute */ + { 0x000001c6, 8475 }, /* Cacute */ + { 0x000001c8, 8525 }, /* Ccaron */ + { 0x000001ca, 12035 }, /* Eogonek */ + { 0x000001cc, 11482 }, /* Ecaron */ + { 0x000001cf, 10365 }, /* Dcaron */ + { 0x000001d0, 11401 }, /* Dstroke */ + { 0x000001d1, 19953 }, /* Nacute */ + { 0x000001d2, 19977 }, /* Ncaron */ + { 0x000001d5, 20488 }, /* Odoubleacute */ + { 0x000001d8, 22294 }, /* Rcaron */ + { 0x000001d9, 26452 }, /* Uring */ + { 0x000001db, 25945 }, /* Udoubleacute */ + { 0x000001de, 24336 }, /* Tcedilla */ + { 0x000001e0, 22279 }, /* racute */ + { 0x000001e3, 452 }, /* abreve */ + { 0x000001e5, 19154 }, /* lacute */ + { 0x000001e6, 8482 }, /* cacute */ + { 0x000001e8, 8532 }, /* ccaron */ + { 0x000001ea, 12043 }, /* eogonek */ + { 0x000001ec, 11489 }, /* ecaron */ + { 0x000001ef, 10372 }, /* dcaron */ + { 0x000001f0, 11409 }, /* dstroke */ + { 0x000001f1, 19960 }, /* nacute */ + { 0x000001f2, 19984 }, /* ncaron */ + { 0x000001f5, 20501 }, /* odoubleacute */ + { 0x000001f8, 22301 }, /* rcaron */ + { 0x000001f9, 26458 }, /* uring */ + { 0x000001fb, 25958 }, /* udoubleacute */ + { 0x000001fe, 24345 }, /* tcedilla */ + { 0x000001ff, 436 }, /* abovedot */ + { 0x000002a1, 17027 }, /* Hstroke */ + { 0x000002a6, 16056 }, /* Hcircumflex */ + { 0x000002a9, 17073 }, /* Iabovedot */ + { 0x000002ab, 12689 }, /* Gbreve */ + { 0x000002ac, 18118 }, /* Jcircumflex */ + { 0x000002b1, 17035 }, /* hstroke */ + { 0x000002b6, 16068 }, /* hcircumflex */ + { 0x000002b9, 17187 }, /* idotless */ + { 0x000002bb, 12696 }, /* gbreve */ + { 0x000002bc, 18130 }, /* jcircumflex */ + { 0x000002c5, 8455 }, /* Cabovedot */ + { 0x000002c6, 8557 }, /* Ccircumflex */ + { 0x000002d5, 12669 }, /* Gabovedot */ + { 0x000002d8, 12735 }, /* Gcircumflex */ + { 0x000002dd, 25885 }, /* Ubreve */ + { 0x000002de, 22661 }, /* Scircumflex */ + { 0x000002e5, 8465 }, /* cabovedot */ + { 0x000002e6, 8569 }, /* ccircumflex */ + { 0x000002f5, 12679 }, /* gabovedot */ + { 0x000002f8, 12747 }, /* gcircumflex */ + { 0x000002fd, 25892 }, /* ubreve */ + { 0x000002fe, 22673 }, /* scircumflex */ + { 0x000003a2, 19108 }, /* kra */ + { 0x000003a3, 22308 }, /* Rcedilla */ + { 0x000003a5, 18100 }, /* Itilde */ + { 0x000003a6, 19226 }, /* Lcedilla */ + { 0x000003aa, 11839 }, /* Emacron */ + { 0x000003ab, 12717 }, /* Gcedilla */ + { 0x000003ac, 25788 }, /* Tslash */ + { 0x000003b3, 22317 }, /* rcedilla */ + { 0x000003b5, 18107 }, /* itilde */ + { 0x000003b6, 19235 }, /* lcedilla */ + { 0x000003ba, 11847 }, /* emacron */ + { 0x000003bb, 12726 }, /* gcedilla */ + { 0x000003bc, 25795 }, /* tslash */ + { 0x000003bd, 11983 }, /* ENG */ + { 0x000003bf, 11987 }, /* eng */ + { 0x000003c0, 892 }, /* Amacron */ + { 0x000003c7, 17338 }, /* Iogonek */ + { 0x000003cc, 11428 }, /* Eabovedot */ + { 0x000003cf, 17231 }, /* Imacron */ + { 0x000003d1, 19991 }, /* Ncedilla */ + { 0x000003d2, 20679 }, /* Omacron */ + { 0x000003d3, 18779 }, /* Kcedilla */ + { 0x000003d9, 26368 }, /* Uogonek */ + { 0x000003dd, 26469 }, /* Utilde */ + { 0x000003de, 26321 }, /* Umacron */ + { 0x000003e0, 900 }, /* amacron */ + { 0x000003e7, 17346 }, /* iogonek */ + { 0x000003ec, 11438 }, /* eabovedot */ + { 0x000003ef, 17239 }, /* imacron */ + { 0x000003f1, 20000 }, /* ncedilla */ + { 0x000003f2, 20687 }, /* omacron */ + { 0x000003f3, 18788 }, /* kcedilla */ + { 0x000003f9, 26376 }, /* uogonek */ + { 0x000003fd, 26476 }, /* utilde */ + { 0x000003fe, 26329 }, /* umacron */ + { 0x0000047e, 21364 }, /* overline */ + { 0x000004a1, 18243 }, /* kana_fullstop */ + { 0x000004a2, 18477 }, /* kana_openingbracket */ + { 0x000004a3, 18173 }, /* kana_closingbracket */ + { 0x000004a4, 18193 }, /* kana_comma */ + { 0x000004a5, 18204 }, /* kana_conjunctive */ + { 0x000004a6, 18689 }, /* kana_WO */ + { 0x000004a7, 18150 }, /* kana_a */ + { 0x000004a8, 18297 }, /* kana_i */ + { 0x000004a9, 18667 }, /* kana_u */ + { 0x000004aa, 18221 }, /* kana_e */ + { 0x000004ab, 18463 }, /* kana_o */ + { 0x000004ac, 18697 }, /* kana_ya */ + { 0x000004ad, 18729 }, /* kana_yu */ + { 0x000004ae, 18713 }, /* kana_yo */ + { 0x000004af, 18633 }, /* kana_tsu */ + { 0x000004b0, 22130 }, /* prolongedsound */ + { 0x000004b1, 18157 }, /* kana_A */ + { 0x000004b2, 18304 }, /* kana_I */ + { 0x000004b3, 18674 }, /* kana_U */ + { 0x000004b4, 18228 }, /* kana_E */ + { 0x000004b5, 18470 }, /* kana_O */ + { 0x000004b6, 18311 }, /* kana_KA */ + { 0x000004b7, 18327 }, /* kana_KI */ + { 0x000004b8, 18343 }, /* kana_KU */ + { 0x000004b9, 18319 }, /* kana_KE */ + { 0x000004ba, 18335 }, /* kana_KO */ + { 0x000004bb, 18537 }, /* kana_SA */ + { 0x000004bc, 18553 }, /* kana_SHI */ + { 0x000004bd, 18581 }, /* kana_SU */ + { 0x000004be, 18545 }, /* kana_SE */ + { 0x000004bf, 18573 }, /* kana_SO */ + { 0x000004c0, 18601 }, /* kana_TA */ + { 0x000004c1, 18164 }, /* kana_CHI */ + { 0x000004c2, 18642 }, /* kana_TSU */ + { 0x000004c3, 18609 }, /* kana_TE */ + { 0x000004c4, 18625 }, /* kana_TO */ + { 0x000004c5, 18423 }, /* kana_NA */ + { 0x000004c6, 18439 }, /* kana_NI */ + { 0x000004c7, 18455 }, /* kana_NU */ + { 0x000004c8, 18431 }, /* kana_NE */ + { 0x000004c9, 18447 }, /* kana_NO */ + { 0x000004ca, 18257 }, /* kana_HA */ + { 0x000004cb, 18273 }, /* kana_HI */ + { 0x000004cc, 18235 }, /* kana_FU */ + { 0x000004cd, 18265 }, /* kana_HE */ + { 0x000004ce, 18281 }, /* kana_HO */ + { 0x000004cf, 18361 }, /* kana_MA */ + { 0x000004d0, 18377 }, /* kana_MI */ + { 0x000004d1, 18408 }, /* kana_MU */ + { 0x000004d2, 18369 }, /* kana_ME */ + { 0x000004d3, 18400 }, /* kana_MO */ + { 0x000004d4, 18705 }, /* kana_YA */ + { 0x000004d5, 18737 }, /* kana_YU */ + { 0x000004d6, 18721 }, /* kana_YO */ + { 0x000004d7, 18497 }, /* kana_RA */ + { 0x000004d8, 18513 }, /* kana_RI */ + { 0x000004d9, 18529 }, /* kana_RU */ + { 0x000004da, 18505 }, /* kana_RE */ + { 0x000004db, 18521 }, /* kana_RO */ + { 0x000004dc, 18681 }, /* kana_WA */ + { 0x000004dd, 18416 }, /* kana_N */ + { 0x000004de, 26519 }, /* voicedsound */ + { 0x000004df, 22744 }, /* semivoicedsound */ + { 0x000005ac, 1109 }, /* Arabic_comma */ + { 0x000005bb, 1764 }, /* Arabic_semicolon */ + { 0x000005bf, 1698 }, /* Arabic_question_mark */ + { 0x000005c1, 1303 }, /* Arabic_hamza */ + { 0x000005c2, 1599 }, /* Arabic_maddaonalef */ + { 0x000005c3, 1354 }, /* Arabic_hamzaonalef */ + { 0x000005c4, 1373 }, /* Arabic_hamzaonwaw */ + { 0x000005c5, 1409 }, /* Arabic_hamzaunderalef */ + { 0x000005c6, 1391 }, /* Arabic_hamzaonyeh */ + { 0x000005c7, 1067 }, /* Arabic_alef */ + { 0x000005c8, 1098 }, /* Arabic_beh */ + { 0x000005c9, 1909 }, /* Arabic_tehmarbuta */ + { 0x000005ca, 1898 }, /* Arabic_teh */ + { 0x000005cb, 1939 }, /* Arabic_theh */ + { 0x000005cc, 1481 }, /* Arabic_jeem */ + { 0x000005cd, 1292 }, /* Arabic_hah */ + { 0x000005ce, 1557 }, /* Arabic_khah */ + { 0x000005cf, 1133 }, /* Arabic_dal */ + { 0x000005d0, 1927 }, /* Arabic_thal */ + { 0x000005d1, 1719 }, /* Arabic_ra */ + { 0x000005d2, 2024 }, /* Arabic_zain */ + { 0x000005d3, 1752 }, /* Arabic_seen */ + { 0x000005d4, 1795 }, /* Arabic_sheen */ + { 0x000005d5, 1741 }, /* Arabic_sad */ + { 0x000005d6, 1122 }, /* Arabic_dad */ + { 0x000005d7, 1859 }, /* Arabic_tah */ + { 0x000005d8, 2013 }, /* Arabic_zah */ + { 0x000005d9, 1056 }, /* Arabic_ain */ + { 0x000005da, 1269 }, /* Arabic_ghain */ + { 0x000005e0, 1870 }, /* Arabic_tatweel */ + { 0x000005e1, 1231 }, /* Arabic_feh */ + { 0x000005e2, 1687 }, /* Arabic_qaf */ + { 0x000005e3, 1504 }, /* Arabic_kaf */ + { 0x000005e4, 1569 }, /* Arabic_lam */ + { 0x000005e5, 1618 }, /* Arabic_meem */ + { 0x000005e6, 1630 }, /* Arabic_noon */ + { 0x000005e7, 1282 }, /* Arabic_ha */ + { 0x000005e8, 1974 }, /* Arabic_waw */ + { 0x000005e9, 1079 }, /* Arabic_alefmaksura */ + { 0x000005ea, 1985 }, /* Arabic_yeh */ + { 0x000005eb, 1215 }, /* Arabic_fathatan */ + { 0x000005ec, 1157 }, /* Arabic_dammatan */ + { 0x000005ed, 1528 }, /* Arabic_kasratan */ + { 0x000005ee, 1202 }, /* Arabic_fatha */ + { 0x000005ef, 1144 }, /* Arabic_damma */ + { 0x000005f0, 1515 }, /* Arabic_kasra */ + { 0x000005f1, 1781 }, /* Arabic_shadda */ + { 0x000005f2, 1808 }, /* Arabic_sukun */ + { 0x000006a1, 22760 }, /* Serbian_dje */ + { 0x000006a2, 19585 }, /* Macedonia_gje */ + { 0x000006a3, 9456 }, /* Cyrillic_io */ + { 0x000006a4, 26199 }, /* Ukrainian_ie */ + { 0x000006a5, 19557 }, /* Macedonia_dse */ + { 0x000006a6, 26175 }, /* Ukrainian_i */ + { 0x000006a7, 26225 }, /* Ukrainian_yi */ + { 0x000006a8, 9480 }, /* Cyrillic_je */ + { 0x000006a9, 9618 }, /* Cyrillic_lje */ + { 0x000006aa, 9644 }, /* Cyrillic_nje */ + { 0x000006ab, 22878 }, /* Serbian_tshe */ + { 0x000006ac, 19613 }, /* Macedonia_kje */ + { 0x000006ad, 26123 }, /* Ukrainian_ghe_with_upturn */ + { 0x000006ae, 8399 }, /* Byelorussian_shortu */ + { 0x000006af, 8972 }, /* Cyrillic_dzhe */ + { 0x000006b0, 20189 }, /* numerosign */ + { 0x000006b1, 22772 }, /* Serbian_DJE */ + { 0x000006b2, 19599 }, /* Macedonia_GJE */ + { 0x000006b3, 9468 }, /* Cyrillic_IO */ + { 0x000006b4, 26212 }, /* Ukrainian_IE */ + { 0x000006b5, 19571 }, /* Macedonia_DSE */ + { 0x000006b6, 26187 }, /* Ukrainian_I */ + { 0x000006b7, 26238 }, /* Ukrainian_YI */ + { 0x000006b8, 9492 }, /* Cyrillic_JE */ + { 0x000006b9, 9631 }, /* Cyrillic_LJE */ + { 0x000006ba, 9657 }, /* Cyrillic_NJE */ + { 0x000006bb, 22891 }, /* Serbian_TSHE */ + { 0x000006bc, 19627 }, /* Macedonia_KJE */ + { 0x000006bd, 26149 }, /* Ukrainian_GHE_WITH_UPTURN */ + { 0x000006be, 8419 }, /* Byelorussian_SHORTU */ + { 0x000006bf, 8986 }, /* Cyrillic_DZHE */ + { 0x000006c0, 10200 }, /* Cyrillic_yu */ + { 0x000006c1, 8782 }, /* Cyrillic_a */ + { 0x000006c2, 8804 }, /* Cyrillic_be */ + { 0x000006c3, 9952 }, /* Cyrillic_tse */ + { 0x000006c4, 8948 }, /* Cyrillic_de */ + { 0x000006c5, 9432 }, /* Cyrillic_ie */ + { 0x000006c6, 9022 }, /* Cyrillic_ef */ + { 0x000006c7, 9210 }, /* Cyrillic_ghe */ + { 0x000006c8, 9270 }, /* Cyrillic_ha */ + { 0x000006c9, 9374 }, /* Cyrillic_i */ + { 0x000006ca, 9860 }, /* Cyrillic_shorti */ + { 0x000006cb, 9504 }, /* Cyrillic_ka */ + { 0x000006cc, 9046 }, /* Cyrillic_el */ + { 0x000006cd, 9070 }, /* Cyrillic_em */ + { 0x000006ce, 9094 }, /* Cyrillic_en */ + { 0x000006cf, 9670 }, /* Cyrillic_o */ + { 0x000006d0, 9722 }, /* Cyrillic_pe */ + { 0x000006d1, 10148 }, /* Cyrillic_ya */ + { 0x000006d2, 9162 }, /* Cyrillic_er */ + { 0x000006d3, 9186 }, /* Cyrillic_es */ + { 0x000006d4, 9928 }, /* Cyrillic_te */ + { 0x000006d5, 9978 }, /* Cyrillic_u */ + { 0x000006d6, 10248 }, /* Cyrillic_zhe */ + { 0x000006d7, 10124 }, /* Cyrillic_ve */ + { 0x000006d8, 9892 }, /* Cyrillic_softsign */ + { 0x000006d9, 10172 }, /* Cyrillic_yeru */ + { 0x000006da, 10224 }, /* Cyrillic_ze */ + { 0x000006db, 9776 }, /* Cyrillic_sha */ + { 0x000006dc, 9000 }, /* Cyrillic_e */ + { 0x000006dd, 9802 }, /* Cyrillic_shcha */ + { 0x000006de, 8828 }, /* Cyrillic_che */ + { 0x000006df, 9338 }, /* Cyrillic_hardsign */ + { 0x000006e0, 10212 }, /* Cyrillic_YU */ + { 0x000006e1, 8793 }, /* Cyrillic_A */ + { 0x000006e2, 8816 }, /* Cyrillic_BE */ + { 0x000006e3, 9965 }, /* Cyrillic_TSE */ + { 0x000006e4, 8960 }, /* Cyrillic_DE */ + { 0x000006e5, 9444 }, /* Cyrillic_IE */ + { 0x000006e6, 9034 }, /* Cyrillic_EF */ + { 0x000006e7, 9223 }, /* Cyrillic_GHE */ + { 0x000006e8, 9282 }, /* Cyrillic_HA */ + { 0x000006e9, 9385 }, /* Cyrillic_I */ + { 0x000006ea, 9876 }, /* Cyrillic_SHORTI */ + { 0x000006eb, 9516 }, /* Cyrillic_KA */ + { 0x000006ec, 9058 }, /* Cyrillic_EL */ + { 0x000006ed, 9082 }, /* Cyrillic_EM */ + { 0x000006ee, 9106 }, /* Cyrillic_EN */ + { 0x000006ef, 9681 }, /* Cyrillic_O */ + { 0x000006f0, 9734 }, /* Cyrillic_PE */ + { 0x000006f1, 10160 }, /* Cyrillic_YA */ + { 0x000006f2, 9174 }, /* Cyrillic_ER */ + { 0x000006f3, 9198 }, /* Cyrillic_ES */ + { 0x000006f4, 9940 }, /* Cyrillic_TE */ + { 0x000006f5, 9989 }, /* Cyrillic_U */ + { 0x000006f6, 10261 }, /* Cyrillic_ZHE */ + { 0x000006f7, 10136 }, /* Cyrillic_VE */ + { 0x000006f8, 9910 }, /* Cyrillic_SOFTSIGN */ + { 0x000006f9, 10186 }, /* Cyrillic_YERU */ + { 0x000006fa, 10236 }, /* Cyrillic_ZE */ + { 0x000006fb, 9789 }, /* Cyrillic_SHA */ + { 0x000006fc, 9011 }, /* Cyrillic_E */ + { 0x000006fd, 9817 }, /* Cyrillic_SHCHA */ + { 0x000006fe, 8841 }, /* Cyrillic_CHE */ + { 0x000006ff, 9356 }, /* Cyrillic_HARDSIGN */ + { 0x000007a1, 13342 }, /* Greek_ALPHAaccent */ + { 0x000007a2, 13472 }, /* Greek_EPSILONaccent */ + { 0x000007a3, 13532 }, /* Greek_ETAaccent */ + { 0x000007a4, 13647 }, /* Greek_IOTAaccent */ + { 0x000007a5, 13726 }, /* Greek_IOTAdieresis */ + { 0x000007a7, 13962 }, /* Greek_OMICRONaccent */ + { 0x000007a8, 14189 }, /* Greek_UPSILONaccent */ + { 0x000007a9, 14257 }, /* Greek_UPSILONdieresis */ + { 0x000007ab, 13898 }, /* Greek_OMEGAaccent */ + { 0x000007ae, 13297 }, /* Greek_accentdieresis */ + { 0x000007af, 13610 }, /* Greek_horizbar */ + { 0x000007b1, 13360 }, /* Greek_alphaaccent */ + { 0x000007b2, 13492 }, /* Greek_epsilonaccent */ + { 0x000007b3, 13548 }, /* Greek_etaaccent */ + { 0x000007b4, 13664 }, /* Greek_iotaaccent */ + { 0x000007b5, 13745 }, /* Greek_iotadieresis */ + { 0x000007b6, 13681 }, /* Greek_iotaaccentdieresis */ + { 0x000007b7, 13982 }, /* Greek_omicronaccent */ + { 0x000007b8, 14209 }, /* Greek_upsilonaccent */ + { 0x000007b9, 14279 }, /* Greek_upsilondieresis */ + { 0x000007ba, 14229 }, /* Greek_upsilonaccentdieresis */ + { 0x000007bb, 13916 }, /* Greek_omegaaccent */ + { 0x000007c1, 13318 }, /* Greek_ALPHA */ + { 0x000007c2, 13378 }, /* Greek_BETA */ + { 0x000007c3, 13586 }, /* Greek_GAMMA */ + { 0x000007c4, 13420 }, /* Greek_DELTA */ + { 0x000007c5, 13444 }, /* Greek_EPSILON */ + { 0x000007c6, 14319 }, /* Greek_ZETA */ + { 0x000007c7, 13512 }, /* Greek_ETA */ + { 0x000007c8, 14137 }, /* Greek_THETA */ + { 0x000007c9, 13625 }, /* Greek_IOTA */ + { 0x000007ca, 13764 }, /* Greek_KAPPA */ + { 0x000007cb, 13814 }, /* Greek_LAMDA */ + { 0x000007cc, 13838 }, /* Greek_MU */ + { 0x000007cd, 13856 }, /* Greek_NU */ + { 0x000007ce, 14301 }, /* Greek_XI */ + { 0x000007cf, 13934 }, /* Greek_OMICRON */ + { 0x000007d0, 14022 }, /* Greek_PI */ + { 0x000007d1, 14060 }, /* Greek_RHO */ + { 0x000007d2, 14080 }, /* Greek_SIGMA */ + { 0x000007d4, 14117 }, /* Greek_TAU */ + { 0x000007d5, 14161 }, /* Greek_UPSILON */ + { 0x000007d6, 14002 }, /* Greek_PHI */ + { 0x000007d7, 13400 }, /* Greek_CHI */ + { 0x000007d8, 14040 }, /* Greek_PSI */ + { 0x000007d9, 13874 }, /* Greek_OMEGA */ + { 0x000007e1, 13330 }, /* Greek_alpha */ + { 0x000007e2, 13389 }, /* Greek_beta */ + { 0x000007e3, 13598 }, /* Greek_gamma */ + { 0x000007e4, 13432 }, /* Greek_delta */ + { 0x000007e5, 13458 }, /* Greek_epsilon */ + { 0x000007e6, 14330 }, /* Greek_zeta */ + { 0x000007e7, 13522 }, /* Greek_eta */ + { 0x000007e8, 14149 }, /* Greek_theta */ + { 0x000007e9, 13636 }, /* Greek_iota */ + { 0x000007ea, 13776 }, /* Greek_kappa */ + { 0x000007eb, 13826 }, /* Greek_lamda */ + { 0x000007ec, 13847 }, /* Greek_mu */ + { 0x000007ed, 13865 }, /* Greek_nu */ + { 0x000007ee, 14310 }, /* Greek_xi */ + { 0x000007ef, 13948 }, /* Greek_omicron */ + { 0x000007f0, 14031 }, /* Greek_pi */ + { 0x000007f1, 14070 }, /* Greek_rho */ + { 0x000007f2, 14092 }, /* Greek_sigma */ + { 0x000007f3, 13564 }, /* Greek_finalsmallsigma */ + { 0x000007f4, 14127 }, /* Greek_tau */ + { 0x000007f5, 14175 }, /* Greek_upsilon */ + { 0x000007f6, 14012 }, /* Greek_phi */ + { 0x000007f7, 13410 }, /* Greek_chi */ + { 0x000007f8, 14050 }, /* Greek_psi */ + { 0x000007f9, 13886 }, /* Greek_omega */ + { 0x000008a1, 19356 }, /* leftradical */ + { 0x000008a2, 25621 }, /* topleftradical */ + { 0x000008a3, 16667 }, /* horizconnector */ + { 0x000008a4, 25595 }, /* topintegral */ + { 0x000008a5, 3422 }, /* botintegral */ + { 0x000008a6, 26505 }, /* vertconnector */ + { 0x000008a7, 25636 }, /* topleftsqbracket */ + { 0x000008a8, 3448 }, /* botleftsqbracket */ + { 0x000008a9, 25685 }, /* toprightsqbracket */ + { 0x000008aa, 3497 }, /* botrightsqbracket */ + { 0x000008ab, 25607 }, /* topleftparens */ + { 0x000008ac, 3434 }, /* botleftparens */ + { 0x000008ad, 25670 }, /* toprightparens */ + { 0x000008ae, 3482 }, /* botrightparens */ + { 0x000008af, 19306 }, /* leftmiddlecurlybrace */ + { 0x000008b0, 22440 }, /* rightmiddlecurlybrace */ + { 0x000008b1, 25653 }, /* topleftsummation */ + { 0x000008b2, 3465 }, /* botleftsummation */ + { 0x000008b3, 25726 }, /* topvertsummationconnector */ + { 0x000008b4, 3538 }, /* botvertsummationconnector */ + { 0x000008b5, 25703 }, /* toprightsummation */ + { 0x000008b6, 3515 }, /* botrightsummation */ + { 0x000008b7, 22462 }, /* rightmiddlesummation */ + { 0x000008bc, 19417 }, /* lessthanequal */ + { 0x000008bd, 20125 }, /* notequal */ + { 0x000008be, 13280 }, /* greaterthanequal */ + { 0x000008bf, 17313 }, /* integral */ + { 0x000008c0, 25479 }, /* therefore */ + { 0x000008c1, 26487 }, /* variation */ + { 0x000008c2, 17275 }, /* infinity */ + { 0x000008c5, 19947 }, /* nabla */ + { 0x000008c8, 954 }, /* approximate */ + { 0x000008c9, 22999 }, /* similarequal */ + { 0x000008cd, 17196 }, /* ifonlyif */ + { 0x000008ce, 17247 }, /* implies */ + { 0x000008cf, 17155 }, /* identical */ + { 0x000008d6, 22286 }, /* radical */ + { 0x000008da, 17255 }, /* includedin */ + { 0x000008db, 17266 }, /* includes */ + { 0x000008dc, 17322 }, /* intersection */ + { 0x000008dd, 26362 }, /* union */ + { 0x000008de, 19457 }, /* logicaland */ + { 0x000008df, 19468 }, /* logicalor */ + { 0x000008ef, 21463 }, /* partialderivative */ + { 0x000008f6, 12656 }, /* function */ + { 0x000008fb, 19266 }, /* leftarrow */ + { 0x000008fc, 26387 }, /* uparrow */ + { 0x000008fd, 22397 }, /* rightarrow */ + { 0x000008fe, 11332 }, /* downarrow */ + { 0x000009df, 3410 }, /* blank */ + { 0x000009e0, 23790 }, /* soliddiamond */ + { 0x000009e1, 8603 }, /* checkerboard */ + { 0x000009e2, 17043 }, /* ht */ + { 0x000009e3, 12413 }, /* ff */ + { 0x000009e4, 8727 }, /* cr */ + { 0x000009e5, 19431 }, /* lf */ + { 0x000009e8, 20075 }, /* nl */ + { 0x000009e9, 26542 }, /* vt */ + { 0x000009ea, 19502 }, /* lowrightcorner */ + { 0x000009eb, 26416 }, /* uprightcorner */ + { 0x000009ec, 26403 }, /* upleftcorner */ + { 0x000009ed, 19488 }, /* lowleftcorner */ + { 0x000009ee, 8730 }, /* crossinglines */ + { 0x000009ef, 16682 }, /* horizlinescan1 */ + { 0x000009f0, 16697 }, /* horizlinescan3 */ + { 0x000009f1, 16712 }, /* horizlinescan5 */ + { 0x000009f2, 16727 }, /* horizlinescan7 */ + { 0x000009f3, 16742 }, /* horizlinescan9 */ + { 0x000009f4, 19397 }, /* leftt */ + { 0x000009f5, 22545 }, /* rightt */ + { 0x000009f6, 3533 }, /* bott */ + { 0x000009f7, 25721 }, /* topt */ + { 0x000009f8, 26497 }, /* vertbar */ + { 0x00000aa1, 11928 }, /* emspace */ + { 0x00000aa2, 12027 }, /* enspace */ + { 0x00000aa3, 11821 }, /* em3space */ + { 0x00000aa4, 11830 }, /* em4space */ + { 0x00000aa5, 11221 }, /* digitspace */ + { 0x00000aa6, 22145 }, /* punctspace */ + { 0x00000aa7, 25489 }, /* thinspace */ + { 0x00000aa8, 14382 }, /* hairspace */ + { 0x00000aa9, 11855 }, /* emdash */ + { 0x00000aaa, 11940 }, /* endash */ + { 0x00000aac, 22987 }, /* signifblank */ + { 0x00000aae, 11812 }, /* ellipsis */ + { 0x00000aaf, 11267 }, /* doubbaselinedot */ + { 0x00000ab0, 20767 }, /* onethird */ + { 0x00000ab1, 25837 }, /* twothirds */ + { 0x00000ab2, 20705 }, /* onefifth */ + { 0x00000ab3, 25802 }, /* twofifths */ + { 0x00000ab4, 25530 }, /* threefifths */ + { 0x00000ab5, 12607 }, /* fourfifths */ + { 0x00000ab6, 20733 }, /* onesixth */ + { 0x00000ab7, 12569 }, /* fivesixths */ + { 0x00000ab8, 8506 }, /* careof */ + { 0x00000abb, 12427 }, /* figdash */ + { 0x00000abc, 19249 }, /* leftanglebracket */ + { 0x00000abd, 11140 }, /* decimalpoint */ + { 0x00000abe, 22379 }, /* rightanglebracket */ + { 0x00000abf, 19681 }, /* marker */ + { 0x00000ac3, 20695 }, /* oneeighth */ + { 0x00000ac4, 25517 }, /* threeeighths */ + { 0x00000ac5, 12557 }, /* fiveeighths */ + { 0x00000ac6, 22904 }, /* seveneighths */ + { 0x00000ac9, 25760 }, /* trademark */ + { 0x00000aca, 22973 }, /* signaturemark */ + { 0x00000acb, 25770 }, /* trademarkincircle */ + { 0x00000acc, 19327 }, /* leftopentriangle */ + { 0x00000acd, 22483 }, /* rightopentriangle */ + { 0x00000ace, 11890 }, /* emopencircle */ + { 0x00000acf, 11903 }, /* emopenrectangle */ + { 0x00000ad0, 19377 }, /* leftsinglequotemark */ + { 0x00000ad1, 22524 }, /* rightsinglequotemark */ + { 0x00000ad2, 19286 }, /* leftdoublequotemark */ + { 0x00000ad3, 22419 }, /* rightdoublequotemark */ + { 0x00000ad4, 22067 }, /* prescription */ + { 0x00000ad5, 21517 }, /* permille */ + { 0x00000ad6, 19739 }, /* minutes */ + { 0x00000ad7, 22711 }, /* seconds */ + { 0x00000ad9, 19181 }, /* latincross */ + { 0x00000ada, 16626 }, /* hexagram */ + { 0x00000adb, 12455 }, /* filledrectbullet */ + { 0x00000adc, 12435 }, /* filledlefttribullet */ + { 0x00000add, 12472 }, /* filledrighttribullet */ + { 0x00000ade, 11862 }, /* emfilledcircle */ + { 0x00000adf, 11877 }, /* emfilledrect */ + { 0x00000ae0, 11991 }, /* enopencircbullet */ + { 0x00000ae1, 12008 }, /* enopensquarebullet */ + { 0x00000ae2, 20794 }, /* openrectbullet */ + { 0x00000ae3, 20836 }, /* opentribulletup */ + { 0x00000ae4, 20818 }, /* opentribulletdown */ + { 0x00000ae5, 20809 }, /* openstar */ + { 0x00000ae6, 11947 }, /* enfilledcircbullet */ + { 0x00000ae7, 11966 }, /* enfilledsqbullet */ + { 0x00000ae8, 12513 }, /* filledtribulletup */ + { 0x00000ae9, 12493 }, /* filledtribulletdown */ + { 0x00000aea, 19344 }, /* leftpointer */ + { 0x00000aeb, 22501 }, /* rightpointer */ + { 0x00000aec, 8649 }, /* club */ + { 0x00000aed, 11213 }, /* diamond */ + { 0x00000aee, 16080 }, /* heart */ + { 0x00000af0, 19668 }, /* maltesecross */ + { 0x00000af1, 10358 }, /* dagger */ + { 0x00000af2, 11295 }, /* doubledagger */ + { 0x00000af3, 8616 }, /* checkmark */ + { 0x00000af4, 3380 }, /* ballotcross */ + { 0x00000af5, 19860 }, /* musicalsharp */ + { 0x00000af6, 19848 }, /* musicalflat */ + { 0x00000af7, 19657 }, /* malesymbol */ + { 0x00000af8, 12400 }, /* femalesymbol */ + { 0x00000af9, 24354 }, /* telephone */ + { 0x00000afa, 24364 }, /* telephonerecorder */ + { 0x00000afb, 21537 }, /* phonographcopyright */ + { 0x00000afc, 8513 }, /* caret */ + { 0x00000afd, 23028 }, /* singlelowquotemark */ + { 0x00000afe, 11308 }, /* doublelowquotemark */ + { 0x00000aff, 8775 }, /* cursor */ + { 0x00000ba3, 19276 }, /* leftcaret */ + { 0x00000ba6, 22408 }, /* rightcaret */ + { 0x00000ba8, 11342 }, /* downcaret */ + { 0x00000ba9, 26395 }, /* upcaret */ + { 0x00000bc0, 21324 }, /* overbar */ + { 0x00000bc2, 11371 }, /* downtack */ + { 0x00000bc3, 26430 }, /* upshoe */ + { 0x00000bc4, 11361 }, /* downstile */ + { 0x00000bc6, 26337 }, /* underbar */ + { 0x00000bca, 18142 }, /* jot */ + { 0x00000bcc, 22160 }, /* quad */ + { 0x00000bce, 26445 }, /* uptack */ + { 0x00000bcf, 8626 }, /* circle */ + { 0x00000bd3, 26437 }, /* upstile */ + { 0x00000bd6, 11352 }, /* downshoe */ + { 0x00000bd8, 22514 }, /* rightshoe */ + { 0x00000bda, 19368 }, /* leftshoe */ + { 0x00000bdc, 19403 }, /* lefttack */ + { 0x00000bfc, 22552 }, /* righttack */ + { 0x00000cdf, 16173 }, /* hebrew_doublelowline */ + { 0x00000ce0, 16086 }, /* hebrew_aleph */ + { 0x00000ce1, 16111 }, /* hebrew_bet */ + { 0x00000ce2, 16292 }, /* hebrew_gimel */ + { 0x00000ce3, 16146 }, /* hebrew_dalet */ + { 0x00000ce4, 16319 }, /* hebrew_he */ + { 0x00000ce5, 16531 }, /* hebrew_waw */ + { 0x00000ce6, 16577 }, /* hebrew_zain */ + { 0x00000ce7, 16134 }, /* hebrew_chet */ + { 0x00000ce8, 16508 }, /* hebrew_tet */ + { 0x00000ce9, 16542 }, /* hebrew_yod */ + { 0x00000cea, 16194 }, /* hebrew_finalkaph */ + { 0x00000ceb, 16340 }, /* hebrew_kaph */ + { 0x00000cec, 16363 }, /* hebrew_lamed */ + { 0x00000ced, 16211 }, /* hebrew_finalmem */ + { 0x00000cee, 16376 }, /* hebrew_mem */ + { 0x00000cef, 16227 }, /* hebrew_finalnun */ + { 0x00000cf0, 16387 }, /* hebrew_nun */ + { 0x00000cf1, 16432 }, /* hebrew_samech */ + { 0x00000cf2, 16099 }, /* hebrew_ayin */ + { 0x00000cf3, 16243 }, /* hebrew_finalpe */ + { 0x00000cf4, 16398 }, /* hebrew_pe */ + { 0x00000cf5, 16258 }, /* hebrew_finalzade */ + { 0x00000cf6, 16553 }, /* hebrew_zade */ + { 0x00000cf7, 16408 }, /* hebrew_qoph */ + { 0x00000cf8, 16420 }, /* hebrew_resh */ + { 0x00000cf9, 16460 }, /* hebrew_shin */ + { 0x00000cfa, 16497 }, /* hebrew_taw */ + { 0x00000da1, 24617 }, /* Thai_kokai */ + { 0x00000da2, 24547 }, /* Thai_khokhai */ + { 0x00000da3, 24573 }, /* Thai_khokhuat */ + { 0x00000da4, 24587 }, /* Thai_khokhwai */ + { 0x00000da5, 24560 }, /* Thai_khokhon */ + { 0x00000da6, 24601 }, /* Thai_khorakhang */ + { 0x00000da7, 24930 }, /* Thai_ngongu */ + { 0x00000da8, 24423 }, /* Thai_chochan */ + { 0x00000da9, 24450 }, /* Thai_choching */ + { 0x00000daa, 24436 }, /* Thai_chochang */ + { 0x00000dab, 25291 }, /* Thai_soso */ + { 0x00000dac, 24464 }, /* Thai_chochoe */ + { 0x00000dad, 25467 }, /* Thai_yoying */ + { 0x00000dae, 24477 }, /* Thai_dochada */ + { 0x00000daf, 25420 }, /* Thai_topatak */ + { 0x00000db0, 25379 }, /* Thai_thothan */ + { 0x00000db1, 25329 }, /* Thai_thonangmontho */ + { 0x00000db2, 25348 }, /* Thai_thophuthao */ + { 0x00000db3, 24956 }, /* Thai_nonen */ + { 0x00000db4, 24490 }, /* Thai_dodek */ + { 0x00000db5, 25433 }, /* Thai_totao */ + { 0x00000db6, 25406 }, /* Thai_thothung */ + { 0x00000db7, 25364 }, /* Thai_thothahan */ + { 0x00000db8, 25392 }, /* Thai_thothong */ + { 0x00000db9, 24967 }, /* Thai_nonu */ + { 0x00000dba, 24409 }, /* Thai_bobaimai */ + { 0x00000dbb, 25058 }, /* Thai_popla */ + { 0x00000dbc, 25028 }, /* Thai_phophung */ + { 0x00000dbd, 24501 }, /* Thai_fofa */ + { 0x00000dbe, 25015 }, /* Thai_phophan */ + { 0x00000dbf, 24511 }, /* Thai_fofan */ + { 0x00000dc0, 25042 }, /* Thai_phosamphao */ + { 0x00000dc1, 24920 }, /* Thai_moma */ + { 0x00000dc2, 25456 }, /* Thai_yoyak */ + { 0x00000dc3, 25069 }, /* Thai_rorua */ + { 0x00000dc4, 25080 }, /* Thai_ru */ + { 0x00000dc5, 24780 }, /* Thai_loling */ + { 0x00000dc6, 24792 }, /* Thai_lu */ + { 0x00000dc7, 25444 }, /* Thai_wowaen */ + { 0x00000dc8, 25279 }, /* Thai_sosala */ + { 0x00000dc9, 25267 }, /* Thai_sorusi */ + { 0x00000dca, 25301 }, /* Thai_sosua */ + { 0x00000dcb, 24522 }, /* Thai_hohip */ + { 0x00000dcc, 24767 }, /* Thai_lochula */ + { 0x00000dcd, 24977 }, /* Thai_oang */ + { 0x00000dce, 24533 }, /* Thai_honokhuk */ + { 0x00000dcf, 24987 }, /* Thai_paiyannoi */ + { 0x00000dd0, 25088 }, /* Thai_saraa */ + { 0x00000dd1, 24828 }, /* Thai_maihanakat */ + { 0x00000dd2, 25099 }, /* Thai_saraaa */ + { 0x00000dd3, 25162 }, /* Thai_saraam */ + { 0x00000dd4, 25185 }, /* Thai_sarai */ + { 0x00000dd5, 25196 }, /* Thai_saraii */ + { 0x00000dd6, 25230 }, /* Thai_saraue */ + { 0x00000dd7, 25242 }, /* Thai_sarauee */ + { 0x00000dd8, 25219 }, /* Thai_sarau */ + { 0x00000dd9, 25255 }, /* Thai_sarauu */ + { 0x00000dda, 25002 }, /* Thai_phinthu */ + { 0x00000dde, 24844 }, /* Thai_maihanakat_maitho */ + { 0x00000ddf, 24399 }, /* Thai_baht */ + { 0x00000de0, 25174 }, /* Thai_sarae */ + { 0x00000de1, 25111 }, /* Thai_saraae */ + { 0x00000de2, 25208 }, /* Thai_sarao */ + { 0x00000de3, 25143 }, /* Thai_saraaimaimuan */ + { 0x00000de4, 25123 }, /* Thai_saraaimaimalai */ + { 0x00000de5, 24628 }, /* Thai_lakkhangyao */ + { 0x00000de6, 24906 }, /* Thai_maiyamok */ + { 0x00000de7, 24867 }, /* Thai_maitaikhu */ + { 0x00000de8, 24817 }, /* Thai_maiek */ + { 0x00000de9, 24882 }, /* Thai_maitho */ + { 0x00000dea, 24894 }, /* Thai_maitri */ + { 0x00000deb, 24800 }, /* Thai_maichattawa */ + { 0x00000dec, 25312 }, /* Thai_thanthakhat */ + { 0x00000ded, 24942 }, /* Thai_nikhahit */ + { 0x00000df0, 24755 }, /* Thai_leksun */ + { 0x00000df1, 24693 }, /* Thai_leknung */ + { 0x00000df2, 24742 }, /* Thai_leksong */ + { 0x00000df3, 24719 }, /* Thai_leksam */ + { 0x00000df4, 24731 }, /* Thai_leksi */ + { 0x00000df5, 24658 }, /* Thai_lekha */ + { 0x00000df6, 24669 }, /* Thai_lekhok */ + { 0x00000df7, 24645 }, /* Thai_lekchet */ + { 0x00000df8, 24706 }, /* Thai_lekpaet */ + { 0x00000df9, 24681 }, /* Thai_lekkao */ + { 0x00000ea1, 15181 }, /* Hangul_Kiyeog */ + { 0x00000ea2, 15726 }, /* Hangul_SsangKiyeog */ + { 0x00000ea3, 15195 }, /* Hangul_KiyeogSios */ + { 0x00000ea4, 15276 }, /* Hangul_Nieun */ + { 0x00000ea5, 15307 }, /* Hangul_NieunJieuj */ + { 0x00000ea6, 15289 }, /* Hangul_NieunHieuh */ + { 0x00000ea7, 14488 }, /* Hangul_Dikeud */ + { 0x00000ea8, 15689 }, /* Hangul_SsangDikeud */ + { 0x00000ea9, 15461 }, /* Hangul_Rieul */ + { 0x00000eaa, 15492 }, /* Hangul_RieulKiyeog */ + { 0x00000eab, 15511 }, /* Hangul_RieulMieum */ + { 0x00000eac, 15548 }, /* Hangul_RieulPieub */ + { 0x00000ead, 15566 }, /* Hangul_RieulSios */ + { 0x00000eae, 15583 }, /* Hangul_RieulTieut */ + { 0x00000eaf, 15529 }, /* Hangul_RieulPhieuf */ + { 0x00000eb0, 15474 }, /* Hangul_RieulHieuh */ + { 0x00000eb1, 15238 }, /* Hangul_Mieum */ + { 0x00000eb2, 15373 }, /* Hangul_Pieub */ + { 0x00000eb3, 15745 }, /* Hangul_SsangPieub */ + { 0x00000eb4, 15386 }, /* Hangul_PieubSios */ + { 0x00000eb5, 15662 }, /* Hangul_Sios */ + { 0x00000eb6, 15763 }, /* Hangul_SsangSios */ + { 0x00000eb7, 14577 }, /* Hangul_Ieung */ + { 0x00000eb8, 15154 }, /* Hangul_Jieuj */ + { 0x00000eb9, 15708 }, /* Hangul_SsangJieuj */ + { 0x00000eba, 14458 }, /* Hangul_Cieuc */ + { 0x00000ebb, 15167 }, /* Hangul_Khieuq */ + { 0x00000ebc, 15883 }, /* Hangul_Tieut */ + { 0x00000ebd, 15359 }, /* Hangul_Phieuf */ + { 0x00000ebe, 14555 }, /* Hangul_Hieuh */ + { 0x00000ebf, 14399 }, /* Hangul_A */ + { 0x00000ec0, 14408 }, /* Hangul_AE */ + { 0x00000ec1, 15957 }, /* Hangul_YA */ + { 0x00000ec2, 15967 }, /* Hangul_YAE */ + { 0x00000ec3, 14522 }, /* Hangul_EO */ + { 0x00000ec4, 14502 }, /* Hangul_E */ + { 0x00000ec5, 15988 }, /* Hangul_YEO */ + { 0x00000ec6, 15978 }, /* Hangul_YE */ + { 0x00000ec7, 15325 }, /* Hangul_O */ + { 0x00000ec8, 15905 }, /* Hangul_WA */ + { 0x00000ec9, 15915 }, /* Hangul_WAE */ + { 0x00000eca, 15334 }, /* Hangul_OE */ + { 0x00000ecb, 16028 }, /* Hangul_YO */ + { 0x00000ecc, 15896 }, /* Hangul_U */ + { 0x00000ecd, 15936 }, /* Hangul_WEO */ + { 0x00000ece, 15926 }, /* Hangul_WE */ + { 0x00000ecf, 15947 }, /* Hangul_WI */ + { 0x00000ed0, 16038 }, /* Hangul_YU */ + { 0x00000ed1, 14532 }, /* Hangul_EU */ + { 0x00000ed2, 16018 }, /* Hangul_YI */ + { 0x00000ed3, 14568 }, /* Hangul_I */ + { 0x00000ed4, 14682 }, /* Hangul_J_Kiyeog */ + { 0x00000ed5, 15052 }, /* Hangul_J_SsangKiyeog */ + { 0x00000ed6, 14698 }, /* Hangul_J_KiyeogSios */ + { 0x00000ed7, 14760 }, /* Hangul_J_Nieun */ + { 0x00000ed8, 14795 }, /* Hangul_J_NieunJieuj */ + { 0x00000ed9, 14775 }, /* Hangul_J_NieunHieuh */ + { 0x00000eda, 14605 }, /* Hangul_J_Dikeud */ + { 0x00000edb, 14882 }, /* Hangul_J_Rieul */ + { 0x00000edc, 14917 }, /* Hangul_J_RieulKiyeog */ + { 0x00000edd, 14938 }, /* Hangul_J_RieulMieum */ + { 0x00000ede, 14979 }, /* Hangul_J_RieulPieub */ + { 0x00000edf, 14999 }, /* Hangul_J_RieulSios */ + { 0x00000ee0, 15018 }, /* Hangul_J_RieulTieut */ + { 0x00000ee1, 14958 }, /* Hangul_J_RieulPhieuf */ + { 0x00000ee2, 14897 }, /* Hangul_J_RieulHieuh */ + { 0x00000ee3, 14745 }, /* Hangul_J_Mieum */ + { 0x00000ee4, 14848 }, /* Hangul_J_Pieub */ + { 0x00000ee5, 14863 }, /* Hangul_J_PieubSios */ + { 0x00000ee6, 15038 }, /* Hangul_J_Sios */ + { 0x00000ee7, 15073 }, /* Hangul_J_SsangSios */ + { 0x00000ee8, 14636 }, /* Hangul_J_Ieung */ + { 0x00000ee9, 14651 }, /* Hangul_J_Jieuj */ + { 0x00000eea, 14590 }, /* Hangul_J_Cieuc */ + { 0x00000eeb, 14666 }, /* Hangul_J_Khieuq */ + { 0x00000eec, 15092 }, /* Hangul_J_Tieut */ + { 0x00000eed, 14832 }, /* Hangul_J_Phieuf */ + { 0x00000eee, 14621 }, /* Hangul_J_Hieuh */ + { 0x00000eef, 15601 }, /* Hangul_RieulYeorinHieuh */ + { 0x00000ef0, 15793 }, /* Hangul_SunkyeongeumMieum */ + { 0x00000ef1, 15844 }, /* Hangul_SunkyeongeumPieub */ + { 0x00000ef2, 15344 }, /* Hangul_PanSios */ + { 0x00000ef3, 15213 }, /* Hangul_KkogjiDalrinIeung */ + { 0x00000ef4, 15818 }, /* Hangul_SunkyeongeumPhieuf */ + { 0x00000ef5, 15999 }, /* Hangul_YeorinHieuh */ + { 0x00000ef6, 14418 }, /* Hangul_AraeA */ + { 0x00000ef7, 14431 }, /* Hangul_AraeAE */ + { 0x00000ef8, 14815 }, /* Hangul_J_PanSios */ + { 0x00000ef9, 14718 }, /* Hangul_J_KkogjiDalrinIeung */ + { 0x00000efa, 15107 }, /* Hangul_J_YeorinHieuh */ + { 0x00000eff, 18797 }, /* Korean_Won */ + { 0x000013bc, 20514 }, /* OE */ + { 0x000013bd, 20517 }, /* oe */ + { 0x000013be, 29045 }, /* Ydiaeresis */ + { 0x000020ac, 12090 }, /* EuroSign */ + { 0x0000fd01, 125 }, /* 3270_Duplicate */ + { 0x0000fd02, 195 }, /* 3270_FieldMark */ + { 0x0000fd03, 343 }, /* 3270_Right2 */ + { 0x0000fd04, 245 }, /* 3270_Left2 */ + { 0x0000fd05, 33 }, /* 3270_BackTab */ + { 0x0000fd06, 151 }, /* 3270_EraseEOF */ + { 0x0000fd07, 165 }, /* 3270_EraseInput */ + { 0x0000fd08, 332 }, /* 3270_Reset */ + { 0x0000fd09, 310 }, /* 3270_Quit */ + { 0x0000fd0a, 256 }, /* 3270_PA1 */ + { 0x0000fd0b, 265 }, /* 3270_PA2 */ + { 0x0000fd0c, 274 }, /* 3270_PA3 */ + { 0x0000fd0d, 376 }, /* 3270_Test */ + { 0x0000fd0e, 23 }, /* 3270_Attn */ + { 0x0000fd0f, 74 }, /* 3270_CursorBlink */ + { 0x0000fd10, 8 }, /* 3270_AltCursor */ + { 0x0000fd11, 231 }, /* 3270_KeyClick */ + { 0x0000fd12, 221 }, /* 3270_Jump */ + { 0x0000fd13, 210 }, /* 3270_Ident */ + { 0x0000fd14, 355 }, /* 3270_Rule */ + { 0x0000fd15, 64 }, /* 3270_Copy */ + { 0x0000fd16, 283 }, /* 3270_Play */ + { 0x0000fd17, 365 }, /* 3270_Setup */ + { 0x0000fd18, 320 }, /* 3270_Record */ + { 0x0000fd19, 46 }, /* 3270_ChangeScreen */ + { 0x0000fd1a, 109 }, /* 3270_DeleteWord */ + { 0x0000fd1b, 181 }, /* 3270_ExSelect */ + { 0x0000fd1c, 91 }, /* 3270_CursorSelect */ + { 0x0000fd1d, 293 }, /* 3270_PrintScreen */ + { 0x0000fd1e, 140 }, /* 3270_Enter */ + { 0x0000fe01, 17781 }, /* ISO_Lock */ + { 0x0000fe02, 17664 }, /* ISO_Level2_Latch */ + { 0x0000fe03, 17714 }, /* ISO_Level3_Shift */ + { 0x0000fe04, 17681 }, /* ISO_Level3_Latch */ + { 0x0000fe05, 17698 }, /* ISO_Level3_Lock */ + { 0x0000fe06, 17569 }, /* ISO_Group_Latch */ + { 0x0000fe07, 17585 }, /* ISO_Group_Lock */ + { 0x0000fe08, 17826 }, /* ISO_Next_Group */ + { 0x0000fe09, 17841 }, /* ISO_Next_Group_Lock */ + { 0x0000fe0a, 17950 }, /* ISO_Prev_Group */ + { 0x0000fe0b, 17965 }, /* ISO_Prev_Group_Lock */ + { 0x0000fe0c, 17532 }, /* ISO_First_Group */ + { 0x0000fe0d, 17548 }, /* ISO_First_Group_Lock */ + { 0x0000fe0e, 17616 }, /* ISO_Last_Group */ + { 0x0000fe0f, 17631 }, /* ISO_Last_Group_Lock */ + { 0x0000fe11, 17764 }, /* ISO_Level5_Shift */ + { 0x0000fe12, 17731 }, /* ISO_Level5_Latch */ + { 0x0000fe13, 17748 }, /* ISO_Level5_Lock */ + { 0x0000fe20, 17651 }, /* ISO_Left_Tab */ + { 0x0000fe21, 17809 }, /* ISO_Move_Line_Up */ + { 0x0000fe22, 17790 }, /* ISO_Move_Line_Down */ + { 0x0000fe23, 17883 }, /* ISO_Partial_Line_Up */ + { 0x0000fe24, 17861 }, /* ISO_Partial_Line_Down */ + { 0x0000fe25, 17903 }, /* ISO_Partial_Space_Left */ + { 0x0000fe26, 17926 }, /* ISO_Partial_Space_Right */ + { 0x0000fe27, 18059 }, /* ISO_Set_Margin_Left */ + { 0x0000fe28, 18079 }, /* ISO_Set_Margin_Right */ + { 0x0000fe29, 18010 }, /* ISO_Release_Margin_Left */ + { 0x0000fe2a, 18034 }, /* ISO_Release_Margin_Right */ + { 0x0000fe2b, 17985 }, /* ISO_Release_Both_Margins */ + { 0x0000fe2c, 17470 }, /* ISO_Fast_Cursor_Left */ + { 0x0000fe2d, 17491 }, /* ISO_Fast_Cursor_Right */ + { 0x0000fe2e, 17513 }, /* ISO_Fast_Cursor_Up */ + { 0x0000fe2f, 17449 }, /* ISO_Fast_Cursor_Down */ + { 0x0000fe30, 17372 }, /* ISO_Continuous_Underline */ + { 0x0000fe31, 17397 }, /* ISO_Discontinuous_Underline */ + { 0x0000fe32, 17425 }, /* ISO_Emphasize */ + { 0x0000fe33, 17354 }, /* ISO_Center_Object */ + { 0x0000fe34, 17439 }, /* ISO_Enter */ + { 0x0000fe50, 10858 }, /* dead_grave */ + { 0x0000fe51, 10531 }, /* dead_acute */ + { 0x0000fe52, 10754 }, /* dead_circumflex */ + { 0x0000fe53, 11097 }, /* dead_tilde */ + { 0x0000fe54, 10980 }, /* dead_macron */ + { 0x0000fe55, 10700 }, /* dead_breve */ + { 0x0000fe56, 10455 }, /* dead_abovedot */ + { 0x0000fe57, 10795 }, /* dead_diaeresis */ + { 0x0000fe58, 10493 }, /* dead_abovering */ + { 0x0000fe59, 10810 }, /* dead_doubleacute */ + { 0x0000fe5a, 10730 }, /* dead_caron */ + { 0x0000fe5b, 10741 }, /* dead_cedilla */ + { 0x0000fe5c, 11006 }, /* dead_ogonek */ + { 0x0000fe5d, 10933 }, /* dead_iota */ + { 0x0000fe5e, 11122 }, /* dead_voiced_sound */ + { 0x0000fe5f, 11046 }, /* dead_semivoiced_sound */ + { 0x0000fe60, 10615 }, /* dead_belowdot */ + { 0x0000fe61, 10880 }, /* dead_hook */ + { 0x0000fe62, 10890 }, /* dead_horn */ + { 0x0000fe63, 11085 }, /* dead_stroke */ + { 0x0000fe64, 10439 }, /* dead_abovecomma */ + { 0x0000fe65, 10469 }, /* dead_abovereversedcomma */ + { 0x0000fe66, 10827 }, /* dead_doublegrave */ + { 0x0000fe67, 10646 }, /* dead_belowring */ + { 0x0000fe68, 10629 }, /* dead_belowmacron */ + { 0x0000fe69, 10558 }, /* dead_belowcircumflex */ + { 0x0000fe6a, 10661 }, /* dead_belowtilde */ + { 0x0000fe6b, 10542 }, /* dead_belowbreve */ + { 0x0000fe6c, 10595 }, /* dead_belowdiaeresis */ + { 0x0000fe6d, 10914 }, /* dead_invertedbreve */ + { 0x0000fe6e, 10579 }, /* dead_belowcomma */ + { 0x0000fe6f, 10770 }, /* dead_currency */ + { 0x0000fe70, 583 }, /* AccessX_Enable */ + { 0x0000fe71, 598 }, /* AccessX_Feedback_Enable */ + { 0x0000fe72, 22342 }, /* RepeatKeys_Enable */ + { 0x0000fe73, 23774 }, /* SlowKeys_Enable */ + { 0x0000fe74, 3564 }, /* BounceKeys_Enable */ + { 0x0000fe75, 23836 }, /* StickyKeys_Enable */ + { 0x0000fe76, 19782 }, /* MouseKeys_Enable */ + { 0x0000fe77, 19759 }, /* MouseKeys_Accel_Enable */ + { 0x0000fe78, 21332 }, /* Overlay1_Enable */ + { 0x0000fe79, 21348 }, /* Overlay2_Enable */ + { 0x0000fe7a, 3309 }, /* AudibleBell_Enable */ + { 0x0000fe80, 10425 }, /* dead_a */ + { 0x0000fe81, 10432 }, /* dead_A */ + { 0x0000fe82, 10844 }, /* dead_e */ + { 0x0000fe83, 10851 }, /* dead_E */ + { 0x0000fe84, 10900 }, /* dead_i */ + { 0x0000fe85, 10907 }, /* dead_I */ + { 0x0000fe86, 10992 }, /* dead_o */ + { 0x0000fe87, 10999 }, /* dead_O */ + { 0x0000fe88, 11108 }, /* dead_u */ + { 0x0000fe89, 11115 }, /* dead_U */ + { 0x0000fe8a, 11068 }, /* dead_small_schwa */ + { 0x0000fe8b, 10711 }, /* dead_capital_schwa */ + { 0x0000fe8c, 10869 }, /* dead_greek */ + { 0x0000fe90, 10967 }, /* dead_lowline */ + { 0x0000fe91, 10508 }, /* dead_aboveverticalline */ + { 0x0000fe92, 10677 }, /* dead_belowverticalline */ + { 0x0000fe93, 10943 }, /* dead_longsolidusoverlay */ + { 0x0000fea0, 8594 }, /* ch */ + { 0x0000fea1, 8597 }, /* Ch */ + { 0x0000fea2, 8600 }, /* CH */ + { 0x0000fea3, 8443 }, /* c_h */ + { 0x0000fea4, 8447 }, /* C_h */ + { 0x0000fea5, 8451 }, /* C_H */ + { 0x0000fed0, 12536 }, /* First_Virtual_Screen */ + { 0x0000fed1, 22080 }, /* Prev_Virtual_Screen */ + { 0x0000fed2, 20028 }, /* Next_Virtual_Screen */ + { 0x0000fed4, 19161 }, /* Last_Virtual_Screen */ + { 0x0000fed5, 24382 }, /* Terminate_Server */ + { 0x0000fee0, 21998 }, /* Pointer_Left */ + { 0x0000fee1, 22011 }, /* Pointer_Right */ + { 0x0000fee2, 22025 }, /* Pointer_Up */ + { 0x0000fee3, 21843 }, /* Pointer_Down */ + { 0x0000fee4, 22036 }, /* Pointer_UpLeft */ + { 0x0000fee5, 22051 }, /* Pointer_UpRight */ + { 0x0000fee6, 21856 }, /* Pointer_DownLeft */ + { 0x0000fee7, 21873 }, /* Pointer_DownRight */ + { 0x0000fee8, 21671 }, /* Pointer_Button_Dflt */ + { 0x0000fee9, 21591 }, /* Pointer_Button1 */ + { 0x0000feea, 21607 }, /* Pointer_Button2 */ + { 0x0000feeb, 21623 }, /* Pointer_Button3 */ + { 0x0000feec, 21639 }, /* Pointer_Button4 */ + { 0x0000feed, 21655 }, /* Pointer_Button5 */ + { 0x0000feee, 21781 }, /* Pointer_DblClick_Dflt */ + { 0x0000feef, 21691 }, /* Pointer_DblClick1 */ + { 0x0000fef0, 21709 }, /* Pointer_DblClick2 */ + { 0x0000fef1, 21727 }, /* Pointer_DblClick3 */ + { 0x0000fef2, 21745 }, /* Pointer_DblClick4 */ + { 0x0000fef3, 21763 }, /* Pointer_DblClick5 */ + { 0x0000fef4, 21961 }, /* Pointer_Drag_Dflt */ + { 0x0000fef5, 21891 }, /* Pointer_Drag1 */ + { 0x0000fef6, 21905 }, /* Pointer_Drag2 */ + { 0x0000fef7, 21919 }, /* Pointer_Drag3 */ + { 0x0000fef8, 21933 }, /* Pointer_Drag4 */ + { 0x0000fef9, 21979 }, /* Pointer_EnableKeys */ + { 0x0000fefa, 21572 }, /* Pointer_Accelerate */ + { 0x0000fefb, 21803 }, /* Pointer_DfltBtnNext */ + { 0x0000fefc, 21823 }, /* Pointer_DfltBtnPrev */ + { 0x0000fefd, 21947 }, /* Pointer_Drag5 */ + { 0x0000ff08, 3362 }, /* BackSpace */ + { 0x0000ff09, 24298 }, /* Tab */ + { 0x0000ff0a, 19434 }, /* Linefeed */ + { 0x0000ff0b, 8633 }, /* Clear */ + { 0x0000ff0d, 22366 }, /* Return */ + { 0x0000ff13, 21481 }, /* Pause */ + { 0x0000ff14, 22699 }, /* Scroll_Lock */ + { 0x0000ff15, 24279 }, /* Sys_Req */ + { 0x0000ff1b, 12057 }, /* Escape */ + { 0x0000ff20, 19811 }, /* Multi_key */ + { 0x0000ff21, 18745 }, /* Kanji */ + { 0x0000ff22, 19802 }, /* Muhenkan */ + { 0x0000ff23, 16614 }, /* Henkan_Mode */ + { 0x0000ff24, 22562 }, /* Romaji */ + { 0x0000ff25, 16635 }, /* Hiragana */ + { 0x0000ff26, 18770 }, /* Katakana */ + { 0x0000ff27, 16644 }, /* Hiragana_Katakana */ + { 0x0000ff28, 29161 }, /* Zenkaku */ + { 0x0000ff29, 16048 }, /* Hankaku */ + { 0x0000ff2a, 29169 }, /* Zenkaku_Hankaku */ + { 0x0000ff2b, 25752 }, /* Touroku */ + { 0x0000ff2c, 19698 }, /* Massyo */ + { 0x0000ff2d, 18351 }, /* Kana_Lock */ + { 0x0000ff2e, 18562 }, /* Kana_Shift */ + { 0x0000ff2f, 11779 }, /* Eisu_Shift */ + { 0x0000ff30, 11790 }, /* Eisu_toggle */ + { 0x0000ff31, 14392 }, /* Hangul */ + { 0x0000ff32, 15780 }, /* Hangul_Start */ + { 0x0000ff33, 14511 }, /* Hangul_End */ + { 0x0000ff34, 14542 }, /* Hangul_Hanja */ + { 0x0000ff35, 15128 }, /* Hangul_Jamo */ + { 0x0000ff36, 15625 }, /* Hangul_Romaja */ + { 0x0000ff37, 8654 }, /* Codeinput */ + { 0x0000ff38, 15140 }, /* Hangul_Jeonja */ + { 0x0000ff39, 14445 }, /* Hangul_Banja */ + { 0x0000ff3a, 15420 }, /* Hangul_PreHanja */ + { 0x0000ff3b, 15403 }, /* Hangul_PostHanja */ + { 0x0000ff3c, 23012 }, /* SingleCandidate */ + { 0x0000ff3d, 19821 }, /* MultipleCandidate */ + { 0x0000ff3e, 22100 }, /* PreviousCandidate */ + { 0x0000ff3f, 15674 }, /* Hangul_Special */ + { 0x0000ff50, 16662 }, /* Home */ + { 0x0000ff51, 19244 }, /* Left */ + { 0x0000ff52, 26384 }, /* Up */ + { 0x0000ff53, 22373 }, /* Right */ + { 0x0000ff54, 11327 }, /* Down */ + { 0x0000ff55, 22124 }, /* Prior */ + { 0x0000ff56, 20023 }, /* Next */ + { 0x0000ff57, 11936 }, /* End */ + { 0x0000ff58, 3404 }, /* Begin */ + { 0x0000ff60, 22727 }, /* Select */ + { 0x0000ff61, 22118 }, /* Print */ + { 0x0000ff62, 12117 }, /* Execute */ + { 0x0000ff63, 17284 }, /* Insert */ + { 0x0000ff65, 26357 }, /* Undo */ + { 0x0000ff66, 22326 }, /* Redo */ + { 0x0000ff67, 19705 }, /* Menu */ + { 0x0000ff68, 12531 }, /* Find */ + { 0x0000ff69, 8489 }, /* Cancel */ + { 0x0000ff6a, 16602 }, /* Help */ + { 0x0000ff6b, 8377 }, /* Break */ + { 0x0000ff7e, 19747 }, /* Mode_switch */ + { 0x0000ff7f, 20169 }, /* Num_Lock */ + { 0x0000ff80, 19074 }, /* KP_Space */ + { 0x0000ff89, 19095 }, /* KP_Tab */ + { 0x0000ff8d, 18931 }, /* KP_Enter */ + { 0x0000ff91, 18949 }, /* KP_F1 */ + { 0x0000ff92, 18955 }, /* KP_F2 */ + { 0x0000ff93, 18961 }, /* KP_F3 */ + { 0x0000ff94, 18967 }, /* KP_F4 */ + { 0x0000ff95, 18973 }, /* KP_Home */ + { 0x0000ff96, 18991 }, /* KP_Left */ + { 0x0000ff97, 19102 }, /* KP_Up */ + { 0x0000ff98, 19052 }, /* KP_Right */ + { 0x0000ff99, 18916 }, /* KP_Down */ + { 0x0000ff9a, 19043 }, /* KP_Prior */ + { 0x0000ff9b, 19011 }, /* KP_Next */ + { 0x0000ff9c, 18924 }, /* KP_End */ + { 0x0000ff9d, 18876 }, /* KP_Begin */ + { 0x0000ff9e, 18981 }, /* KP_Insert */ + { 0x0000ff9f, 18896 }, /* KP_Delete */ + { 0x0000ffaa, 18999 }, /* KP_Multiply */ + { 0x0000ffab, 18858 }, /* KP_Add */ + { 0x0000ffac, 19061 }, /* KP_Separator */ + { 0x0000ffad, 19083 }, /* KP_Subtract */ + { 0x0000ffae, 18885 }, /* KP_Decimal */ + { 0x0000ffaf, 18906 }, /* KP_Divide */ + { 0x0000ffb0, 18808 }, /* KP_0 */ + { 0x0000ffb1, 18813 }, /* KP_1 */ + { 0x0000ffb2, 18818 }, /* KP_2 */ + { 0x0000ffb3, 18823 }, /* KP_3 */ + { 0x0000ffb4, 18828 }, /* KP_4 */ + { 0x0000ffb5, 18833 }, /* KP_5 */ + { 0x0000ffb6, 18838 }, /* KP_6 */ + { 0x0000ffb7, 18843 }, /* KP_7 */ + { 0x0000ffb8, 18848 }, /* KP_8 */ + { 0x0000ffb9, 18853 }, /* KP_9 */ + { 0x0000ffbd, 18940 }, /* KP_Equal */ + { 0x0000ffbe, 12159 }, /* F1 */ + { 0x0000ffbf, 12202 }, /* F2 */ + { 0x0000ffc0, 12245 }, /* F3 */ + { 0x0000ffc1, 12272 }, /* F4 */ + { 0x0000ffc2, 12275 }, /* F5 */ + { 0x0000ffc3, 12278 }, /* F6 */ + { 0x0000ffc4, 12281 }, /* F7 */ + { 0x0000ffc5, 12284 }, /* F8 */ + { 0x0000ffc6, 12287 }, /* F9 */ + { 0x0000ffc7, 12162 }, /* F10 */ + { 0x0000ffc8, 12166 }, /* F11 */ + { 0x0000ffc9, 12170 }, /* F12 */ + { 0x0000ffca, 12174 }, /* F13 */ + { 0x0000ffcb, 12178 }, /* F14 */ + { 0x0000ffcc, 12182 }, /* F15 */ + { 0x0000ffcd, 12186 }, /* F16 */ + { 0x0000ffce, 12190 }, /* F17 */ + { 0x0000ffcf, 12194 }, /* F18 */ + { 0x0000ffd0, 12198 }, /* F19 */ + { 0x0000ffd1, 12205 }, /* F20 */ + { 0x0000ffd2, 12209 }, /* F21 */ + { 0x0000ffd3, 12213 }, /* F22 */ + { 0x0000ffd4, 12217 }, /* F23 */ + { 0x0000ffd5, 12221 }, /* F24 */ + { 0x0000ffd6, 12225 }, /* F25 */ + { 0x0000ffd7, 12229 }, /* F26 */ + { 0x0000ffd8, 12233 }, /* F27 */ + { 0x0000ffd9, 12237 }, /* F28 */ + { 0x0000ffda, 12241 }, /* F29 */ + { 0x0000ffdb, 12248 }, /* F30 */ + { 0x0000ffdc, 12252 }, /* F31 */ + { 0x0000ffdd, 12256 }, /* F32 */ + { 0x0000ffde, 12260 }, /* F33 */ + { 0x0000ffdf, 12264 }, /* F34 */ + { 0x0000ffe0, 12268 }, /* F35 */ + { 0x0000ffe1, 22946 }, /* Shift_L */ + { 0x0000ffe2, 22965 }, /* Shift_R */ + { 0x0000ffe3, 8697 }, /* Control_L */ + { 0x0000ffe4, 8707 }, /* Control_R */ + { 0x0000ffe5, 8496 }, /* Caps_Lock */ + { 0x0000ffe6, 22954 }, /* Shift_Lock */ + { 0x0000ffe7, 19710 }, /* Meta_L */ + { 0x0000ffe8, 19717 }, /* Meta_R */ + { 0x0000ffe9, 880 }, /* Alt_L */ + { 0x0000ffea, 886 }, /* Alt_R */ + { 0x0000ffeb, 24263 }, /* Super_L */ + { 0x0000ffec, 24271 }, /* Super_R */ + { 0x0000ffed, 17046 }, /* Hyper_L */ + { 0x0000ffee, 17054 }, /* Hyper_R */ + { 0x0000fff1, 3642 }, /* braille_dot_1 */ + { 0x0000fff2, 3671 }, /* braille_dot_2 */ + { 0x0000fff3, 3685 }, /* braille_dot_3 */ + { 0x0000fff4, 3699 }, /* braille_dot_4 */ + { 0x0000fff5, 3713 }, /* braille_dot_5 */ + { 0x0000fff6, 3727 }, /* braille_dot_6 */ + { 0x0000fff7, 3741 }, /* braille_dot_7 */ + { 0x0000fff8, 3755 }, /* braille_dot_8 */ + { 0x0000fff9, 3769 }, /* braille_dot_9 */ + { 0x0000fffa, 3656 }, /* braille_dot_10 */ + { 0x0000ffff, 11160 }, /* Delete */ + { 0x00ffffff, 26531 }, /* VoidSymbol */ + { 0x0100012c, 17117 }, /* Ibreve */ + { 0x0100012d, 17124 }, /* ibreve */ + { 0x01000174, 26563 }, /* Wcircumflex */ + { 0x01000175, 26575 }, /* wcircumflex */ + { 0x01000176, 29010 }, /* Ycircumflex */ + { 0x01000177, 29022 }, /* ycircumflex */ + { 0x0100018f, 22649 }, /* SCHWA */ + { 0x0100019f, 20218 }, /* Obarred */ + { 0x010001a0, 20553 }, /* Ohorn */ + { 0x010001a1, 20559 }, /* ohorn */ + { 0x010001af, 25997 }, /* Uhorn */ + { 0x010001b0, 26003 }, /* uhorn */ + { 0x010001b5, 29212 }, /* Zstroke */ + { 0x010001b6, 29220 }, /* zstroke */ + { 0x010001b7, 12147 }, /* EZH */ + { 0x010001d1, 20254 }, /* Ocaron */ + { 0x010001d2, 20261 }, /* ocaron */ + { 0x010001e6, 12703 }, /* Gcaron */ + { 0x010001e7, 12710 }, /* gcaron */ + { 0x01000259, 22655 }, /* schwa */ + { 0x01000275, 20226 }, /* obarred */ + { 0x01000292, 12151 }, /* ezh */ + { 0x01000492, 9236 }, /* Cyrillic_GHE_bar */ + { 0x01000493, 9253 }, /* Cyrillic_ghe_bar */ + { 0x01000496, 10274 }, /* Cyrillic_ZHE_descender */ + { 0x01000497, 10297 }, /* Cyrillic_zhe_descender */ + { 0x0100049a, 9528 }, /* Cyrillic_KA_descender */ + { 0x0100049b, 9550 }, /* Cyrillic_ka_descender */ + { 0x0100049c, 9572 }, /* Cyrillic_KA_vertstroke */ + { 0x0100049d, 9595 }, /* Cyrillic_ka_vertstroke */ + { 0x010004a2, 9118 }, /* Cyrillic_EN_descender */ + { 0x010004a3, 9140 }, /* Cyrillic_en_descender */ + { 0x010004ae, 10036 }, /* Cyrillic_U_straight */ + { 0x010004af, 10056 }, /* Cyrillic_u_straight */ + { 0x010004b0, 10076 }, /* Cyrillic_U_straight_bar */ + { 0x010004b1, 10100 }, /* Cyrillic_u_straight_bar */ + { 0x010004b2, 9294 }, /* Cyrillic_HA_descender */ + { 0x010004b3, 9316 }, /* Cyrillic_ha_descender */ + { 0x010004b6, 8854 }, /* Cyrillic_CHE_descender */ + { 0x010004b7, 8877 }, /* Cyrillic_che_descender */ + { 0x010004b8, 8900 }, /* Cyrillic_CHE_vertstroke */ + { 0x010004b9, 8924 }, /* Cyrillic_che_vertstroke */ + { 0x010004ba, 9832 }, /* Cyrillic_SHHA */ + { 0x010004bb, 9846 }, /* Cyrillic_shha */ + { 0x010004d8, 9746 }, /* Cyrillic_SCHWA */ + { 0x010004d9, 9761 }, /* Cyrillic_schwa */ + { 0x010004e2, 9396 }, /* Cyrillic_I_macron */ + { 0x010004e3, 9414 }, /* Cyrillic_i_macron */ + { 0x010004e8, 9692 }, /* Cyrillic_O_bar */ + { 0x010004e9, 9707 }, /* Cyrillic_o_bar */ + { 0x010004ee, 10000 }, /* Cyrillic_U_macron */ + { 0x010004ef, 10018 }, /* Cyrillic_u_macron */ + { 0x01000531, 2124 }, /* Armenian_AYB */ + { 0x01000532, 2150 }, /* Armenian_BEN */ + { 0x01000533, 2374 }, /* Armenian_GIM */ + { 0x01000534, 2215 }, /* Armenian_DA */ + { 0x01000535, 3164 }, /* Armenian_YECH */ + { 0x01000536, 3210 }, /* Armenian_ZA */ + { 0x01000537, 2265 }, /* Armenian_E */ + { 0x01000538, 2100 }, /* Armenian_AT */ + { 0x01000539, 2964 }, /* Armenian_TO */ + { 0x0100053a, 3234 }, /* Armenian_ZHE */ + { 0x0100053b, 2464 }, /* Armenian_INI */ + { 0x0100053c, 2611 }, /* Armenian_LYUN */ + { 0x0100053d, 2564 }, /* Armenian_KHE */ + { 0x0100053e, 2988 }, /* Armenian_TSA */ + { 0x0100053f, 2538 }, /* Armenian_KEN */ + { 0x01000540, 2424 }, /* Armenian_HO */ + { 0x01000541, 2239 }, /* Armenian_DZA */ + { 0x01000542, 2346 }, /* Armenian_GHAT */ + { 0x01000543, 2936 }, /* Armenian_TCHE */ + { 0x01000544, 2639 }, /* Armenian_MEN */ + { 0x01000545, 2400 }, /* Armenian_HI */ + { 0x01000546, 2665 }, /* Armenian_NU */ + { 0x01000547, 2894 }, /* Armenian_SHA */ + { 0x01000548, 3112 }, /* Armenian_VO */ + { 0x01000549, 2189 }, /* Armenian_CHA */ + { 0x0100054a, 2727 }, /* Armenian_PE */ + { 0x0100054b, 2490 }, /* Armenian_JE */ + { 0x0100054c, 2797 }, /* Armenian_RA */ + { 0x0100054d, 2845 }, /* Armenian_SE */ + { 0x0100054e, 3086 }, /* Armenian_VEV */ + { 0x0100054f, 3040 }, /* Armenian_TYUN */ + { 0x01000550, 2821 }, /* Armenian_RE */ + { 0x01000551, 3014 }, /* Armenian_TSO */ + { 0x01000552, 3136 }, /* Armenian_VYUN */ + { 0x01000553, 2751 }, /* Armenian_PYUR */ + { 0x01000554, 2514 }, /* Armenian_KE */ + { 0x01000555, 2689 }, /* Armenian_O */ + { 0x01000556, 2303 }, /* Armenian_FE */ + { 0x0100055a, 2080 }, /* Armenian_apostrophe */ + { 0x0100055b, 2048 }, /* Armenian_accent */ + { 0x0100055c, 2287 }, /* Armenian_exclam */ + { 0x0100055d, 2869 }, /* Armenian_separation_mark */ + { 0x0100055e, 2779 }, /* Armenian_question */ + { 0x01000561, 2137 }, /* Armenian_ayb */ + { 0x01000562, 2163 }, /* Armenian_ben */ + { 0x01000563, 2387 }, /* Armenian_gim */ + { 0x01000564, 2227 }, /* Armenian_da */ + { 0x01000565, 3178 }, /* Armenian_yech */ + { 0x01000566, 3222 }, /* Armenian_za */ + { 0x01000567, 2276 }, /* Armenian_e */ + { 0x01000568, 2112 }, /* Armenian_at */ + { 0x01000569, 2976 }, /* Armenian_to */ + { 0x0100056a, 3247 }, /* Armenian_zhe */ + { 0x0100056b, 2477 }, /* Armenian_ini */ + { 0x0100056c, 2625 }, /* Armenian_lyun */ + { 0x0100056d, 2577 }, /* Armenian_khe */ + { 0x0100056e, 3001 }, /* Armenian_tsa */ + { 0x0100056f, 2551 }, /* Armenian_ken */ + { 0x01000570, 2436 }, /* Armenian_ho */ + { 0x01000571, 2252 }, /* Armenian_dza */ + { 0x01000572, 2360 }, /* Armenian_ghat */ + { 0x01000573, 2950 }, /* Armenian_tche */ + { 0x01000574, 2652 }, /* Armenian_men */ + { 0x01000575, 2412 }, /* Armenian_hi */ + { 0x01000576, 2677 }, /* Armenian_nu */ + { 0x01000577, 2907 }, /* Armenian_sha */ + { 0x01000578, 3124 }, /* Armenian_vo */ + { 0x01000579, 2202 }, /* Armenian_cha */ + { 0x0100057a, 2739 }, /* Armenian_pe */ + { 0x0100057b, 2502 }, /* Armenian_je */ + { 0x0100057c, 2809 }, /* Armenian_ra */ + { 0x0100057d, 2857 }, /* Armenian_se */ + { 0x0100057e, 3099 }, /* Armenian_vev */ + { 0x0100057f, 3054 }, /* Armenian_tyun */ + { 0x01000580, 2833 }, /* Armenian_re */ + { 0x01000581, 3027 }, /* Armenian_tso */ + { 0x01000582, 3150 }, /* Armenian_vyun */ + { 0x01000583, 2765 }, /* Armenian_pyur */ + { 0x01000584, 2526 }, /* Armenian_ke */ + { 0x01000585, 2700 }, /* Armenian_o */ + { 0x01000586, 2315 }, /* Armenian_fe */ + { 0x01000587, 2590 }, /* Armenian_ligature_ew */ + { 0x01000589, 2327 }, /* Armenian_full_stop */ + { 0x0100058a, 2448 }, /* Armenian_hyphen */ + { 0x01000653, 1580 }, /* Arabic_madda_above */ + { 0x01000654, 1316 }, /* Arabic_hamza_above */ + { 0x01000655, 1335 }, /* Arabic_hamza_below */ + { 0x01000660, 966 }, /* Arabic_0 */ + { 0x01000661, 975 }, /* Arabic_1 */ + { 0x01000662, 984 }, /* Arabic_2 */ + { 0x01000663, 993 }, /* Arabic_3 */ + { 0x01000664, 1002 }, /* Arabic_4 */ + { 0x01000665, 1011 }, /* Arabic_5 */ + { 0x01000666, 1020 }, /* Arabic_6 */ + { 0x01000667, 1029 }, /* Arabic_7 */ + { 0x01000668, 1038 }, /* Arabic_8 */ + { 0x01000669, 1047 }, /* Arabic_9 */ + { 0x0100066a, 1672 }, /* Arabic_percent */ + { 0x01000670, 1821 }, /* Arabic_superscript_alef */ + { 0x01000679, 1951 }, /* Arabic_tteh */ + { 0x0100067e, 1661 }, /* Arabic_peh */ + { 0x01000686, 1885 }, /* Arabic_tcheh */ + { 0x01000688, 1173 }, /* Arabic_ddal */ + { 0x01000691, 1729 }, /* Arabic_rreh */ + { 0x01000698, 1493 }, /* Arabic_jeh */ + { 0x010006a4, 1963 }, /* Arabic_veh */ + { 0x010006a9, 1544 }, /* Arabic_keheh */ + { 0x010006af, 1258 }, /* Arabic_gaf */ + { 0x010006ba, 1642 }, /* Arabic_noon_ghunna */ + { 0x010006be, 1442 }, /* Arabic_heh_doachashmee */ + { 0x010006c1, 1465 }, /* Arabic_heh_goal */ + { 0x010006cc, 12390 }, /* Farsi_yeh */ + { 0x010006d2, 1996 }, /* Arabic_yeh_baree */ + { 0x010006d4, 1242 }, /* Arabic_fullstop */ + { 0x010006f0, 12310 }, /* Farsi_0 */ + { 0x010006f1, 12318 }, /* Farsi_1 */ + { 0x010006f2, 12326 }, /* Farsi_2 */ + { 0x010006f3, 12334 }, /* Farsi_3 */ + { 0x010006f4, 12342 }, /* Farsi_4 */ + { 0x010006f5, 12350 }, /* Farsi_5 */ + { 0x010006f6, 12358 }, /* Farsi_6 */ + { 0x010006f7, 12366 }, /* Farsi_7 */ + { 0x010006f8, 12374 }, /* Farsi_8 */ + { 0x010006f9, 12382 }, /* Farsi_9 */ + { 0x01000d82, 23484 }, /* Sinh_ng */ + { 0x01000d83, 23278 }, /* Sinh_h2 */ + { 0x01000d85, 23047 }, /* Sinh_a */ + { 0x01000d86, 23054 }, /* Sinh_aa */ + { 0x01000d87, 23071 }, /* Sinh_ae */ + { 0x01000d88, 23088 }, /* Sinh_aee */ + { 0x01000d89, 23294 }, /* Sinh_i */ + { 0x01000d8a, 23309 }, /* Sinh_ii */ + { 0x01000d8b, 23695 }, /* Sinh_u */ + { 0x01000d8c, 23710 }, /* Sinh_uu */ + { 0x01000d8d, 23594 }, /* Sinh_ri */ + { 0x01000d8e, 23602 }, /* Sinh_rii */ + { 0x01000d8f, 23403 }, /* Sinh_lu */ + { 0x01000d90, 23420 }, /* Sinh_luu */ + { 0x01000d91, 23221 }, /* Sinh_e */ + { 0x01000d92, 23236 }, /* Sinh_ee */ + { 0x01000d93, 23107 }, /* Sinh_ai */ + { 0x01000d94, 23537 }, /* Sinh_o */ + { 0x01000d95, 23552 }, /* Sinh_oo */ + { 0x01000d96, 23132 }, /* Sinh_au */ + { 0x01000d9a, 23353 }, /* Sinh_ka */ + { 0x01000d9b, 23361 }, /* Sinh_kha */ + { 0x01000d9c, 23261 }, /* Sinh_ga */ + { 0x01000d9d, 23269 }, /* Sinh_gha */ + { 0x01000d9e, 23492 }, /* Sinh_ng2 */ + { 0x01000d9f, 23501 }, /* Sinh_nga */ + { 0x01000da0, 23166 }, /* Sinh_ca */ + { 0x01000da1, 23174 }, /* Sinh_cha */ + { 0x01000da2, 23326 }, /* Sinh_ja */ + { 0x01000da3, 23334 }, /* Sinh_jha */ + { 0x01000da4, 23528 }, /* Sinh_nya */ + { 0x01000da5, 23343 }, /* Sinh_jnya */ + { 0x01000da6, 23510 }, /* Sinh_nja */ + { 0x01000da7, 23676 }, /* Sinh_tta */ + { 0x01000da8, 23685 }, /* Sinh_ttha */ + { 0x01000da9, 23183 }, /* Sinh_dda */ + { 0x01000daa, 23192 }, /* Sinh_ddha */ + { 0x01000dab, 23519 }, /* Sinh_nna */ + { 0x01000dac, 23464 }, /* Sinh_ndda */ + { 0x01000dad, 23657 }, /* Sinh_tha */ + { 0x01000dae, 23666 }, /* Sinh_thha */ + { 0x01000daf, 23202 }, /* Sinh_dha */ + { 0x01000db0, 23211 }, /* Sinh_dhha */ + { 0x01000db1, 23456 }, /* Sinh_na */ + { 0x01000db3, 23474 }, /* Sinh_ndha */ + { 0x01000db4, 23569 }, /* Sinh_pa */ + { 0x01000db5, 23577 }, /* Sinh_pha */ + { 0x01000db6, 23149 }, /* Sinh_ba */ + { 0x01000db7, 23157 }, /* Sinh_bha */ + { 0x01000db8, 23439 }, /* Sinh_ma */ + { 0x01000db9, 23447 }, /* Sinh_mba */ + { 0x01000dba, 23735 }, /* Sinh_ya */ + { 0x01000dbb, 23586 }, /* Sinh_ra */ + { 0x01000dbd, 23386 }, /* Sinh_la */ + { 0x01000dc0, 23727 }, /* Sinh_va */ + { 0x01000dc1, 23638 }, /* Sinh_sha */ + { 0x01000dc2, 23647 }, /* Sinh_ssha */ + { 0x01000dc3, 23630 }, /* Sinh_sa */ + { 0x01000dc4, 23286 }, /* Sinh_ha */ + { 0x01000dc5, 23394 }, /* Sinh_lla */ + { 0x01000dc6, 23253 }, /* Sinh_fa */ + { 0x01000dca, 23124 }, /* Sinh_al */ + { 0x01000dcf, 23062 }, /* Sinh_aa2 */ + { 0x01000dd0, 23079 }, /* Sinh_ae2 */ + { 0x01000dd1, 23097 }, /* Sinh_aee2 */ + { 0x01000dd2, 23301 }, /* Sinh_i2 */ + { 0x01000dd3, 23317 }, /* Sinh_ii2 */ + { 0x01000dd4, 23702 }, /* Sinh_u2 */ + { 0x01000dd6, 23718 }, /* Sinh_uu2 */ + { 0x01000dd8, 23611 }, /* Sinh_ru2 */ + { 0x01000dd9, 23228 }, /* Sinh_e2 */ + { 0x01000dda, 23244 }, /* Sinh_ee2 */ + { 0x01000ddb, 23115 }, /* Sinh_ai2 */ + { 0x01000ddc, 23544 }, /* Sinh_o2 */ + { 0x01000ddd, 23560 }, /* Sinh_oo2 */ + { 0x01000dde, 23140 }, /* Sinh_au2 */ + { 0x01000ddf, 23411 }, /* Sinh_lu2 */ + { 0x01000df2, 23620 }, /* Sinh_ruu2 */ + { 0x01000df3, 23429 }, /* Sinh_luu2 */ + { 0x01000df4, 23370 }, /* Sinh_kunddaliya */ + { 0x010010d0, 12759 }, /* Georgian_an */ + { 0x010010d1, 12771 }, /* Georgian_ban */ + { 0x010010d2, 12875 }, /* Georgian_gan */ + { 0x010010d3, 12838 }, /* Georgian_don */ + { 0x010010d4, 12851 }, /* Georgian_en */ + { 0x010010d5, 13201 }, /* Georgian_vin */ + { 0x010010d6, 13239 }, /* Georgian_zen */ + { 0x010010d7, 13163 }, /* Georgian_tan */ + { 0x010010d8, 12966 }, /* Georgian_in */ + { 0x010010d9, 13005 }, /* Georgian_kan */ + { 0x010010da, 13032 }, /* Georgian_las */ + { 0x010010db, 13045 }, /* Georgian_man */ + { 0x010010dc, 13058 }, /* Georgian_nar */ + { 0x010010dd, 13071 }, /* Georgian_on */ + { 0x010010de, 13083 }, /* Georgian_par */ + { 0x010010df, 13252 }, /* Georgian_zhar */ + { 0x010010e0, 13123 }, /* Georgian_rae */ + { 0x010010e1, 13136 }, /* Georgian_san */ + { 0x010010e2, 13176 }, /* Georgian_tar */ + { 0x010010e3, 13189 }, /* Georgian_un */ + { 0x010010e4, 13096 }, /* Georgian_phar */ + { 0x010010e5, 13018 }, /* Georgian_khar */ + { 0x010010e6, 12888 }, /* Georgian_ghan */ + { 0x010010e7, 13110 }, /* Georgian_qar */ + { 0x010010e8, 13149 }, /* Georgian_shin */ + { 0x010010e9, 12811 }, /* Georgian_chin */ + { 0x010010ea, 12784 }, /* Georgian_can */ + { 0x010010eb, 12992 }, /* Georgian_jil */ + { 0x010010ec, 12825 }, /* Georgian_cil */ + { 0x010010ed, 12797 }, /* Georgian_char */ + { 0x010010ee, 13226 }, /* Georgian_xan */ + { 0x010010ef, 12978 }, /* Georgian_jhan */ + { 0x010010f0, 12902 }, /* Georgian_hae */ + { 0x010010f1, 12928 }, /* Georgian_he */ + { 0x010010f2, 12940 }, /* Georgian_hie */ + { 0x010010f3, 13214 }, /* Georgian_we */ + { 0x010010f4, 12915 }, /* Georgian_har */ + { 0x010010f5, 12953 }, /* Georgian_hoe */ + { 0x010010f6, 12863 }, /* Georgian_fi */ + { 0x01001e02, 3332 }, /* Babovedot */ + { 0x01001e03, 3342 }, /* babovedot */ + { 0x01001e0a, 10324 }, /* Dabovedot */ + { 0x01001e0b, 10334 }, /* dabovedot */ + { 0x01001e1e, 12290 }, /* Fabovedot */ + { 0x01001e1f, 12300 }, /* fabovedot */ + { 0x01001e36, 19192 }, /* Lbelowdot */ + { 0x01001e37, 19202 }, /* lbelowdot */ + { 0x01001e40, 19537 }, /* Mabovedot */ + { 0x01001e41, 19547 }, /* mabovedot */ + { 0x01001e56, 21377 }, /* Pabovedot */ + { 0x01001e57, 21387 }, /* pabovedot */ + { 0x01001e60, 22583 }, /* Sabovedot */ + { 0x01001e61, 22593 }, /* sabovedot */ + { 0x01001e6a, 24302 }, /* Tabovedot */ + { 0x01001e6b, 24312 }, /* tabovedot */ + { 0x01001e80, 26609 }, /* Wgrave */ + { 0x01001e81, 26616 }, /* wgrave */ + { 0x01001e82, 26549 }, /* Wacute */ + { 0x01001e83, 26556 }, /* wacute */ + { 0x01001e84, 26587 }, /* Wdiaeresis */ + { 0x01001e85, 26598 }, /* wdiaeresis */ + { 0x01001e8a, 26635 }, /* Xabovedot */ + { 0x01001e8b, 26645 }, /* xabovedot */ + { 0x01001ea0, 416 }, /* Abelowdot */ + { 0x01001ea1, 426 }, /* abelowdot */ + { 0x01001ea2, 868 }, /* Ahook */ + { 0x01001ea3, 874 }, /* ahook */ + { 0x01001ea4, 646 }, /* Acircumflexacute */ + { 0x01001ea5, 663 }, /* acircumflexacute */ + { 0x01001ea6, 720 }, /* Acircumflexgrave */ + { 0x01001ea7, 737 }, /* acircumflexgrave */ + { 0x01001ea8, 754 }, /* Acircumflexhook */ + { 0x01001ea9, 770 }, /* acircumflexhook */ + { 0x01001eaa, 786 }, /* Acircumflextilde */ + { 0x01001eab, 803 }, /* acircumflextilde */ + { 0x01001eac, 680 }, /* Acircumflexbelowdot */ + { 0x01001ead, 700 }, /* acircumflexbelowdot */ + { 0x01001eae, 459 }, /* Abreveacute */ + { 0x01001eaf, 471 }, /* abreveacute */ + { 0x01001eb0, 513 }, /* Abrevegrave */ + { 0x01001eb1, 525 }, /* abrevegrave */ + { 0x01001eb2, 537 }, /* Abrevehook */ + { 0x01001eb3, 548 }, /* abrevehook */ + { 0x01001eb4, 559 }, /* Abrevetilde */ + { 0x01001eb5, 571 }, /* abrevetilde */ + { 0x01001eb6, 483 }, /* Abrevebelowdot */ + { 0x01001eb7, 498 }, /* abrevebelowdot */ + { 0x01001eb8, 11462 }, /* Ebelowdot */ + { 0x01001eb9, 11472 }, /* ebelowdot */ + { 0x01001eba, 11738 }, /* Ehook */ + { 0x01001ebb, 11744 }, /* ehook */ + { 0x01001ebc, 12076 }, /* Etilde */ + { 0x01001ebd, 12083 }, /* etilde */ + { 0x01001ebe, 11520 }, /* Ecircumflexacute */ + { 0x01001ebf, 11537 }, /* ecircumflexacute */ + { 0x01001ec0, 11594 }, /* Ecircumflexgrave */ + { 0x01001ec1, 11611 }, /* ecircumflexgrave */ + { 0x01001ec2, 11628 }, /* Ecircumflexhook */ + { 0x01001ec3, 11644 }, /* ecircumflexhook */ + { 0x01001ec4, 11660 }, /* Ecircumflextilde */ + { 0x01001ec5, 11677 }, /* ecircumflextilde */ + { 0x01001ec6, 11554 }, /* Ecircumflexbelowdot */ + { 0x01001ec7, 11574 }, /* ecircumflexbelowdot */ + { 0x01001ec8, 17219 }, /* Ihook */ + { 0x01001ec9, 17225 }, /* ihook */ + { 0x01001eca, 17097 }, /* Ibelowdot */ + { 0x01001ecb, 17107 }, /* ibelowdot */ + { 0x01001ecc, 20234 }, /* Obelowdot */ + { 0x01001ecd, 20244 }, /* obelowdot */ + { 0x01001ece, 20541 }, /* Ohook */ + { 0x01001ecf, 20547 }, /* ohook */ + { 0x01001ed0, 20292 }, /* Ocircumflexacute */ + { 0x01001ed1, 20309 }, /* ocircumflexacute */ + { 0x01001ed2, 20366 }, /* Ocircumflexgrave */ + { 0x01001ed3, 20383 }, /* ocircumflexgrave */ + { 0x01001ed4, 20400 }, /* Ocircumflexhook */ + { 0x01001ed5, 20416 }, /* ocircumflexhook */ + { 0x01001ed6, 20432 }, /* Ocircumflextilde */ + { 0x01001ed7, 20449 }, /* ocircumflextilde */ + { 0x01001ed8, 20326 }, /* Ocircumflexbelowdot */ + { 0x01001ed9, 20346 }, /* ocircumflexbelowdot */ + { 0x01001eda, 20565 }, /* Ohornacute */ + { 0x01001edb, 20576 }, /* ohornacute */ + { 0x01001edc, 20615 }, /* Ohorngrave */ + { 0x01001edd, 20626 }, /* ohorngrave */ + { 0x01001ede, 20637 }, /* Ohornhook */ + { 0x01001edf, 20647 }, /* ohornhook */ + { 0x01001ee0, 20657 }, /* Ohorntilde */ + { 0x01001ee1, 20668 }, /* ohorntilde */ + { 0x01001ee2, 20587 }, /* Ohornbelowdot */ + { 0x01001ee3, 20601 }, /* ohornbelowdot */ + { 0x01001ee4, 25865 }, /* Ubelowdot */ + { 0x01001ee5, 25875 }, /* ubelowdot */ + { 0x01001ee6, 25985 }, /* Uhook */ + { 0x01001ee7, 25991 }, /* uhook */ + { 0x01001ee8, 26009 }, /* Uhornacute */ + { 0x01001ee9, 26020 }, /* uhornacute */ + { 0x01001eea, 26059 }, /* Uhorngrave */ + { 0x01001eeb, 26070 }, /* uhorngrave */ + { 0x01001eec, 26081 }, /* Uhornhook */ + { 0x01001eed, 26091 }, /* uhornhook */ + { 0x01001eee, 26101 }, /* Uhorntilde */ + { 0x01001eef, 26112 }, /* uhorntilde */ + { 0x01001ef0, 26031 }, /* Uhornbelowdot */ + { 0x01001ef1, 26045 }, /* uhornbelowdot */ + { 0x01001ef2, 29060 }, /* Ygrave */ + { 0x01001ef3, 29067 }, /* ygrave */ + { 0x01001ef4, 28990 }, /* Ybelowdot */ + { 0x01001ef5, 29000 }, /* ybelowdot */ + { 0x01001ef6, 29074 }, /* Yhook */ + { 0x01001ef7, 29080 }, /* yhook */ + { 0x01001ef8, 29086 }, /* Ytilde */ + { 0x01001ef9, 29093 }, /* ytilde */ + { 0x01002070, 29199 }, /* zerosuperior */ + { 0x01002074, 12632 }, /* foursuperior */ + { 0x01002075, 12594 }, /* fivesuperior */ + { 0x01002076, 23756 }, /* sixsuperior */ + { 0x01002077, 22932 }, /* sevensuperior */ + { 0x01002078, 11765 }, /* eightsuperior */ + { 0x01002079, 20062 }, /* ninesuperior */ + { 0x01002080, 29185 }, /* zerosubscript */ + { 0x01002081, 20742 }, /* onesubscript */ + { 0x01002082, 25812 }, /* twosubscript */ + { 0x01002083, 25556 }, /* threesubscript */ + { 0x01002084, 12618 }, /* foursubscript */ + { 0x01002085, 12580 }, /* fivesubscript */ + { 0x01002086, 23743 }, /* sixsubscript */ + { 0x01002087, 22917 }, /* sevensubscript */ + { 0x01002088, 11750 }, /* eightsubscript */ + { 0x01002089, 20048 }, /* ninesubscript */ + { 0x010020a0, 11694 }, /* EcuSign */ + { 0x010020a1, 8670 }, /* ColonSign */ + { 0x010020a2, 8744 }, /* CruzeiroSign */ + { 0x010020a3, 12416 }, /* FFrancSign */ + { 0x010020a4, 19448 }, /* LiraSign */ + { 0x010020a5, 19724 }, /* MillSign */ + { 0x010020a6, 19967 }, /* NairaSign */ + { 0x010020a7, 21526 }, /* PesetaSign */ + { 0x010020a8, 22569 }, /* RupeeSign */ + { 0x010020a9, 26623 }, /* WonSign */ + { 0x010020aa, 20009 }, /* NewSheqelSign */ + { 0x010020ab, 11258 }, /* DongSign */ + { 0x01002202, 21446 }, /* partdifferential */ + { 0x01002205, 11919 }, /* emptyset */ + { 0x01002208, 11802 }, /* elementof */ + { 0x01002209, 20112 }, /* notelementof */ + { 0x0100220b, 8686 }, /* containsas */ + { 0x0100221a, 23809 }, /* squareroot */ + { 0x0100221b, 8757 }, /* cuberoot */ + { 0x0100221c, 12645 }, /* fourthroot */ + { 0x0100222c, 11232 }, /* dintegral */ + { 0x0100222d, 25585 }, /* tintegral */ + { 0x01002235, 3396 }, /* because */ + { 0x01002247, 20100 }, /* notapproxeq */ + { 0x01002248, 945 }, /* approxeq */ + { 0x01002262, 20134 }, /* notidentical */ + { 0x01002263, 23854 }, /* stricteq */ + { 0x01002800, 3628 }, /* braille_blank */ + { 0x01002801, 3783 }, /* braille_dots_1 */ + { 0x01002802, 6151 }, /* braille_dots_2 */ + { 0x01002803, 3798 }, /* braille_dots_12 */ + { 0x01002804, 7303 }, /* braille_dots_3 */ + { 0x01002805, 5014 }, /* braille_dots_13 */ + { 0x01002806, 6166 }, /* braille_dots_23 */ + { 0x01002807, 3814 }, /* braille_dots_123 */ + { 0x01002808, 7863 }, /* braille_dots_4 */ + { 0x01002809, 5606 }, /* braille_dots_14 */ + { 0x0100280a, 6758 }, /* braille_dots_24 */ + { 0x0100280b, 4438 }, /* braille_dots_124 */ + { 0x0100280c, 7318 }, /* braille_dots_34 */ + { 0x0100280d, 5030 }, /* braille_dots_134 */ + { 0x0100280e, 6182 }, /* braille_dots_234 */ + { 0x0100280f, 3831 }, /* braille_dots_1234 */ + { 0x01002810, 8135 }, /* braille_dots_5 */ + { 0x01002811, 5894 }, /* braille_dots_15 */ + { 0x01002812, 7046 }, /* braille_dots_25 */ + { 0x01002813, 4742 }, /* braille_dots_125 */ + { 0x01002814, 7606 }, /* braille_dots_35 */ + { 0x01002815, 5334 }, /* braille_dots_135 */ + { 0x01002816, 6486 }, /* braille_dots_235 */ + { 0x01002817, 4151 }, /* braille_dots_1235 */ + { 0x01002818, 7878 }, /* braille_dots_45 */ + { 0x01002819, 5622 }, /* braille_dots_145 */ + { 0x0100281a, 6774 }, /* braille_dots_245 */ + { 0x0100281b, 4455 }, /* braille_dots_1245 */ + { 0x0100281c, 7334 }, /* braille_dots_345 */ + { 0x0100281d, 5047 }, /* braille_dots_1345 */ + { 0x0100281e, 6199 }, /* braille_dots_2345 */ + { 0x0100281f, 3849 }, /* braille_dots_12345 */ + { 0x01002820, 8267 }, /* braille_dots_6 */ + { 0x01002821, 6034 }, /* braille_dots_16 */ + { 0x01002822, 7186 }, /* braille_dots_26 */ + { 0x01002823, 4890 }, /* braille_dots_126 */ + { 0x01002824, 7746 }, /* braille_dots_36 */ + { 0x01002825, 5482 }, /* braille_dots_136 */ + { 0x01002826, 6634 }, /* braille_dots_236 */ + { 0x01002827, 4307 }, /* braille_dots_1236 */ + { 0x01002828, 8018 }, /* braille_dots_46 */ + { 0x01002829, 5770 }, /* braille_dots_146 */ + { 0x0100282a, 6922 }, /* braille_dots_246 */ + { 0x0100282b, 4611 }, /* braille_dots_1246 */ + { 0x0100282c, 7482 }, /* braille_dots_346 */ + { 0x0100282d, 5203 }, /* braille_dots_1346 */ + { 0x0100282e, 6355 }, /* braille_dots_2346 */ + { 0x0100282f, 4013 }, /* braille_dots_12346 */ + { 0x01002830, 8150 }, /* braille_dots_56 */ + { 0x01002831, 5910 }, /* braille_dots_156 */ + { 0x01002832, 7062 }, /* braille_dots_256 */ + { 0x01002833, 4759 }, /* braille_dots_1256 */ + { 0x01002834, 7622 }, /* braille_dots_356 */ + { 0x01002835, 5351 }, /* braille_dots_1356 */ + { 0x01002836, 6503 }, /* braille_dots_2356 */ + { 0x01002837, 4169 }, /* braille_dots_12356 */ + { 0x01002838, 7894 }, /* braille_dots_456 */ + { 0x01002839, 5639 }, /* braille_dots_1456 */ + { 0x0100283a, 6791 }, /* braille_dots_2456 */ + { 0x0100283b, 4473 }, /* braille_dots_12456 */ + { 0x0100283c, 7351 }, /* braille_dots_3456 */ + { 0x0100283d, 5065 }, /* braille_dots_13456 */ + { 0x0100283e, 6217 }, /* braille_dots_23456 */ + { 0x0100283f, 3868 }, /* braille_dots_123456 */ + { 0x01002840, 8331 }, /* braille_dots_7 */ + { 0x01002841, 6102 }, /* braille_dots_17 */ + { 0x01002842, 7254 }, /* braille_dots_27 */ + { 0x01002843, 4962 }, /* braille_dots_127 */ + { 0x01002844, 7814 }, /* braille_dots_37 */ + { 0x01002845, 5554 }, /* braille_dots_137 */ + { 0x01002846, 6706 }, /* braille_dots_237 */ + { 0x01002847, 4383 }, /* braille_dots_1237 */ + { 0x01002848, 8086 }, /* braille_dots_47 */ + { 0x01002849, 5842 }, /* braille_dots_147 */ + { 0x0100284a, 6994 }, /* braille_dots_247 */ + { 0x0100284b, 4687 }, /* braille_dots_1247 */ + { 0x0100284c, 7554 }, /* braille_dots_347 */ + { 0x0100284d, 5279 }, /* braille_dots_1347 */ + { 0x0100284e, 6431 }, /* braille_dots_2347 */ + { 0x0100284f, 4093 }, /* braille_dots_12347 */ + { 0x01002850, 8218 }, /* braille_dots_57 */ + { 0x01002851, 5982 }, /* braille_dots_157 */ + { 0x01002852, 7134 }, /* braille_dots_257 */ + { 0x01002853, 4835 }, /* braille_dots_1257 */ + { 0x01002854, 7694 }, /* braille_dots_357 */ + { 0x01002855, 5427 }, /* braille_dots_1357 */ + { 0x01002856, 6579 }, /* braille_dots_2357 */ + { 0x01002857, 4249 }, /* braille_dots_12357 */ + { 0x01002858, 7966 }, /* braille_dots_457 */ + { 0x01002859, 5715 }, /* braille_dots_1457 */ + { 0x0100285a, 6867 }, /* braille_dots_2457 */ + { 0x0100285b, 4553 }, /* braille_dots_12457 */ + { 0x0100285c, 7427 }, /* braille_dots_3457 */ + { 0x0100285d, 5145 }, /* braille_dots_13457 */ + { 0x0100285e, 6297 }, /* braille_dots_23457 */ + { 0x0100285f, 3952 }, /* braille_dots_123457 */ + { 0x01002860, 8282 }, /* braille_dots_67 */ + { 0x01002861, 6050 }, /* braille_dots_167 */ + { 0x01002862, 7202 }, /* braille_dots_267 */ + { 0x01002863, 4907 }, /* braille_dots_1267 */ + { 0x01002864, 7762 }, /* braille_dots_367 */ + { 0x01002865, 5499 }, /* braille_dots_1367 */ + { 0x01002866, 6651 }, /* braille_dots_2367 */ + { 0x01002867, 4325 }, /* braille_dots_12367 */ + { 0x01002868, 8034 }, /* braille_dots_467 */ + { 0x01002869, 5787 }, /* braille_dots_1467 */ + { 0x0100286a, 6939 }, /* braille_dots_2467 */ + { 0x0100286b, 4629 }, /* braille_dots_12467 */ + { 0x0100286c, 7499 }, /* braille_dots_3467 */ + { 0x0100286d, 5221 }, /* braille_dots_13467 */ + { 0x0100286e, 6373 }, /* braille_dots_23467 */ + { 0x0100286f, 4032 }, /* braille_dots_123467 */ + { 0x01002870, 8166 }, /* braille_dots_567 */ + { 0x01002871, 5927 }, /* braille_dots_1567 */ + { 0x01002872, 7079 }, /* braille_dots_2567 */ + { 0x01002873, 4777 }, /* braille_dots_12567 */ + { 0x01002874, 7639 }, /* braille_dots_3567 */ + { 0x01002875, 5369 }, /* braille_dots_13567 */ + { 0x01002876, 6521 }, /* braille_dots_23567 */ + { 0x01002877, 4188 }, /* braille_dots_123567 */ + { 0x01002878, 7911 }, /* braille_dots_4567 */ + { 0x01002879, 5657 }, /* braille_dots_14567 */ + { 0x0100287a, 6809 }, /* braille_dots_24567 */ + { 0x0100287b, 4492 }, /* braille_dots_124567 */ + { 0x0100287c, 7369 }, /* braille_dots_34567 */ + { 0x0100287d, 5084 }, /* braille_dots_134567 */ + { 0x0100287e, 6236 }, /* braille_dots_234567 */ + { 0x0100287f, 3888 }, /* braille_dots_1234567 */ + { 0x01002880, 8362 }, /* braille_dots_8 */ + { 0x01002881, 6135 }, /* braille_dots_18 */ + { 0x01002882, 7287 }, /* braille_dots_28 */ + { 0x01002883, 4997 }, /* braille_dots_128 */ + { 0x01002884, 7847 }, /* braille_dots_38 */ + { 0x01002885, 5589 }, /* braille_dots_138 */ + { 0x01002886, 6741 }, /* braille_dots_238 */ + { 0x01002887, 4420 }, /* braille_dots_1238 */ + { 0x01002888, 8119 }, /* braille_dots_48 */ + { 0x01002889, 5877 }, /* braille_dots_148 */ + { 0x0100288a, 7029 }, /* braille_dots_248 */ + { 0x0100288b, 4724 }, /* braille_dots_1248 */ + { 0x0100288c, 7589 }, /* braille_dots_348 */ + { 0x0100288d, 5316 }, /* braille_dots_1348 */ + { 0x0100288e, 6468 }, /* braille_dots_2348 */ + { 0x0100288f, 4132 }, /* braille_dots_12348 */ + { 0x01002890, 8251 }, /* braille_dots_58 */ + { 0x01002891, 6017 }, /* braille_dots_158 */ + { 0x01002892, 7169 }, /* braille_dots_258 */ + { 0x01002893, 4872 }, /* braille_dots_1258 */ + { 0x01002894, 7729 }, /* braille_dots_358 */ + { 0x01002895, 5464 }, /* braille_dots_1358 */ + { 0x01002896, 6616 }, /* braille_dots_2358 */ + { 0x01002897, 4288 }, /* braille_dots_12358 */ + { 0x01002898, 8001 }, /* braille_dots_458 */ + { 0x01002899, 5752 }, /* braille_dots_1458 */ + { 0x0100289a, 6904 }, /* braille_dots_2458 */ + { 0x0100289b, 4592 }, /* braille_dots_12458 */ + { 0x0100289c, 7464 }, /* braille_dots_3458 */ + { 0x0100289d, 5184 }, /* braille_dots_13458 */ + { 0x0100289e, 6336 }, /* braille_dots_23458 */ + { 0x0100289f, 3993 }, /* braille_dots_123458 */ + { 0x010028a0, 8315 }, /* braille_dots_68 */ + { 0x010028a1, 6085 }, /* braille_dots_168 */ + { 0x010028a2, 7237 }, /* braille_dots_268 */ + { 0x010028a3, 4944 }, /* braille_dots_1268 */ + { 0x010028a4, 7797 }, /* braille_dots_368 */ + { 0x010028a5, 5536 }, /* braille_dots_1368 */ + { 0x010028a6, 6688 }, /* braille_dots_2368 */ + { 0x010028a7, 4364 }, /* braille_dots_12368 */ + { 0x010028a8, 8069 }, /* braille_dots_468 */ + { 0x010028a9, 5824 }, /* braille_dots_1468 */ + { 0x010028aa, 6976 }, /* braille_dots_2468 */ + { 0x010028ab, 4668 }, /* braille_dots_12468 */ + { 0x010028ac, 7536 }, /* braille_dots_3468 */ + { 0x010028ad, 5260 }, /* braille_dots_13468 */ + { 0x010028ae, 6412 }, /* braille_dots_23468 */ + { 0x010028af, 4073 }, /* braille_dots_123468 */ + { 0x010028b0, 8201 }, /* braille_dots_568 */ + { 0x010028b1, 5964 }, /* braille_dots_1568 */ + { 0x010028b2, 7116 }, /* braille_dots_2568 */ + { 0x010028b3, 4816 }, /* braille_dots_12568 */ + { 0x010028b4, 7676 }, /* braille_dots_3568 */ + { 0x010028b5, 5408 }, /* braille_dots_13568 */ + { 0x010028b6, 6560 }, /* braille_dots_23568 */ + { 0x010028b7, 4229 }, /* braille_dots_123568 */ + { 0x010028b8, 7948 }, /* braille_dots_4568 */ + { 0x010028b9, 5696 }, /* braille_dots_14568 */ + { 0x010028ba, 6848 }, /* braille_dots_24568 */ + { 0x010028bb, 4533 }, /* braille_dots_124568 */ + { 0x010028bc, 7408 }, /* braille_dots_34568 */ + { 0x010028bd, 5125 }, /* braille_dots_134568 */ + { 0x010028be, 6277 }, /* braille_dots_234568 */ + { 0x010028bf, 3931 }, /* braille_dots_1234568 */ + { 0x010028c0, 8346 }, /* braille_dots_78 */ + { 0x010028c1, 6118 }, /* braille_dots_178 */ + { 0x010028c2, 7270 }, /* braille_dots_278 */ + { 0x010028c3, 4979 }, /* braille_dots_1278 */ + { 0x010028c4, 7830 }, /* braille_dots_378 */ + { 0x010028c5, 5571 }, /* braille_dots_1378 */ + { 0x010028c6, 6723 }, /* braille_dots_2378 */ + { 0x010028c7, 4401 }, /* braille_dots_12378 */ + { 0x010028c8, 8102 }, /* braille_dots_478 */ + { 0x010028c9, 5859 }, /* braille_dots_1478 */ + { 0x010028ca, 7011 }, /* braille_dots_2478 */ + { 0x010028cb, 4705 }, /* braille_dots_12478 */ + { 0x010028cc, 7571 }, /* braille_dots_3478 */ + { 0x010028cd, 5297 }, /* braille_dots_13478 */ + { 0x010028ce, 6449 }, /* braille_dots_23478 */ + { 0x010028cf, 4112 }, /* braille_dots_123478 */ + { 0x010028d0, 8234 }, /* braille_dots_578 */ + { 0x010028d1, 5999 }, /* braille_dots_1578 */ + { 0x010028d2, 7151 }, /* braille_dots_2578 */ + { 0x010028d3, 4853 }, /* braille_dots_12578 */ + { 0x010028d4, 7711 }, /* braille_dots_3578 */ + { 0x010028d5, 5445 }, /* braille_dots_13578 */ + { 0x010028d6, 6597 }, /* braille_dots_23578 */ + { 0x010028d7, 4268 }, /* braille_dots_123578 */ + { 0x010028d8, 7983 }, /* braille_dots_4578 */ + { 0x010028d9, 5733 }, /* braille_dots_14578 */ + { 0x010028da, 6885 }, /* braille_dots_24578 */ + { 0x010028db, 4572 }, /* braille_dots_124578 */ + { 0x010028dc, 7445 }, /* braille_dots_34578 */ + { 0x010028dd, 5164 }, /* braille_dots_134578 */ + { 0x010028de, 6316 }, /* braille_dots_234578 */ + { 0x010028df, 3972 }, /* braille_dots_1234578 */ + { 0x010028e0, 8298 }, /* braille_dots_678 */ + { 0x010028e1, 6067 }, /* braille_dots_1678 */ + { 0x010028e2, 7219 }, /* braille_dots_2678 */ + { 0x010028e3, 4925 }, /* braille_dots_12678 */ + { 0x010028e4, 7779 }, /* braille_dots_3678 */ + { 0x010028e5, 5517 }, /* braille_dots_13678 */ + { 0x010028e6, 6669 }, /* braille_dots_23678 */ + { 0x010028e7, 4344 }, /* braille_dots_123678 */ + { 0x010028e8, 8051 }, /* braille_dots_4678 */ + { 0x010028e9, 5805 }, /* braille_dots_14678 */ + { 0x010028ea, 6957 }, /* braille_dots_24678 */ + { 0x010028eb, 4648 }, /* braille_dots_124678 */ + { 0x010028ec, 7517 }, /* braille_dots_34678 */ + { 0x010028ed, 5240 }, /* braille_dots_134678 */ + { 0x010028ee, 6392 }, /* braille_dots_234678 */ + { 0x010028ef, 4052 }, /* braille_dots_1234678 */ + { 0x010028f0, 8183 }, /* braille_dots_5678 */ + { 0x010028f1, 5945 }, /* braille_dots_15678 */ + { 0x010028f2, 7097 }, /* braille_dots_25678 */ + { 0x010028f3, 4796 }, /* braille_dots_125678 */ + { 0x010028f4, 7657 }, /* braille_dots_35678 */ + { 0x010028f5, 5388 }, /* braille_dots_135678 */ + { 0x010028f6, 6540 }, /* braille_dots_235678 */ + { 0x010028f7, 4208 }, /* braille_dots_1235678 */ + { 0x010028f8, 7929 }, /* braille_dots_45678 */ + { 0x010028f9, 5676 }, /* braille_dots_145678 */ + { 0x010028fa, 6828 }, /* braille_dots_245678 */ + { 0x010028fb, 4512 }, /* braille_dots_1245678 */ + { 0x010028fc, 7388 }, /* braille_dots_345678 */ + { 0x010028fd, 5104 }, /* braille_dots_1345678 */ + { 0x010028fe, 6256 }, /* braille_dots_2345678 */ + { 0x010028ff, 3909 }, /* braille_dots_12345678 */ + { 0x100000a8, 16910 }, /* hpmute_acute */ + { 0x100000a9, 16977 }, /* hpmute_grave */ + { 0x100000aa, 16923 }, /* hpmute_asciicircum */ + { 0x100000ab, 16960 }, /* hpmute_diaeresis */ + { 0x100000ac, 16942 }, /* hpmute_asciitilde */ + { 0x100000af, 16867 }, /* hplira */ + { 0x100000be, 16813 }, /* hpguilder */ + { 0x100000ee, 17014 }, /* hpYdiaeresis */ + { 0x100000f6, 16874 }, /* hplongminus */ + { 0x100000fc, 16767 }, /* hpblock */ + { 0x1000fe22, 10414 }, /* Ddiaeresis */ + { 0x1000fe27, 10344 }, /* Dacute_accent */ + { 0x1000fe2c, 10379 }, /* Dcedilla_accent */ + { 0x1000fe5e, 10395 }, /* Dcircumflex_accent */ + { 0x1000fe60, 11189 }, /* Dgrave_accent */ + { 0x1000fe7e, 11417 }, /* Dtilde */ + { 0x1000feb0, 11388 }, /* Dring_accent */ + { 0x1000ff00, 11380 }, /* DRemove */ + { 0x1000ff48, 16886 }, /* hpModelock1 */ + { 0x1000ff49, 16898 }, /* hpModelock2 */ + { 0x1000ff6c, 16990 }, /* hpReset */ + { 0x1000ff6d, 16998 }, /* hpSystem */ + { 0x1000ff6e, 17007 }, /* hpUser */ + { 0x1000ff6f, 16775 }, /* hpClearLine */ + { 0x1000ff70, 16836 }, /* hpInsertLine */ + { 0x1000ff71, 16800 }, /* hpDeleteLine */ + { 0x1000ff72, 16823 }, /* hpInsertChar */ + { 0x1000ff73, 16787 }, /* hpDeleteChar */ + { 0x1000ff74, 16757 }, /* hpBackTab */ + { 0x1000ff75, 16854 }, /* hpKP_BackTab */ + { 0x1000ff76, 12125 }, /* Ext16bit_L */ + { 0x1000ff77, 12136 }, /* Ext16bit_R */ + { 0x1004ff02, 20956 }, /* osfCopy */ + { 0x1004ff03, 20964 }, /* osfCut */ + { 0x1004ff04, 21163 }, /* osfPaste */ + { 0x1004ff07, 20900 }, /* osfBackTab */ + { 0x1004ff08, 20887 }, /* osfBackSpace */ + { 0x1004ff0b, 20947 }, /* osfClear */ + { 0x1004ff1b, 21026 }, /* osfEscape */ + { 0x1004ff31, 20876 }, /* osfAddMode */ + { 0x1004ff32, 21197 }, /* osfPrimaryPaste */ + { 0x1004ff33, 21213 }, /* osfQuickPaste */ + { 0x1004ff40, 21128 }, /* osfPageLeft */ + { 0x1004ff41, 21153 }, /* osfPageUp */ + { 0x1004ff42, 21116 }, /* osfPageDown */ + { 0x1004ff43, 21140 }, /* osfPageRight */ + { 0x1004ff44, 20864 }, /* osfActivate */ + { 0x1004ff45, 21080 }, /* osfMenuBar */ + { 0x1004ff51, 21064 }, /* osfLeft */ + { 0x1004ff52, 21290 }, /* osfUp */ + { 0x1004ff53, 21250 }, /* osfRight */ + { 0x1004ff54, 20996 }, /* osfDown */ + { 0x1004ff57, 21015 }, /* osfEndLine */ + { 0x1004ff58, 20924 }, /* osfBeginLine */ + { 0x1004ff59, 21004 }, /* osfEndData */ + { 0x1004ff5a, 20911 }, /* osfBeginData */ + { 0x1004ff5b, 21185 }, /* osfPrevMenu */ + { 0x1004ff5c, 21104 }, /* osfNextMenu */ + { 0x1004ff5d, 21172 }, /* osfPrevField */ + { 0x1004ff5e, 21091 }, /* osfNextField */ + { 0x1004ff60, 21259 }, /* osfSelect */ + { 0x1004ff63, 21054 }, /* osfInsert */ + { 0x1004ff65, 21282 }, /* osfUndo */ + { 0x1004ff67, 21072 }, /* osfMenu */ + { 0x1004ff69, 20937 }, /* osfCancel */ + { 0x1004ff6a, 21046 }, /* osfHelp */ + { 0x1004ff71, 21269 }, /* osfSelectAll */ + { 0x1004ff72, 20981 }, /* osfDeselectAll */ + { 0x1004ff73, 21227 }, /* osfReselect */ + { 0x1004ff74, 21036 }, /* osfExtend */ + { 0x1004ff78, 21239 }, /* osfRestore */ + { 0x1004ffff, 20971 }, /* osfDelete */ + { 0x1005ff00, 24032 }, /* SunFA_Grave */ + { 0x1005ff01, 24003 }, /* SunFA_Circum */ + { 0x1005ff02, 24044 }, /* SunFA_Tilde */ + { 0x1005ff03, 23977 }, /* SunFA_Acute */ + { 0x1005ff04, 24016 }, /* SunFA_Diaeresis */ + { 0x1005ff05, 23989 }, /* SunFA_Cedilla */ + { 0x1005ff10, 23963 }, /* SunF36 */ + { 0x1005ff11, 23970 }, /* SunF37 */ + { 0x1005ff60, 24180 }, /* SunSys_Req */ + { 0x1005ff70, 24163 }, /* SunProps */ + { 0x1005ff71, 24064 }, /* SunFront */ + { 0x1005ff72, 23948 }, /* SunCopy */ + { 0x1005ff73, 24073 }, /* SunOpen */ + { 0x1005ff74, 24103 }, /* SunPaste */ + { 0x1005ff75, 23956 }, /* SunCut */ + { 0x1005ff76, 24112 }, /* SunPowerSwitch */ + { 0x1005ff77, 23884 }, /* SunAudioLowerVolume */ + { 0x1005ff78, 23904 }, /* SunAudioMute */ + { 0x1005ff79, 23917 }, /* SunAudioRaiseVolume */ + { 0x1005ff7a, 24199 }, /* SunVideoDegauss */ + { 0x1005ff7b, 24215 }, /* SunVideoLowerBrightness */ + { 0x1005ff7c, 24239 }, /* SunVideoRaiseBrightness */ + { 0x1005ff7d, 24127 }, /* SunPowerSwitchShift */ + { 0x1008fe01, 28451 }, /* XF86Switch_VT_1 */ + { 0x1008fe02, 28518 }, /* XF86Switch_VT_2 */ + { 0x1008fe03, 28534 }, /* XF86Switch_VT_3 */ + { 0x1008fe04, 28550 }, /* XF86Switch_VT_4 */ + { 0x1008fe05, 28566 }, /* XF86Switch_VT_5 */ + { 0x1008fe06, 28582 }, /* XF86Switch_VT_6 */ + { 0x1008fe07, 28598 }, /* XF86Switch_VT_7 */ + { 0x1008fe08, 28614 }, /* XF86Switch_VT_8 */ + { 0x1008fe09, 28630 }, /* XF86Switch_VT_9 */ + { 0x1008fe0a, 28467 }, /* XF86Switch_VT_10 */ + { 0x1008fe0b, 28484 }, /* XF86Switch_VT_11 */ + { 0x1008fe0c, 28501 }, /* XF86Switch_VT_12 */ + { 0x1008fe20, 28777 }, /* XF86Ungrab */ + { 0x1008fe21, 27135 }, /* XF86ClearGrab */ + { 0x1008fe22, 27962 }, /* XF86Next_VMode */ + { 0x1008fe23, 28084 }, /* XF86Prev_VMode */ + { 0x1008fe24, 27742 }, /* XF86LogWindowTree */ + { 0x1008fe25, 27715 }, /* XF86LogGrabInfo */ + { 0x1008ff01, 27853 }, /* XF86ModeLock */ + { 0x1008ff02, 27888 }, /* XF86MonBrightnessUp */ + { 0x1008ff03, 27866 }, /* XF86MonBrightnessDown */ + { 0x1008ff04, 27491 }, /* XF86KbdLightOnOff */ + { 0x1008ff05, 27471 }, /* XF86KbdBrightnessUp */ + { 0x1008ff06, 27449 }, /* XF86KbdBrightnessDown */ + { 0x1008ff10, 28383 }, /* XF86Standby */ + { 0x1008ff11, 26749 }, /* XF86AudioLowerVolume */ + { 0x1008ff12, 26802 }, /* XF86AudioMute */ + { 0x1008ff13, 26873 }, /* XF86AudioRaiseVolume */ + { 0x1008ff14, 26845 }, /* XF86AudioPlay */ + { 0x1008ff15, 26962 }, /* XF86AudioStop */ + { 0x1008ff16, 26859 }, /* XF86AudioPrev */ + { 0x1008ff17, 26816 }, /* XF86AudioNext */ + { 0x1008ff18, 27412 }, /* XF86HomePage */ + { 0x1008ff19, 27760 }, /* XF86Mail */ + { 0x1008ff1a, 28395 }, /* XF86Start */ + { 0x1008ff1b, 28307 }, /* XF86Search */ + { 0x1008ff1c, 26914 }, /* XF86AudioRecord */ + { 0x1008ff1d, 27090 }, /* XF86Calculator */ + { 0x1008ff1e, 27808 }, /* XF86Memo */ + { 0x1008ff1f, 28681 }, /* XF86ToDoList */ + { 0x1008ff20, 27105 }, /* XF86Calendar */ + { 0x1008ff21, 28057 }, /* XF86PowerDown */ + { 0x1008ff22, 27173 }, /* XF86ContrastAdjust */ + { 0x1008ff23, 28177 }, /* XF86RockerUp */ + { 0x1008ff24, 28146 }, /* XF86RockerDown */ + { 0x1008ff25, 28161 }, /* XF86RockerEnter */ + { 0x1008ff26, 26985 }, /* XF86Back */ + { 0x1008ff27, 27317 }, /* XF86Forward */ + { 0x1008ff28, 28405 }, /* XF86Stop */ + { 0x1008ff29, 28113 }, /* XF86Refresh */ + { 0x1008ff2a, 28071 }, /* XF86PowerOff */ + { 0x1008ff2b, 28865 }, /* XF86WakeUp */ + { 0x1008ff2c, 27258 }, /* XF86Eject */ + { 0x1008ff2d, 28247 }, /* XF86ScreenSaver */ + { 0x1008ff2e, 28921 }, /* XF86WWW */ + { 0x1008ff2f, 28347 }, /* XF86Sleep */ + { 0x1008ff30, 27291 }, /* XF86Favorites */ + { 0x1008ff31, 26830 }, /* XF86AudioPause */ + { 0x1008ff32, 26770 }, /* XF86AudioMedia */ + { 0x1008ff33, 27918 }, /* XF86MyComputer */ + { 0x1008ff34, 28831 }, /* XF86VendorHome */ + { 0x1008ff35, 27701 }, /* XF86LightBulb */ + { 0x1008ff36, 28338 }, /* XF86Shop */ + { 0x1008ff37, 27400 }, /* XF86History */ + { 0x1008ff38, 28001 }, /* XF86OpenURL */ + { 0x1008ff39, 26655 }, /* XF86AddFavorite */ + { 0x1008ff3a, 27425 }, /* XF86HotLinks */ + { 0x1008ff3b, 27054 }, /* XF86BrightnessAdjust */ + { 0x1008ff3c, 27305 }, /* XF86Finance */ + { 0x1008ff3d, 27159 }, /* XF86Community */ + { 0x1008ff3e, 26946 }, /* XF86AudioRewind */ + { 0x1008ff3f, 26994 }, /* XF86BackForward */ + { 0x1008ff40, 27509 }, /* XF86Launch0 */ + { 0x1008ff41, 27521 }, /* XF86Launch1 */ + { 0x1008ff42, 27533 }, /* XF86Launch2 */ + { 0x1008ff43, 27545 }, /* XF86Launch3 */ + { 0x1008ff44, 27557 }, /* XF86Launch4 */ + { 0x1008ff45, 27569 }, /* XF86Launch5 */ + { 0x1008ff46, 27581 }, /* XF86Launch6 */ + { 0x1008ff47, 27593 }, /* XF86Launch7 */ + { 0x1008ff48, 27605 }, /* XF86Launch8 */ + { 0x1008ff49, 27617 }, /* XF86Launch9 */ + { 0x1008ff4a, 27629 }, /* XF86LaunchA */ + { 0x1008ff4b, 27641 }, /* XF86LaunchB */ + { 0x1008ff4c, 27653 }, /* XF86LaunchC */ + { 0x1008ff4d, 27665 }, /* XF86LaunchD */ + { 0x1008ff4e, 27677 }, /* XF86LaunchE */ + { 0x1008ff4f, 27689 }, /* XF86LaunchF */ + { 0x1008ff50, 26671 }, /* XF86ApplicationLeft */ + { 0x1008ff51, 26691 }, /* XF86ApplicationRight */ + { 0x1008ff52, 27045 }, /* XF86Book */ + { 0x1008ff53, 27118 }, /* XF86CD */ + { 0x1008ff54, 27075 }, /* XF86Calculater */ + { 0x1008ff55, 27125 }, /* XF86Clear */ + { 0x1008ff56, 27149 }, /* XF86Close */ + { 0x1008ff57, 27192 }, /* XF86Copy */ + { 0x1008ff58, 27201 }, /* XF86Cut */ + { 0x1008ff59, 27224 }, /* XF86Display */ + { 0x1008ff5a, 27250 }, /* XF86DOS */ + { 0x1008ff5b, 27236 }, /* XF86Documents */ + { 0x1008ff5c, 27268 }, /* XF86Excel */ + { 0x1008ff5d, 27278 }, /* XF86Explorer */ + { 0x1008ff5e, 27360 }, /* XF86Game */ + { 0x1008ff5f, 27369 }, /* XF86Go */ + { 0x1008ff60, 27438 }, /* XF86iTouch */ + { 0x1008ff61, 27731 }, /* XF86LogOff */ + { 0x1008ff62, 27785 }, /* XF86Market */ + { 0x1008ff63, 27796 }, /* XF86Meeting */ + { 0x1008ff65, 27817 }, /* XF86MenuKB */ + { 0x1008ff66, 27828 }, /* XF86MenuPB */ + { 0x1008ff67, 27933 }, /* XF86MySites */ + { 0x1008ff68, 27945 }, /* XF86New */ + { 0x1008ff69, 27953 }, /* XF86News */ + { 0x1008ff6a, 27977 }, /* XF86OfficeHome */ + { 0x1008ff6b, 27992 }, /* XF86Open */ + { 0x1008ff6c, 28013 }, /* XF86Option */ + { 0x1008ff6d, 28024 }, /* XF86Paste */ + { 0x1008ff6e, 28034 }, /* XF86Phone */ + { 0x1008ff70, 28099 }, /* XF86Q */ + { 0x1008ff72, 28136 }, /* XF86Reply */ + { 0x1008ff73, 28125 }, /* XF86Reload */ + { 0x1008ff74, 28190 }, /* XF86RotateWindows */ + { 0x1008ff75, 28223 }, /* XF86RotationPB */ + { 0x1008ff76, 28208 }, /* XF86RotationKB */ + { 0x1008ff77, 28238 }, /* XF86Save */ + { 0x1008ff78, 28294 }, /* XF86ScrollUp */ + { 0x1008ff79, 28279 }, /* XF86ScrollDown */ + { 0x1008ff7a, 28263 }, /* XF86ScrollClick */ + { 0x1008ff7b, 28329 }, /* XF86Send */ + { 0x1008ff7c, 28357 }, /* XF86Spell */ + { 0x1008ff7d, 28367 }, /* XF86SplitScreen */ + { 0x1008ff7e, 28427 }, /* XF86Support */ + { 0x1008ff7f, 28646 }, /* XF86TaskPane */ + { 0x1008ff80, 28659 }, /* XF86Terminal */ + { 0x1008ff81, 28694 }, /* XF86Tools */ + { 0x1008ff82, 28766 }, /* XF86Travel */ + { 0x1008ff84, 28812 }, /* XF86UserPB */ + { 0x1008ff85, 28788 }, /* XF86User1KB */ + { 0x1008ff86, 28800 }, /* XF86User2KB */ + { 0x1008ff87, 28846 }, /* XF86Video */ + { 0x1008ff88, 28887 }, /* XF86WheelButton */ + { 0x1008ff89, 28912 }, /* XF86Word */ + { 0x1008ff8a, 28929 }, /* XF86Xfer */ + { 0x1008ff8b, 28949 }, /* XF86ZoomIn */ + { 0x1008ff8c, 28960 }, /* XF86ZoomOut */ + { 0x1008ff8d, 26976 }, /* XF86Away */ + { 0x1008ff8e, 27839 }, /* XF86Messenger */ + { 0x1008ff8f, 28876 }, /* XF86WebCam */ + { 0x1008ff90, 27769 }, /* XF86MailForward */ + { 0x1008ff91, 28044 }, /* XF86Pictures */ + { 0x1008ff92, 27908 }, /* XF86Music */ + { 0x1008ff93, 27010 }, /* XF86Battery */ + { 0x1008ff94, 27031 }, /* XF86Bluetooth */ + { 0x1008ff95, 28903 }, /* XF86WLAN */ + { 0x1008ff96, 28823 }, /* XF86UWB */ + { 0x1008ff97, 26732 }, /* XF86AudioForward */ + { 0x1008ff98, 26930 }, /* XF86AudioRepeat */ + { 0x1008ff99, 26894 }, /* XF86AudioRandomPlay */ + { 0x1008ff9a, 28414 }, /* XF86Subtitle */ + { 0x1008ff9b, 26712 }, /* XF86AudioCycleTrack */ + { 0x1008ff9c, 27209 }, /* XF86CycleAngle */ + { 0x1008ff9d, 27329 }, /* XF86FrameBack */ + { 0x1008ff9e, 27343 }, /* XF86FrameForward */ + { 0x1008ff9f, 28672 }, /* XF86Time */ + { 0x1008ffa0, 28318 }, /* XF86Select */ + { 0x1008ffa1, 28856 }, /* XF86View */ + { 0x1008ffa2, 28704 }, /* XF86TopMenu */ + { 0x1008ffa3, 28105 }, /* XF86Red */ + { 0x1008ffa4, 27376 }, /* XF86Green */ + { 0x1008ffa5, 28938 }, /* XF86Yellow */ + { 0x1008ffa6, 27022 }, /* XF86Blue */ + { 0x1008ffa7, 28439 }, /* XF86Suspend */ + { 0x1008ffa8, 27386 }, /* XF86Hibernate */ + { 0x1008ffa9, 28747 }, /* XF86TouchpadToggle */ + { 0x1008ffb0, 28732 }, /* XF86TouchpadOn */ + { 0x1008ffb1, 28716 }, /* XF86TouchpadOff */ + { 0x1008ffb2, 26785 }, /* XF86AudioMicMute */ +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/scanner-utils.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/scanner-utils.h new file mode 100644 index 0000000..5fdb22a --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/scanner-utils.h @@ -0,0 +1,195 @@ +/* + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef XKBCOMP_SCANNER_UTILS_H +#define XKBCOMP_SCANNER_UTILS_H + +/* Point to some substring in the file; used to avoid copying. */ +struct sval { + const char *start; + unsigned int len; +}; +typedef darray(struct sval) darray_sval; + +static inline bool +svaleq(struct sval s1, struct sval s2) +{ + return s1.len == s2.len && memcmp(s1.start, s2.start, s1.len) == 0; +} + +static inline bool +svaleq_prefix(struct sval s1, struct sval s2) +{ + return s1.len <= s2.len && memcmp(s1.start, s2.start, s1.len) == 0; +} + +struct scanner { + const char *s; + size_t pos; + size_t len; + char buf[1024]; + size_t buf_pos; + unsigned line, column; + /* The line/column of the start of the current token. */ + unsigned token_line, token_column; + const char *file_name; + struct xkb_context *ctx; + void *priv; +}; + +#define scanner_log(scanner, level, fmt, ...) \ + xkb_log((scanner)->ctx, (level), 0, \ + "%s:%u:%u: " fmt "\n", \ + (scanner)->file_name, \ + (scanner)->token_line, (scanner)->token_column, ##__VA_ARGS__) + +#define scanner_err(scanner, fmt, ...) \ + scanner_log(scanner, XKB_LOG_LEVEL_ERROR, fmt, ##__VA_ARGS__) + +#define scanner_warn(scanner, fmt, ...) \ + scanner_log(scanner, XKB_LOG_LEVEL_WARNING, fmt, ##__VA_ARGS__) + +static inline void +scanner_init(struct scanner *s, struct xkb_context *ctx, + const char *string, size_t len, const char *file_name, + void *priv) +{ + s->s = string; + s->len = len; + s->pos = 0; + s->line = s->column = 1; + s->token_line = s->token_column = 1; + s->file_name = file_name; + s->ctx = ctx; + s->priv = priv; +} + +static inline char +peek(struct scanner *s) +{ + if (unlikely(s->pos >= s->len)) + return '\0'; + return s->s[s->pos]; +} + +static inline bool +eof(struct scanner *s) +{ + return s->pos >= s->len; +} + +static inline bool +eol(struct scanner *s) +{ + return peek(s) == '\n'; +} + +static inline void +skip_to_eol(struct scanner *s) +{ + const char *nl = memchr(s->s + s->pos, '\n', s->len - s->pos); + const size_t new_pos = nl ? (size_t) (nl - s->s) : s->len; + s->column += new_pos - s->pos; + s->pos = new_pos; +} + +static inline char +next(struct scanner *s) +{ + if (unlikely(eof(s))) + return '\0'; + if (unlikely(eol(s))) { + s->line++; + s->column = 1; + } + else { + s->column++; + } + return s->s[s->pos++]; +} + +static inline bool +chr(struct scanner *s, char ch) +{ + if (likely(peek(s) != ch)) + return false; + s->pos++; s->column++; + return true; +} + +static inline bool +str(struct scanner *s, const char *string, size_t len) +{ + if (s->len - s->pos < len) + return false; + if (memcmp(s->s + s->pos, string, len) != 0) + return false; + s->pos += len; s->column += len; + return true; +} + +#define lit(s, literal) str(s, literal, sizeof(literal) - 1) + +static inline bool +buf_append(struct scanner *s, char ch) +{ + if (s->buf_pos + 1 >= sizeof(s->buf)) + return false; + s->buf[s->buf_pos++] = ch; + return true; +} + +static inline bool +buf_appends(struct scanner *s, const char *str) +{ + int ret; + ret = snprintf(s->buf + s->buf_pos, sizeof(s->buf) - s->buf_pos, "%s", str); + if (ret < 0 || (size_t) ret >= sizeof(s->buf) - s->buf_pos) + return false; + s->buf_pos += ret; + return true; +} + +static inline bool +oct(struct scanner *s, uint8_t *out) +{ + int i; + for (i = 0, *out = 0; peek(s) >= '0' && peek(s) <= '7' && i < 3; i++) + *out = *out * 8 + next(s) - '0'; + return i > 0; +} + +static inline bool +hex(struct scanner *s, uint8_t *out) +{ + int i; + for (i = 0, *out = 0; is_xdigit(peek(s)) && i < 2; i++) { + const char c = next(s); + const char offset = (c >= '0' && c <= '9' ? '0' : + c >= 'a' && c <= 'f' ? 'a' - 10 : 'A' - 10); + *out = *out * 16 + c - offset; + } + return i > 0; +} + +#endif diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c new file mode 100644 index 0000000..642ed08 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/state.c @@ -0,0 +1,1386 @@ +/************************************************************ + * Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +/* + * Copyright © 2012 Intel Corporation + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Daniel Stone + */ + +/* + * This is a bastardised version of xkbActions.c from the X server which + * does not support, for the moment: + * - AccessX sticky/debounce/etc (will come later) + * - pointer keys (may come later) + * - key redirects (unlikely) + * - messages (very unlikely) + */ + +#include "keymap.h" +#include "keysym.h" +#include "utf8.h" + +struct xkb_filter { + union xkb_action action; + const struct xkb_key *key; + uint32_t priv; + bool (*func)(struct xkb_state *state, + struct xkb_filter *filter, + const struct xkb_key *key, + enum xkb_key_direction direction); + int refcnt; +}; + +struct state_components { + /* These may be negative, because of -1 group actions. */ + int32_t base_group; /**< depressed */ + int32_t latched_group; + int32_t locked_group; + xkb_layout_index_t group; /**< effective */ + + xkb_mod_mask_t base_mods; /**< depressed */ + xkb_mod_mask_t latched_mods; + xkb_mod_mask_t locked_mods; + xkb_mod_mask_t mods; /**< effective */ + + xkb_led_mask_t leds; +}; + +struct xkb_state { + /* + * Before updating the state, we keep a copy of just this struct. This + * allows us to report which components of the state have changed. + */ + struct state_components components; + + /* + * At each event, we accumulate all the needed modifications to the base + * modifiers, and apply them at the end. These keep track of this state. + */ + xkb_mod_mask_t set_mods; + xkb_mod_mask_t clear_mods; + + /* + * We mustn't clear a base modifier if there's another depressed key + * which affects it, e.g. given this sequence + * < Left Shift down, Right Shift down, Left Shift Up > + * the modifier should still be set. This keeps the count. + */ + int16_t mod_key_count[XKB_MAX_MODS]; + + int refcnt; + darray(struct xkb_filter) filters; + struct xkb_keymap *keymap; +}; + +static const struct xkb_key_type_entry * +get_entry_for_key_state(struct xkb_state *state, const struct xkb_key *key, + xkb_layout_index_t group) +{ + const struct xkb_key_type *type = key->groups[group].type; + xkb_mod_mask_t active_mods = state->components.mods & type->mods.mask; + + for (unsigned i = 0; i < type->num_entries; i++) { + /* + * If the virtual modifiers are not bound to anything, we're + * supposed to skip the entry (xserver does this with cached + * entry->active field). + */ + if (type->entries[i].mods.mods != 0 && type->entries[i].mods.mask == 0) + continue; + + if (type->entries[i].mods.mask == active_mods) + return &type->entries[i]; + } + + return NULL; +} + +/** + * Returns the level to use for the given key and state, or + * XKB_LEVEL_INVALID. + */ +XKB_EXPORT xkb_level_index_t +xkb_state_key_get_level(struct xkb_state *state, xkb_keycode_t kc, + xkb_layout_index_t layout) +{ + const struct xkb_key *key = XkbKey(state->keymap, kc); + const struct xkb_key_type_entry *entry; + + if (!key || layout >= key->num_groups) + return XKB_LEVEL_INVALID; + + /* If we don't find an explicit match the default is 0. */ + entry = get_entry_for_key_state(state, key, layout); + if (!entry) + return 0; + + return entry->level; +} + +xkb_layout_index_t +XkbWrapGroupIntoRange(int32_t group, + xkb_layout_index_t num_groups, + enum xkb_range_exceed_type out_of_range_group_action, + xkb_layout_index_t out_of_range_group_number) +{ + if (num_groups == 0) + return XKB_LAYOUT_INVALID; + + if (group >= 0 && (xkb_layout_index_t) group < num_groups) + return group; + + switch (out_of_range_group_action) { + case RANGE_REDIRECT: + if (out_of_range_group_number >= num_groups) + return 0; + return out_of_range_group_number; + + case RANGE_SATURATE: + if (group < 0) + return 0; + else + return num_groups - 1; + + case RANGE_WRAP: + default: + /* + * C99 says a negative dividend in a modulo operation always + * gives a negative result. + */ + if (group < 0) + return ((int) num_groups + (group % (int) num_groups)); + else + return group % num_groups; + } +} + +/** + * Returns the layout to use for the given key and state, taking + * wrapping/clamping/etc into account, or XKB_LAYOUT_INVALID. + */ +XKB_EXPORT xkb_layout_index_t +xkb_state_key_get_layout(struct xkb_state *state, xkb_keycode_t kc) +{ + const struct xkb_key *key = XkbKey(state->keymap, kc); + + if (!key) + return XKB_LAYOUT_INVALID; + + return XkbWrapGroupIntoRange(state->components.group, key->num_groups, + key->out_of_range_group_action, + key->out_of_range_group_number); +} + +static const union xkb_action fake = { .type = ACTION_TYPE_NONE }; + +static const union xkb_action * +xkb_key_get_action(struct xkb_state *state, const struct xkb_key *key) +{ + xkb_layout_index_t layout; + xkb_level_index_t level; + + layout = xkb_state_key_get_layout(state, key->keycode); + if (layout == XKB_LAYOUT_INVALID) + return &fake; + + level = xkb_state_key_get_level(state, key->keycode, layout); + if (level == XKB_LEVEL_INVALID) + return &fake; + + return &key->groups[layout].levels[level].action; +} + +static struct xkb_filter * +xkb_filter_new(struct xkb_state *state) +{ + struct xkb_filter *filter = NULL, *iter; + + darray_foreach(iter, state->filters) { + if (iter->func) + continue; + filter = iter; + break; + } + + if (!filter) { + darray_resize0(state->filters, darray_size(state->filters) + 1); + filter = &darray_item(state->filters, darray_size(state->filters) -1); + } + + filter->refcnt = 1; + return filter; +} + +/***====================================================================***/ + +static bool +xkb_filter_group_set_func(struct xkb_state *state, + struct xkb_filter *filter, + const struct xkb_key *key, + enum xkb_key_direction direction) +{ + if (key != filter->key) { + filter->action.group.flags &= ~ACTION_LOCK_CLEAR; + return true; + } + + if (direction == XKB_KEY_DOWN) { + filter->refcnt++; + return false; + } + else if (--filter->refcnt > 0) { + return false; + } + + state->components.base_group = filter->priv; + + if (filter->action.group.flags & ACTION_LOCK_CLEAR) + state->components.locked_group = 0; + + filter->func = NULL; + return true; +} + +static void +xkb_filter_group_set_new(struct xkb_state *state, struct xkb_filter *filter) +{ + filter->priv = state->components.base_group; + if (filter->action.group.flags & ACTION_ABSOLUTE_SWITCH) + state->components.base_group = filter->action.group.group; + else + state->components.base_group += filter->action.group.group; +} + +static bool +xkb_filter_group_lock_func(struct xkb_state *state, + struct xkb_filter *filter, + const struct xkb_key *key, + enum xkb_key_direction direction) +{ + if (key != filter->key) + return true; + + if (direction == XKB_KEY_DOWN) { + filter->refcnt++; + return false; + } + if (--filter->refcnt > 0) + return false; + + filter->func = NULL; + return true; +} + +static void +xkb_filter_group_lock_new(struct xkb_state *state, struct xkb_filter *filter) +{ + if (filter->action.group.flags & ACTION_ABSOLUTE_SWITCH) + state->components.locked_group = filter->action.group.group; + else + state->components.locked_group += filter->action.group.group; +} + +static bool +xkb_filter_mod_set_func(struct xkb_state *state, + struct xkb_filter *filter, + const struct xkb_key *key, + enum xkb_key_direction direction) +{ + if (key != filter->key) { + filter->action.mods.flags &= ~ACTION_LOCK_CLEAR; + return true; + } + + if (direction == XKB_KEY_DOWN) { + filter->refcnt++; + return false; + } + else if (--filter->refcnt > 0) { + return false; + } + + state->clear_mods = filter->action.mods.mods.mask; + if (filter->action.mods.flags & ACTION_LOCK_CLEAR) + state->components.locked_mods &= ~filter->action.mods.mods.mask; + + filter->func = NULL; + return true; +} + +static void +xkb_filter_mod_set_new(struct xkb_state *state, struct xkb_filter *filter) +{ + state->set_mods = filter->action.mods.mods.mask; +} + +static bool +xkb_filter_mod_lock_func(struct xkb_state *state, + struct xkb_filter *filter, + const struct xkb_key *key, + enum xkb_key_direction direction) +{ + if (key != filter->key) + return true; + + if (direction == XKB_KEY_DOWN) { + filter->refcnt++; + return false; + } + if (--filter->refcnt > 0) + return false; + + state->clear_mods |= filter->action.mods.mods.mask; + if (!(filter->action.mods.flags & ACTION_LOCK_NO_UNLOCK)) + state->components.locked_mods &= ~filter->priv; + + filter->func = NULL; + return true; +} + +static void +xkb_filter_mod_lock_new(struct xkb_state *state, struct xkb_filter *filter) +{ + filter->priv = (state->components.locked_mods & + filter->action.mods.mods.mask); + state->set_mods |= filter->action.mods.mods.mask; + if (!(filter->action.mods.flags & ACTION_LOCK_NO_LOCK)) + state->components.locked_mods |= filter->action.mods.mods.mask; +} + +enum xkb_key_latch_state { + NO_LATCH, + LATCH_KEY_DOWN, + LATCH_PENDING, +}; + +static bool +xkb_action_breaks_latch(const union xkb_action *action) +{ + switch (action->type) { + case ACTION_TYPE_NONE: + case ACTION_TYPE_PTR_BUTTON: + case ACTION_TYPE_PTR_LOCK: + case ACTION_TYPE_CTRL_SET: + case ACTION_TYPE_CTRL_LOCK: + case ACTION_TYPE_SWITCH_VT: + case ACTION_TYPE_TERMINATE: + return true; + default: + return false; + } +} + +static bool +xkb_filter_mod_latch_func(struct xkb_state *state, + struct xkb_filter *filter, + const struct xkb_key *key, + enum xkb_key_direction direction) +{ + enum xkb_key_latch_state latch = filter->priv; + + if (direction == XKB_KEY_DOWN && latch == LATCH_PENDING) { + /* If this is a new keypress and we're awaiting our single latched + * keypress, then either break the latch if any random key is pressed, + * or promote it to a lock or plain base set if it's the same + * modifier. */ + const union xkb_action *action = xkb_key_get_action(state, key); + if (action->type == ACTION_TYPE_MOD_LATCH && + action->mods.flags == filter->action.mods.flags && + action->mods.mods.mask == filter->action.mods.mods.mask) { + filter->action = *action; + if (filter->action.mods.flags & ACTION_LATCH_TO_LOCK) { + filter->action.type = ACTION_TYPE_MOD_LOCK; + filter->func = xkb_filter_mod_lock_func; + state->components.locked_mods |= filter->action.mods.mods.mask; + } + else { + filter->action.type = ACTION_TYPE_MOD_SET; + filter->func = xkb_filter_mod_set_func; + state->set_mods = filter->action.mods.mods.mask; + } + filter->key = key; + state->components.latched_mods &= ~filter->action.mods.mods.mask; + /* XXX beep beep! */ + return false; + } + else if (xkb_action_breaks_latch(action)) { + /* XXX: This may be totally broken, we might need to break the + * latch in the next run after this press? */ + state->components.latched_mods &= ~filter->action.mods.mods.mask; + filter->func = NULL; + return true; + } + } + else if (direction == XKB_KEY_UP && key == filter->key) { + /* Our key got released. If we've set it to clear locks, and we + * currently have the same modifiers locked, then release them and + * don't actually latch. Else we've actually hit the latching + * stage, so set PENDING and move our modifier from base to + * latched. */ + if (latch == NO_LATCH || + ((filter->action.mods.flags & ACTION_LOCK_CLEAR) && + (state->components.locked_mods & filter->action.mods.mods.mask) == + filter->action.mods.mods.mask)) { + /* XXX: We might be a bit overenthusiastic about clearing + * mods other filters have set here? */ + if (latch == LATCH_PENDING) + state->components.latched_mods &= + ~filter->action.mods.mods.mask; + else + state->clear_mods = filter->action.mods.mods.mask; + state->components.locked_mods &= ~filter->action.mods.mods.mask; + filter->func = NULL; + } + else { + latch = LATCH_PENDING; + state->clear_mods = filter->action.mods.mods.mask; + state->components.latched_mods |= filter->action.mods.mods.mask; + /* XXX beep beep! */ + } + } + else if (direction == XKB_KEY_DOWN && latch == LATCH_KEY_DOWN) { + /* Someone's pressed another key while we've still got the latching + * key held down, so keep the base modifier state active (from + * xkb_filter_mod_latch_new), but don't trip the latch, just clear + * it as soon as the modifier gets released. */ + latch = NO_LATCH; + } + + filter->priv = latch; + + return true; +} + +static void +xkb_filter_mod_latch_new(struct xkb_state *state, struct xkb_filter *filter) +{ + filter->priv = LATCH_KEY_DOWN; + state->set_mods = filter->action.mods.mods.mask; +} + +static const struct { + void (*new)(struct xkb_state *state, struct xkb_filter *filter); + bool (*func)(struct xkb_state *state, struct xkb_filter *filter, + const struct xkb_key *key, enum xkb_key_direction direction); +} filter_action_funcs[_ACTION_TYPE_NUM_ENTRIES] = { + [ACTION_TYPE_MOD_SET] = { xkb_filter_mod_set_new, + xkb_filter_mod_set_func }, + [ACTION_TYPE_MOD_LATCH] = { xkb_filter_mod_latch_new, + xkb_filter_mod_latch_func }, + [ACTION_TYPE_MOD_LOCK] = { xkb_filter_mod_lock_new, + xkb_filter_mod_lock_func }, + [ACTION_TYPE_GROUP_SET] = { xkb_filter_group_set_new, + xkb_filter_group_set_func }, + [ACTION_TYPE_GROUP_LOCK] = { xkb_filter_group_lock_new, + xkb_filter_group_lock_func }, +}; + +/** + * Applies any relevant filters to the key, first from the list of filters + * that are currently active, then if no filter has claimed the key, possibly + * apply a new filter from the key action. + */ +static void +xkb_filter_apply_all(struct xkb_state *state, + const struct xkb_key *key, + enum xkb_key_direction direction) +{ + struct xkb_filter *filter; + const union xkb_action *action; + bool send = true; + + /* First run through all the currently active filters and see if any of + * them have claimed this event. */ + darray_foreach(filter, state->filters) { + if (!filter->func) + continue; + send = filter->func(state, filter, key, direction) && send; + } + + if (!send || direction == XKB_KEY_UP) + return; + + action = xkb_key_get_action(state, key); + + /* + * It's possible for the keymap to set action->type explicitly, like so: + * interpret XF86_Next_VMode { + * action = Private(type=0x86, data="+VMode"); + * }; + * We don't handle those. + */ + if (action->type >= _ACTION_TYPE_NUM_ENTRIES) + return; + + if (!filter_action_funcs[action->type].new) + return; + + filter = xkb_filter_new(state); + if (!filter) + return; /* WSGO */ + + filter->key = key; + filter->func = filter_action_funcs[action->type].func; + filter->action = *action; + filter_action_funcs[action->type].new(state, filter); +} + +XKB_EXPORT struct xkb_state * +xkb_state_new(struct xkb_keymap *keymap) +{ + struct xkb_state *ret; + + ret = calloc(sizeof(*ret), 1); + if (!ret) + return NULL; + + ret->refcnt = 1; + ret->keymap = xkb_keymap_ref(keymap); + + return ret; +} + +XKB_EXPORT struct xkb_state * +xkb_state_ref(struct xkb_state *state) +{ + state->refcnt++; + return state; +} + +XKB_EXPORT void +xkb_state_unref(struct xkb_state *state) +{ + if (!state || --state->refcnt > 0) + return; + + xkb_keymap_unref(state->keymap); + darray_free(state->filters); + free(state); +} + +XKB_EXPORT struct xkb_keymap * +xkb_state_get_keymap(struct xkb_state *state) +{ + return state->keymap; +} + +/** + * Update the LED state to match the rest of the xkb_state. + */ +static void +xkb_state_led_update_all(struct xkb_state *state) +{ + xkb_led_index_t idx; + const struct xkb_led *led; + + state->components.leds = 0; + + xkb_leds_enumerate(idx, led, state->keymap) { + xkb_mod_mask_t mod_mask = 0; + xkb_layout_mask_t group_mask = 0; + + if (led->which_mods != 0 && led->mods.mask != 0) { + if (led->which_mods & XKB_STATE_MODS_EFFECTIVE) + mod_mask |= state->components.mods; + if (led->which_mods & XKB_STATE_MODS_DEPRESSED) + mod_mask |= state->components.base_mods; + if (led->which_mods & XKB_STATE_MODS_LATCHED) + mod_mask |= state->components.latched_mods; + if (led->which_mods & XKB_STATE_MODS_LOCKED) + mod_mask |= state->components.locked_mods; + + if (led->mods.mask & mod_mask) { + state->components.leds |= (1u << idx); + continue; + } + } + + if (led->which_groups != 0 && led->groups != 0) { + if (led->which_groups & XKB_STATE_LAYOUT_EFFECTIVE) + group_mask |= (1u << state->components.group); + if (led->which_groups & XKB_STATE_LAYOUT_DEPRESSED) + group_mask |= (1u << state->components.base_group); + if (led->which_groups & XKB_STATE_LAYOUT_LATCHED) + group_mask |= (1u << state->components.latched_group); + if (led->which_groups & XKB_STATE_LAYOUT_LOCKED) + group_mask |= (1u << state->components.locked_group); + + if (led->groups & group_mask) { + state->components.leds |= (1u << idx); + continue; + } + } + + if (led->ctrls & state->keymap->enabled_ctrls) { + state->components.leds |= (1u << idx); + continue; + } + } +} + +/** + * Calculates the derived state (effective mods/group and LEDs) from an + * up-to-date xkb_state. + */ +static void +xkb_state_update_derived(struct xkb_state *state) +{ + xkb_layout_index_t wrapped; + + state->components.mods = (state->components.base_mods | + state->components.latched_mods | + state->components.locked_mods); + + /* TODO: Use groups_wrap control instead of always RANGE_WRAP. */ + + wrapped = XkbWrapGroupIntoRange(state->components.locked_group, + state->keymap->num_groups, + RANGE_WRAP, 0); + state->components.locked_group = + (wrapped == XKB_LAYOUT_INVALID ? 0 : wrapped); + + wrapped = XkbWrapGroupIntoRange(state->components.base_group + + state->components.latched_group + + state->components.locked_group, + state->keymap->num_groups, + RANGE_WRAP, 0); + state->components.group = + (wrapped == XKB_LAYOUT_INVALID ? 0 : wrapped); + + xkb_state_led_update_all(state); +} + +static enum xkb_state_component +get_state_component_changes(const struct state_components *a, + const struct state_components *b) +{ + xkb_mod_mask_t mask = 0; + + if (a->group != b->group) + mask |= XKB_STATE_LAYOUT_EFFECTIVE; + if (a->base_group != b->base_group) + mask |= XKB_STATE_LAYOUT_DEPRESSED; + if (a->latched_group != b->latched_group) + mask |= XKB_STATE_LAYOUT_LATCHED; + if (a->locked_group != b->locked_group) + mask |= XKB_STATE_LAYOUT_LOCKED; + if (a->mods != b->mods) + mask |= XKB_STATE_MODS_EFFECTIVE; + if (a->base_mods != b->base_mods) + mask |= XKB_STATE_MODS_DEPRESSED; + if (a->latched_mods != b->latched_mods) + mask |= XKB_STATE_MODS_LATCHED; + if (a->locked_mods != b->locked_mods) + mask |= XKB_STATE_MODS_LOCKED; + if (a->leds != b->leds) + mask |= XKB_STATE_LEDS; + + return mask; +} + +/** + * Given a particular key event, updates the state structure to reflect the + * new modifiers. + */ +XKB_EXPORT enum xkb_state_component +xkb_state_update_key(struct xkb_state *state, xkb_keycode_t kc, + enum xkb_key_direction direction) +{ + xkb_mod_index_t i; + xkb_mod_mask_t bit; + struct state_components prev_components; + const struct xkb_key *key = XkbKey(state->keymap, kc); + + if (!key) + return 0; + + prev_components = state->components; + + state->set_mods = 0; + state->clear_mods = 0; + + xkb_filter_apply_all(state, key, direction); + + for (i = 0, bit = 1; state->set_mods; i++, bit <<= 1) { + if (state->set_mods & bit) { + state->mod_key_count[i]++; + state->components.base_mods |= bit; + state->set_mods &= ~bit; + } + } + + for (i = 0, bit = 1; state->clear_mods; i++, bit <<= 1) { + if (state->clear_mods & bit) { + state->mod_key_count[i]--; + if (state->mod_key_count[i] <= 0) { + state->components.base_mods &= ~bit; + state->mod_key_count[i] = 0; + } + state->clear_mods &= ~bit; + } + } + + xkb_state_update_derived(state); + + return get_state_component_changes(&prev_components, &state->components); +} + +/** + * Updates the state from a set of explicit masks as gained from + * xkb_state_serialize_mods and xkb_state_serialize_groups. As noted in the + * documentation for these functions in xkbcommon.h, this round-trip is + * lossy, and should only be used to update a slave state mirroring the + * master, e.g. in a client/server window system. + */ +XKB_EXPORT enum xkb_state_component +xkb_state_update_mask(struct xkb_state *state, + xkb_mod_mask_t base_mods, + xkb_mod_mask_t latched_mods, + xkb_mod_mask_t locked_mods, + xkb_layout_index_t base_group, + xkb_layout_index_t latched_group, + xkb_layout_index_t locked_group) +{ + struct state_components prev_components; + xkb_mod_mask_t mask; + + prev_components = state->components; + + /* Only include modifiers which exist in the keymap. */ + mask = (xkb_mod_mask_t) ((1ull << xkb_keymap_num_mods(state->keymap)) - 1u); + + state->components.base_mods = base_mods & mask; + state->components.latched_mods = latched_mods & mask; + state->components.locked_mods = locked_mods & mask; + + /* Make sure the mods are fully resolved - since we get arbitrary + * input, they might not be. + * + * It might seem more reasonable to do this only for components.mods + * in xkb_state_update_derived(), rather than for each component + * seperately. That would allow to distinguish between "really" + * depressed mods (would be in MODS_DEPRESSED) and indirectly + * depressed to to a mapping (would only be in MODS_EFFECTIVE). + * However, the traditional behavior of xkb_state_update_key() is that + * if a vmod is depressed, its mappings are depressed with it; so we're + * expected to do the same here. Also, LEDs (usually) look if a real + * mod is locked, not just effective; otherwise it won't be lit. + * + * We OR here because mod_mask_get_effective() drops vmods. */ + state->components.base_mods |= + mod_mask_get_effective(state->keymap, state->components.base_mods); + state->components.latched_mods |= + mod_mask_get_effective(state->keymap, state->components.latched_mods); + state->components.locked_mods |= + mod_mask_get_effective(state->keymap, state->components.locked_mods); + + state->components.base_group = base_group; + state->components.latched_group = latched_group; + state->components.locked_group = locked_group; + + xkb_state_update_derived(state); + + return get_state_component_changes(&prev_components, &state->components); +} + +/** + * Provides the symbols to use for the given key and state. Returns the + * number of symbols pointed to in syms_out. + */ +XKB_EXPORT int +xkb_state_key_get_syms(struct xkb_state *state, xkb_keycode_t kc, + const xkb_keysym_t **syms_out) +{ + xkb_layout_index_t layout; + xkb_level_index_t level; + + layout = xkb_state_key_get_layout(state, kc); + if (layout == XKB_LAYOUT_INVALID) + goto err; + + level = xkb_state_key_get_level(state, kc, layout); + if (level == XKB_LEVEL_INVALID) + goto err; + + return xkb_keymap_key_get_syms_by_level(state->keymap, kc, layout, level, + syms_out); + +err: + *syms_out = NULL; + return 0; +} + +/* + * http://www.x.org/releases/current/doc/kbproto/xkbproto.html#Interpreting_the_Lock_Modifier + */ +static bool +should_do_caps_transformation(struct xkb_state *state, xkb_keycode_t kc) +{ + xkb_mod_index_t caps = + xkb_keymap_mod_get_index(state->keymap, XKB_MOD_NAME_CAPS); + + return + xkb_state_mod_index_is_active(state, caps, XKB_STATE_MODS_EFFECTIVE) > 0 && + xkb_state_mod_index_is_consumed(state, kc, caps) == 0; +} + +/* + * http://www.x.org/releases/current/doc/kbproto/xkbproto.html#Interpreting_the_Control_Modifier + */ +static bool +should_do_ctrl_transformation(struct xkb_state *state, xkb_keycode_t kc) +{ + xkb_mod_index_t ctrl = + xkb_keymap_mod_get_index(state->keymap, XKB_MOD_NAME_CTRL); + + return + xkb_state_mod_index_is_active(state, ctrl, XKB_STATE_MODS_EFFECTIVE) > 0 && + xkb_state_mod_index_is_consumed(state, kc, ctrl) == 0; +} + +/* Verbatim from libX11:src/xkb/XKBBind.c */ +static char +XkbToControl(char ch) +{ + char c = ch; + + if ((c >= '@' && c < '\177') || c == ' ') + c &= 0x1F; + else if (c == '2') + c = '\000'; + else if (c >= '3' && c <= '7') + c -= ('3' - '\033'); + else if (c == '8') + c = '\177'; + else if (c == '/') + c = '_' & 0x1F; + return c; +} + +/** + * Provides either exactly one symbol, or XKB_KEY_NoSymbol. + */ +XKB_EXPORT xkb_keysym_t +xkb_state_key_get_one_sym(struct xkb_state *state, xkb_keycode_t kc) +{ + const xkb_keysym_t *syms; + xkb_keysym_t sym; + int num_syms; + + num_syms = xkb_state_key_get_syms(state, kc, &syms); + if (num_syms != 1) + return XKB_KEY_NoSymbol; + + sym = syms[0]; + + if (should_do_caps_transformation(state, kc)) + sym = xkb_keysym_to_upper(sym); + + return sym; +} + +/* + * The caps and ctrl transformations require some special handling, + * so we cannot simply use xkb_state_get_one_sym() for them. + * In particular, if Control is set, we must try very hard to find + * some layout in which the keysym is ASCII and thus can be (maybe) + * converted to a control character. libX11 allows to disable this + * behavior with the XkbLC_ControlFallback (see XkbSetXlibControls(3)), + * but it is enabled by default, yippee. + */ +static xkb_keysym_t +get_one_sym_for_string(struct xkb_state *state, xkb_keycode_t kc) +{ + xkb_level_index_t level; + xkb_layout_index_t layout, num_layouts; + const xkb_keysym_t *syms; + int nsyms; + xkb_keysym_t sym; + + layout = xkb_state_key_get_layout(state, kc); + num_layouts = xkb_keymap_num_layouts_for_key(state->keymap, kc); + level = xkb_state_key_get_level(state, kc, layout); + if (layout == XKB_LAYOUT_INVALID || num_layouts == 0 || + level == XKB_LEVEL_INVALID) + return XKB_KEY_NoSymbol; + + nsyms = xkb_keymap_key_get_syms_by_level(state->keymap, kc, + layout, level, &syms); + if (nsyms != 1) + return XKB_KEY_NoSymbol; + sym = syms[0]; + + if (should_do_ctrl_transformation(state, kc) && sym > 127u) { + for (xkb_layout_index_t i = 0; i < num_layouts; i++) { + level = xkb_state_key_get_level(state, kc, i); + if (level == XKB_LEVEL_INVALID) + continue; + + nsyms = xkb_keymap_key_get_syms_by_level(state->keymap, kc, + i, level, &syms); + if (nsyms == 1 && syms[0] <= 127u) { + sym = syms[0]; + break; + } + } + } + + if (should_do_caps_transformation(state, kc)) { + sym = xkb_keysym_to_upper(sym); + } + + return sym; +} + +XKB_EXPORT int +xkb_state_key_get_utf8(struct xkb_state *state, xkb_keycode_t kc, + char *buffer, size_t size) +{ + xkb_keysym_t sym; + const xkb_keysym_t *syms; + int nsyms; + int offset; + char tmp[7]; + + sym = get_one_sym_for_string(state, kc); + if (sym != XKB_KEY_NoSymbol) { + nsyms = 1; syms = &sym; + } + else { + nsyms = xkb_state_key_get_syms(state, kc, &syms); + } + + /* Make sure not to truncate in the middle of a UTF-8 sequence. */ + offset = 0; + for (int i = 0; i < nsyms; i++) { + int ret = xkb_keysym_to_utf8(syms[i], tmp, sizeof(tmp)); + if (ret <= 0) + goto err_bad; + + ret--; + if ((size_t) (offset + ret) <= size) + memcpy(buffer + offset, tmp, ret); + offset += ret; + } + + if ((size_t) offset >= size) + goto err_trunc; + buffer[offset] = '\0'; + + if (!is_valid_utf8(buffer, offset)) + goto err_bad; + + if (offset == 1 && (unsigned int) buffer[0] <= 127u && + should_do_ctrl_transformation(state, kc)) + buffer[0] = XkbToControl(buffer[0]); + + return offset; + +err_trunc: + if (size > 0) + buffer[size - 1] = '\0'; + return offset; + +err_bad: + if (size > 0) + buffer[0] = '\0'; + return 0; +} + +XKB_EXPORT uint32_t +xkb_state_key_get_utf32(struct xkb_state *state, xkb_keycode_t kc) +{ + xkb_keysym_t sym; + uint32_t cp; + + sym = get_one_sym_for_string(state, kc); + cp = xkb_keysym_to_utf32(sym); + + if (cp <= 127u && should_do_ctrl_transformation(state, kc)) + cp = (uint32_t) XkbToControl((char) cp); + + return cp; +} + +/** + * Serialises the requested modifier state into an xkb_mod_mask_t, with all + * the same disclaimers as in xkb_state_update_mask. + */ +XKB_EXPORT xkb_mod_mask_t +xkb_state_serialize_mods(struct xkb_state *state, + enum xkb_state_component type) +{ + xkb_mod_mask_t ret = 0; + + if (type & XKB_STATE_MODS_EFFECTIVE) + return state->components.mods; + + if (type & XKB_STATE_MODS_DEPRESSED) + ret |= state->components.base_mods; + if (type & XKB_STATE_MODS_LATCHED) + ret |= state->components.latched_mods; + if (type & XKB_STATE_MODS_LOCKED) + ret |= state->components.locked_mods; + + return ret; +} + +/** + * Serialises the requested group state, with all the same disclaimers as + * in xkb_state_update_mask. + */ +XKB_EXPORT xkb_layout_index_t +xkb_state_serialize_layout(struct xkb_state *state, + enum xkb_state_component type) +{ + xkb_layout_index_t ret = 0; + + if (type & XKB_STATE_LAYOUT_EFFECTIVE) + return state->components.group; + + if (type & XKB_STATE_LAYOUT_DEPRESSED) + ret += state->components.base_group; + if (type & XKB_STATE_LAYOUT_LATCHED) + ret += state->components.latched_group; + if (type & XKB_STATE_LAYOUT_LOCKED) + ret += state->components.locked_group; + + return ret; +} + +/** + * Gets a modifier mask and returns the resolved effective mask; this + * is needed because some modifiers can also map to other modifiers, e.g. + * the "NumLock" modifier usually also sets the "Mod2" modifier. + */ +xkb_mod_mask_t +mod_mask_get_effective(struct xkb_keymap *keymap, xkb_mod_mask_t mods) +{ + const struct xkb_mod *mod; + xkb_mod_index_t i; + xkb_mod_mask_t mask; + + /* The effective mask is only real mods for now. */ + mask = mods & MOD_REAL_MASK_ALL; + + xkb_mods_enumerate(i, mod, &keymap->mods) + if (mods & (1u << i)) + mask |= mod->mapping; + + return mask; +} + +/** + * Returns 1 if the given modifier is active with the specified type(s), 0 if + * not, or -1 if the modifier is invalid. + */ +XKB_EXPORT int +xkb_state_mod_index_is_active(struct xkb_state *state, + xkb_mod_index_t idx, + enum xkb_state_component type) +{ + if (idx >= xkb_keymap_num_mods(state->keymap)) + return -1; + + return !!(xkb_state_serialize_mods(state, type) & (1u << idx)); +} + +/** + * Helper function for xkb_state_mod_indices_are_active and + * xkb_state_mod_names_are_active. + */ +static int +match_mod_masks(struct xkb_state *state, + enum xkb_state_component type, + enum xkb_state_match match, + xkb_mod_mask_t wanted) +{ + xkb_mod_mask_t active = xkb_state_serialize_mods(state, type); + + if (!(match & XKB_STATE_MATCH_NON_EXCLUSIVE) && (active & ~wanted)) + return 0; + + if (match & XKB_STATE_MATCH_ANY) + return !!(active & wanted); + else + return (active & wanted) == wanted; + + return 0; +} + +/** + * Returns 1 if the modifiers are active with the specified type(s), 0 if + * not, or -1 if any of the modifiers are invalid. + */ +XKB_EXPORT int +xkb_state_mod_indices_are_active(struct xkb_state *state, + enum xkb_state_component type, + enum xkb_state_match match, + ...) +{ + va_list ap; + xkb_mod_index_t idx = 0; + xkb_mod_mask_t wanted = 0; + int ret = 0; + xkb_mod_index_t num_mods = xkb_keymap_num_mods(state->keymap); + + va_start(ap, match); + while (1) { + idx = va_arg(ap, xkb_mod_index_t); + if (idx == XKB_MOD_INVALID) + break; + if (idx >= num_mods) { + ret = -1; + break; + } + wanted |= (1u << idx); + } + va_end(ap); + + if (ret == -1) + return ret; + + return match_mod_masks(state, type, match, wanted); +} + +/** + * Returns 1 if the given modifier is active with the specified type(s), 0 if + * not, or -1 if the modifier is invalid. + */ +XKB_EXPORT int +xkb_state_mod_name_is_active(struct xkb_state *state, const char *name, + enum xkb_state_component type) +{ + xkb_mod_index_t idx = xkb_keymap_mod_get_index(state->keymap, name); + + if (idx == XKB_MOD_INVALID) + return -1; + + return xkb_state_mod_index_is_active(state, idx, type); +} + +/** + * Returns 1 if the modifiers are active with the specified type(s), 0 if + * not, or -1 if any of the modifiers are invalid. + */ +XKB_EXPORT ATTR_NULL_SENTINEL int +xkb_state_mod_names_are_active(struct xkb_state *state, + enum xkb_state_component type, + enum xkb_state_match match, + ...) +{ + va_list ap; + xkb_mod_index_t idx = 0; + xkb_mod_mask_t wanted = 0; + int ret = 0; + + va_start(ap, match); + while (1) { + const char *str = va_arg(ap, const char *); + if (str == NULL) + break; + idx = xkb_keymap_mod_get_index(state->keymap, str); + if (idx == XKB_MOD_INVALID) { + ret = -1; + break; + } + wanted |= (1u << idx); + } + va_end(ap); + + if (ret == -1) + return ret; + + return match_mod_masks(state, type, match, wanted); +} + +/** + * Returns 1 if the given group is active with the specified type(s), 0 if + * not, or -1 if the group is invalid. + */ +XKB_EXPORT int +xkb_state_layout_index_is_active(struct xkb_state *state, + xkb_layout_index_t idx, + enum xkb_state_component type) +{ + int ret = 0; + + if (idx >= state->keymap->num_groups) + return -1; + + if (type & XKB_STATE_LAYOUT_EFFECTIVE) + ret |= (state->components.group == idx); + if (type & XKB_STATE_LAYOUT_DEPRESSED) + ret |= (state->components.base_group == (int32_t) idx); + if (type & XKB_STATE_LAYOUT_LATCHED) + ret |= (state->components.latched_group == (int32_t) idx); + if (type & XKB_STATE_LAYOUT_LOCKED) + ret |= (state->components.locked_group == (int32_t) idx); + + return ret; +} + +/** + * Returns 1 if the given modifier is active with the specified type(s), 0 if + * not, or -1 if the modifier is invalid. + */ +XKB_EXPORT int +xkb_state_layout_name_is_active(struct xkb_state *state, const char *name, + enum xkb_state_component type) +{ + xkb_layout_index_t idx = xkb_keymap_layout_get_index(state->keymap, name); + + if (idx == XKB_LAYOUT_INVALID) + return -1; + + return xkb_state_layout_index_is_active(state, idx, type); +} + +/** + * Returns 1 if the given LED is active, 0 if not, or -1 if the LED is invalid. + */ +XKB_EXPORT int +xkb_state_led_index_is_active(struct xkb_state *state, xkb_led_index_t idx) +{ + if (idx >= state->keymap->num_leds || + state->keymap->leds[idx].name == XKB_ATOM_NONE) + return -1; + + return !!(state->components.leds & (1u << idx)); +} + +/** + * Returns 1 if the given LED is active, 0 if not, or -1 if the LED is invalid. + */ +XKB_EXPORT int +xkb_state_led_name_is_active(struct xkb_state *state, const char *name) +{ + xkb_led_index_t idx = xkb_keymap_led_get_index(state->keymap, name); + + if (idx == XKB_LED_INVALID) + return -1; + + return xkb_state_led_index_is_active(state, idx); +} + +static xkb_mod_mask_t +key_get_consumed(struct xkb_state *state, const struct xkb_key *key) +{ + const struct xkb_key_type *type; + const struct xkb_key_type_entry *entry; + xkb_mod_mask_t preserve; + xkb_layout_index_t group; + + group = xkb_state_key_get_layout(state, key->keycode); + if (group == XKB_LAYOUT_INVALID) + return 0; + + type = key->groups[group].type; + + entry = get_entry_for_key_state(state, key, group); + if (entry) + preserve = entry->preserve.mask; + else + preserve = 0; + + return type->mods.mask & ~preserve; +} + +/** + * Tests to see if a modifier is used up by our translation of a + * keycode to keysyms, taking note of the current modifier state and + * the appropriate key type's preserve information, if any. This allows + * the user to mask out the modifier in later processing of the + * modifiers, e.g. when implementing hot keys or accelerators. + * + * See also, for example: + * - XkbTranslateKeyCode(3), mod_rtrn return value, from libX11. + * - gdk_keymap_translate_keyboard_state, consumed_modifiers return value, + * from gtk+. + */ +XKB_EXPORT int +xkb_state_mod_index_is_consumed(struct xkb_state *state, xkb_keycode_t kc, + xkb_mod_index_t idx) +{ + const struct xkb_key *key = XkbKey(state->keymap, kc); + + if (!key || idx >= xkb_keymap_num_mods(state->keymap)) + return -1; + + return !!((1u << idx) & key_get_consumed(state, key)); +} + +/** + * Calculates which modifiers should be consumed during key processing, + * and returns the mask with all these modifiers removed. e.g. if + * given a state of Alt and Shift active for a two-level alphabetic + * key containing plus and equal on the first and second level + * respectively, will return a mask of only Alt, as Shift has been + * consumed by the type handling. + */ +XKB_EXPORT xkb_mod_mask_t +xkb_state_mod_mask_remove_consumed(struct xkb_state *state, xkb_keycode_t kc, + xkb_mod_mask_t mask) +{ + const struct xkb_key *key = XkbKey(state->keymap, kc); + + if (!key) + return 0; + + return mask & ~key_get_consumed(state, key); +} + +XKB_EXPORT xkb_mod_mask_t +xkb_state_key_get_consumed_mods(struct xkb_state *state, xkb_keycode_t kc) +{ + const struct xkb_key *key = XkbKey(state->keymap, kc); + + if (!key) + return 0; + + return key_get_consumed(state, key); +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c new file mode 100644 index 0000000..462d919 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/text.c @@ -0,0 +1,345 @@ +/************************************************************ + * Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +#include "keymap.h" +#include "text.h" + +bool +LookupString(const LookupEntry tab[], const char *string, + unsigned int *value_rtrn) +{ + if (!string) + return false; + + for (const LookupEntry *entry = tab; entry->name; entry++) { + if (istreq(entry->name, string)) { + *value_rtrn = entry->value; + return true; + } + } + + return false; +} + +const char * +LookupValue(const LookupEntry tab[], unsigned int value) +{ + for (const LookupEntry *entry = tab; entry->name; entry++) + if (entry->value == value) + return entry->name; + + return NULL; +} + +const LookupEntry ctrlMaskNames[] = { + { "RepeatKeys", CONTROL_REPEAT }, + { "Repeat", CONTROL_REPEAT }, + { "AutoRepeat", CONTROL_REPEAT }, + { "SlowKeys", CONTROL_SLOW }, + { "BounceKeys", CONTROL_DEBOUNCE }, + { "StickyKeys", CONTROL_STICKY }, + { "MouseKeys", CONTROL_MOUSEKEYS }, + { "MouseKeysAccel", CONTROL_MOUSEKEYS_ACCEL }, + { "AccessXKeys", CONTROL_AX }, + { "AccessXTimeout", CONTROL_AX_TIMEOUT }, + { "AccessXFeedback", CONTROL_AX_FEEDBACK }, + { "AudibleBell", CONTROL_BELL }, + { "IgnoreGroupLock", CONTROL_IGNORE_GROUP_LOCK }, + { "all", CONTROL_ALL }, + { "none", 0 }, + { "Overlay1", 0 }, + { "Overlay2", 0 }, + { NULL, 0 } +}; + +const LookupEntry modComponentMaskNames[] = { + { "base", XKB_STATE_MODS_DEPRESSED }, + { "latched", XKB_STATE_MODS_LATCHED }, + { "locked", XKB_STATE_MODS_LOCKED }, + { "effective", XKB_STATE_MODS_EFFECTIVE }, + { "compat", XKB_STATE_MODS_EFFECTIVE }, + { "any", XKB_STATE_MODS_EFFECTIVE }, + { "none", 0 }, + { NULL, 0 } +}; + +const LookupEntry groupComponentMaskNames[] = { + { "base", XKB_STATE_LAYOUT_DEPRESSED }, + { "latched", XKB_STATE_LAYOUT_LATCHED }, + { "locked", XKB_STATE_LAYOUT_LOCKED }, + { "effective", XKB_STATE_LAYOUT_EFFECTIVE }, + { "any", XKB_STATE_LAYOUT_EFFECTIVE }, + { "none", 0 }, + { NULL, 0 } +}; + +const LookupEntry groupMaskNames[] = { + { "Group1", 0x01 }, + { "Group2", 0x02 }, + { "Group3", 0x04 }, + { "Group4", 0x08 }, + { "Group5", 0x10 }, + { "Group6", 0x20 }, + { "Group7", 0x40 }, + { "Group8", 0x80 }, + { "none", 0x00 }, + { "all", 0xff }, + { NULL, 0 } +}; + +const LookupEntry groupNames[] = { + { "Group1", 1 }, + { "Group2", 2 }, + { "Group3", 3 }, + { "Group4", 4 }, + { "Group5", 5 }, + { "Group6", 6 }, + { "Group7", 7 }, + { "Group8", 8 }, + { NULL, 0 } +}; + +const LookupEntry levelNames[] = { + { "Level1", 1 }, + { "Level2", 2 }, + { "Level3", 3 }, + { "Level4", 4 }, + { "Level5", 5 }, + { "Level6", 6 }, + { "Level7", 7 }, + { "Level8", 8 }, + { NULL, 0 } +}; + +const LookupEntry buttonNames[] = { + { "Button1", 1 }, + { "Button2", 2 }, + { "Button3", 3 }, + { "Button4", 4 }, + { "Button5", 5 }, + { "default", 0 }, + { NULL, 0 } +}; + +const LookupEntry useModMapValueNames[] = { + { "LevelOne", 1 }, + { "Level1", 1 }, + { "AnyLevel", 0 }, + { "any", 0 }, + { NULL, 0 } +}; + +const LookupEntry actionTypeNames[] = { + { "NoAction", ACTION_TYPE_NONE }, + { "SetMods", ACTION_TYPE_MOD_SET }, + { "LatchMods", ACTION_TYPE_MOD_LATCH }, + { "LockMods", ACTION_TYPE_MOD_LOCK }, + { "SetGroup", ACTION_TYPE_GROUP_SET }, + { "LatchGroup", ACTION_TYPE_GROUP_LATCH }, + { "LockGroup", ACTION_TYPE_GROUP_LOCK }, + { "MovePtr", ACTION_TYPE_PTR_MOVE }, + { "MovePointer", ACTION_TYPE_PTR_MOVE }, + { "PtrBtn", ACTION_TYPE_PTR_BUTTON }, + { "PointerButton", ACTION_TYPE_PTR_BUTTON }, + { "LockPtrBtn", ACTION_TYPE_PTR_LOCK }, + { "LockPtrButton", ACTION_TYPE_PTR_LOCK }, + { "LockPointerButton", ACTION_TYPE_PTR_LOCK }, + { "LockPointerBtn", ACTION_TYPE_PTR_LOCK }, + { "SetPtrDflt", ACTION_TYPE_PTR_DEFAULT }, + { "SetPointerDefault", ACTION_TYPE_PTR_DEFAULT }, + { "Terminate", ACTION_TYPE_TERMINATE }, + { "TerminateServer", ACTION_TYPE_TERMINATE }, + { "SwitchScreen", ACTION_TYPE_SWITCH_VT }, + { "SetControls", ACTION_TYPE_CTRL_SET }, + { "LockControls", ACTION_TYPE_CTRL_LOCK }, + { "Private", ACTION_TYPE_PRIVATE }, + /* deprecated actions below here - unused */ + { "RedirectKey", ACTION_TYPE_NONE }, + { "Redirect", ACTION_TYPE_NONE }, + { "ISOLock", ACTION_TYPE_NONE }, + { "ActionMessage", ACTION_TYPE_NONE }, + { "MessageAction", ACTION_TYPE_NONE }, + { "Message", ACTION_TYPE_NONE }, + { "DeviceBtn", ACTION_TYPE_NONE }, + { "DevBtn", ACTION_TYPE_NONE }, + { "DevButton", ACTION_TYPE_NONE }, + { "DeviceButton", ACTION_TYPE_NONE }, + { "LockDeviceBtn", ACTION_TYPE_NONE }, + { "LockDevBtn", ACTION_TYPE_NONE }, + { "LockDevButton", ACTION_TYPE_NONE }, + { "LockDeviceButton", ACTION_TYPE_NONE }, + { "DeviceValuator", ACTION_TYPE_NONE }, + { "DevVal", ACTION_TYPE_NONE }, + { "DeviceVal", ACTION_TYPE_NONE }, + { "DevValuator", ACTION_TYPE_NONE }, + { NULL, 0 }, +}; + +const LookupEntry symInterpretMatchMaskNames[] = { + { "NoneOf", MATCH_NONE }, + { "AnyOfOrNone", MATCH_ANY_OR_NONE }, + { "AnyOf", MATCH_ANY }, + { "AllOf", MATCH_ALL }, + { "Exactly", MATCH_EXACTLY }, +}; + +const char * +ModIndexText(struct xkb_context *ctx, const struct xkb_mod_set *mods, + xkb_mod_index_t ndx) +{ + if (ndx == XKB_MOD_INVALID) + return "none"; + + if (ndx >= mods->num_mods) + return NULL; + + return xkb_atom_text(ctx, mods->mods[ndx].name); +} + +const char * +ActionTypeText(enum xkb_action_type type) +{ + const char *name = LookupValue(actionTypeNames, type); + return name ? name : "Private"; +} + +const char * +KeysymText(struct xkb_context *ctx, xkb_keysym_t sym) +{ + char *buffer = xkb_context_get_buffer(ctx, 64); + xkb_keysym_get_name(sym, buffer, 64); + return buffer; +} + +const char * +KeyNameText(struct xkb_context *ctx, xkb_atom_t name) +{ + const char *sname = xkb_atom_text(ctx, name); + size_t len = strlen_safe(sname) + 3; + char *buf = xkb_context_get_buffer(ctx, len); + snprintf(buf, len, "<%s>", strempty(sname)); + return buf; +} + +const char * +SIMatchText(enum xkb_match_operation type) +{ + return LookupValue(symInterpretMatchMaskNames, type); +} + +const char * +ModMaskText(struct xkb_context *ctx, const struct xkb_mod_set *mods, + xkb_mod_mask_t mask) +{ + char buf[1024]; + size_t pos = 0; + xkb_mod_index_t i; + const struct xkb_mod *mod; + + if (mask == 0) + return "none"; + + if (mask == MOD_REAL_MASK_ALL) + return "all"; + + xkb_mods_enumerate(i, mod, mods) { + int ret; + + if (!(mask & (1u << i))) + continue; + + ret = snprintf(buf + pos, sizeof(buf) - pos, "%s%s", + pos == 0 ? "" : "+", + xkb_atom_text(ctx, mod->name)); + if (ret <= 0 || pos + ret >= sizeof(buf)) + break; + else + pos += ret; + } + + return strcpy(xkb_context_get_buffer(ctx, pos + 1), buf); +} + +const char * +LedStateMaskText(struct xkb_context *ctx, enum xkb_state_component mask) +{ + char buf[1024]; + size_t pos = 0; + + if (mask == 0) + return "0"; + + for (unsigned i = 0; mask; i++) { + int ret; + + if (!(mask & (1u << i))) + continue; + + mask &= ~(1u << i); + + ret = snprintf(buf + pos, sizeof(buf) - pos, "%s%s", + pos == 0 ? "" : "+", + LookupValue(modComponentMaskNames, 1u << i)); + if (ret <= 0 || pos + ret >= sizeof(buf)) + break; + else + pos += ret; + } + + return strcpy(xkb_context_get_buffer(ctx, pos + 1), buf); +} + +const char * +ControlMaskText(struct xkb_context *ctx, enum xkb_action_controls mask) +{ + char buf[1024]; + size_t pos = 0; + + if (mask == 0) + return "none"; + + if (mask == CONTROL_ALL) + return "all"; + + for (unsigned i = 0; mask; i++) { + int ret; + + if (!(mask & (1u << i))) + continue; + + mask &= ~(1u << i); + + ret = snprintf(buf + pos, sizeof(buf) - pos, "%s%s", + pos == 0 ? "" : "+", + LookupValue(ctrlMaskNames, 1u << i)); + if (ret <= 0 || pos + ret >= sizeof(buf)) + break; + else + pos += ret; + } + + return strcpy(xkb_context_get_buffer(ctx, pos + 1), buf); +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/text.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/text.h new file mode 100644 index 0000000..584dea6 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/text.h @@ -0,0 +1,76 @@ +/* + * Copyright © 2009 Dan Nicholson + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef TEXT_H +#define TEXT_H + +typedef struct { + const char *name; + unsigned int value; +} LookupEntry; + +bool +LookupString(const LookupEntry tab[], const char *string, + unsigned int *value_rtrn); + +const char * +LookupValue(const LookupEntry tab[], unsigned int value); + +extern const LookupEntry ctrlMaskNames[]; +extern const LookupEntry modComponentMaskNames[]; +extern const LookupEntry groupComponentMaskNames[]; +extern const LookupEntry groupMaskNames[]; +extern const LookupEntry groupNames[]; +extern const LookupEntry levelNames[]; +extern const LookupEntry buttonNames[]; +extern const LookupEntry useModMapValueNames[]; +extern const LookupEntry actionTypeNames[]; +extern const LookupEntry symInterpretMatchMaskNames[]; + +const char * +ModMaskText(struct xkb_context *ctx, const struct xkb_mod_set *mods, + xkb_mod_mask_t mask); + +const char * +ModIndexText(struct xkb_context *ctx, const struct xkb_mod_set *mods, + xkb_mod_index_t ndx); + +const char * +ActionTypeText(enum xkb_action_type type); + +const char * +KeysymText(struct xkb_context *ctx, xkb_keysym_t sym); + +const char * +KeyNameText(struct xkb_context *ctx, xkb_atom_t name); + +const char * +SIMatchText(enum xkb_match_operation type); + +const char * +LedStateMaskText(struct xkb_context *ctx, enum xkb_state_component mask); + +const char * +ControlMaskText(struct xkb_context *ctx, enum xkb_action_controls mask); + +#endif /* TEXT_H */ diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c new file mode 100644 index 0000000..11382c8 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.c @@ -0,0 +1,142 @@ +/* + * Copyright © 2012 Intel Corporation + * Copyright © 2014 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Rob Bradford + */ + +#include +#include +#include + +#include "utf8.h" + +int +utf32_to_utf8(uint32_t unichar, char *buffer) +{ + int count, shift, length; + uint8_t head; + + if (unichar <= 0x007f) { + buffer[0] = unichar; + buffer[1] = '\0'; + return 2; + } + else if (unichar <= 0x07FF) { + length = 2; + head = 0xc0; + } + else if (unichar <= 0xffff) { + length = 3; + head = 0xe0; + } + else if (unichar <= 0x1fffff) { + length = 4; + head = 0xf0; + } + else if (unichar <= 0x3ffffff) { + length = 5; + head = 0xf8; + } + else { + length = 6; + head = 0xfc; + } + + for (count = length - 1, shift = 0; count > 0; count--, shift += 6) + buffer[count] = 0x80 | ((unichar >> shift) & 0x3f); + + buffer[0] = head | ((unichar >> shift) & 0x3f); + buffer[length] = '\0'; + + return length + 1; +} + +bool +is_valid_utf8(const char *ss, size_t len) +{ + size_t i = 0; + size_t tail_bytes = 0; + const uint8_t *s = (const uint8_t *) ss; + + /* This beauty is from: + * The Unicode Standard Version 6.2 - Core Specification, Table 3.7 + * http://www.unicode.org/versions/Unicode6.2.0/ch03.pdf#G7404 + * We can optimize if needed. */ + while (i < len) + { + if (s[i] <= 0x7F) { + tail_bytes = 0; + } + else if (s[i] >= 0xC2 && s[i] <= 0xDF) { + tail_bytes = 1; + } + else if (s[i] == 0xE0) { + i++; + if (i >= len || !(s[i] >= 0xA0 && s[i] <= 0xBF)) + return false; + tail_bytes = 1; + } + else if (s[i] >= 0xE1 && s[i] <= 0xEC) { + tail_bytes = 2; + } + else if (s[i] == 0xED) { + i++; + if (i >= len || !(s[i] >= 0x80 && s[i] <= 0x9F)) + return false; + tail_bytes = 1; + } + else if (s[i] >= 0xEE && s[i] <= 0xEF) { + tail_bytes = 2; + } + else if (s[i] == 0xF0) { + i++; + if (i >= len || !(s[i] >= 0x90 && s[i] <= 0xBF)) + return false; + tail_bytes = 2; + } + else if (s[i] >= 0xF1 && s[i] <= 0xF3) { + tail_bytes = 3; + } + else if (s[i] == 0xF4) { + i++; + if (i >= len || !(s[i] >= 0x80 && s[i] <= 0x8F)) + return false; + tail_bytes = 2; + } + else { + return false; + } + + i++; + + while (i < len && tail_bytes > 0 && s[i] >= 0x80 && s[i] <= 0xBF) { + i++; + tail_bytes--; + } + + if (tail_bytes != 0) + return false; + } + + return true; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.h new file mode 100644 index 0000000..6371cb5 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/utf8.h @@ -0,0 +1,36 @@ +/* + * Copyright © 2012 Intel Corporation + * Copyright © 2014 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Rob Bradford + */ + +#ifndef XKBCOMMON_UTF8_H +#define XKBCOMMON_UTF8_H + +int +utf32_to_utf8(uint32_t unichar, char *buffer); + +bool +is_valid_utf8(const char *ss, size_t len); + +#endif diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c new file mode 100644 index 0000000..a00b04e --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.c @@ -0,0 +1,107 @@ +/* + * Copyright © 2013 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "utils.h" + +#ifdef HAVE_MMAP + +#include +#include +#include +#include +#include + +bool +map_file(FILE *file, const char **string_out, size_t *size_out) +{ + struct stat stat_buf; + const int fd = fileno(file); + char *string; + + /* Make sure to keep the errno on failure! */ + + if (fstat(fd, &stat_buf) != 0) + return false; + + string = mmap(NULL, stat_buf.st_size, PROT_READ, MAP_SHARED, fd, 0); + if (string == MAP_FAILED) + return false; + + *string_out = string; + *size_out = stat_buf.st_size; + return true; +} + +void +unmap_file(const char *str, size_t size) +{ + munmap(UNCONSTIFY(str), size); +} + +#else + +bool +map_file(FILE *file, const char **string_out, size_t *size_out) +{ + long ret; + size_t ret_s; + char *string; + size_t size; + + /* Make sure to keep the errno on failure! */ + + ret = fseek(file, 0, SEEK_END); + if (ret != 0) + return false; + + ret = ftell(file); + if (ret < 0) + return false; + size = (size_t) ret; + + ret = fseek(file, 0, SEEK_SET); + if (ret < 0) + return false; + + string = malloc(size); + if (!string) + return false; + + ret_s = fread(string, 1, size, file); + if (ret_s < size) { + free(string); + return false; + } + + *string_out = string; + *size_out = size; + return true; +} + +void +unmap_file(const char *str, size_t size) +{ + free(UNCONSTIFY(str)); +} + +#endif diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.h new file mode 100644 index 0000000..508435d --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/utils.h @@ -0,0 +1,254 @@ +/* + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef UTILS_H +#define UTILS_H 1 + +#include +#include +#include +#include +#include +#include + +#include "darray.h" + +/* + * We sometimes malloc strings and then expose them as const char*'s. This + * macro is used when we free these strings in order to avoid -Wcast-qual + * errors. + */ +#define UNCONSTIFY(const_ptr) ((void *) (uintptr_t) (const_ptr)) + +#define STATIC_ASSERT(expr, message) do { \ + switch (0) { case 0: case (expr): ; } \ +} while (0) + +static inline bool +streq(const char *s1, const char *s2) +{ + return strcmp(s1, s2) == 0; +} + +static inline bool +streq_not_null(const char *s1, const char *s2) +{ + if (!s1 || !s2) + return false; + return streq(s1, s2); +} + +static inline bool +istreq(const char *s1, const char *s2) +{ + return strcasecmp(s1, s2) == 0; +} + +static inline bool +istreq_prefix(const char *s1, const char *s2) +{ + return strncasecmp(s1, s2, strlen(s1)) == 0; +} + +static inline char * +strdup_safe(const char *s) +{ + return s ? strdup(s) : NULL; +} + +static inline size_t +strlen_safe(const char *s) +{ + return s ? strlen(s) : 0; +} + +static inline bool +isempty(const char *s) +{ + return s == NULL || s[0] == '\0'; +} + +static inline const char * +strnull(const char *s) +{ + return s ? s : "(null)"; +} + +static inline const char * +strempty(const char *s) +{ + return s ? s : ""; +} + +static inline void * +memdup(const void *mem, size_t nmemb, size_t size) +{ + void *p = calloc(nmemb, size); + if (p) + memcpy(p, mem, nmemb * size); + return p; +} + +static inline int +min(int misc, int other) +{ + return (misc < other) ? misc : other; +} + +static inline int +max(int misc, int other) +{ + return (misc > other) ? misc : other; +} + +/* ctype.h is locale-dependent and has other oddities. */ +static inline bool +is_space(char ch) +{ + return ch == ' ' || (ch >= '\t' && ch <= '\r'); +} + +static inline bool +is_alpha(char ch) +{ + return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'); +} + +static inline bool +is_digit(char ch) +{ + return ch >= '0' && ch <= '9'; +} + +static inline bool +is_alnum(char ch) +{ + return is_alpha(ch) || is_digit(ch); +} + +static inline bool +is_xdigit(char ch) +{ + return + (ch >= '0' && ch <= '9') || + (ch >= 'a' && ch <= 'f') || + (ch >= 'A' && ch <= 'F'); +} + +static inline bool +is_graph(char ch) +{ + /* See table in ascii(7). */ + return ch >= '!' && ch <= '~'; +} + +/* + * Return the bit position of the most significant bit. + * Note: this is 1-based! It's more useful this way, and returns 0 when + * mask is all 0s. + */ +static inline unsigned +msb_pos(uint32_t mask) +{ + unsigned pos = 0; + while (mask) { + pos++; + mask >>= 1u; + } + return pos; +} + +bool +map_file(FILE *file, const char **string_out, size_t *size_out); + +void +unmap_file(const char *str, size_t size); + +#define ARRAY_SIZE(arr) ((sizeof(arr) / sizeof(*(arr)))) + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define MIN3(a, b, c) MIN(MIN((a), (b)), (c)) +#define MAX(a, b) ((a) > (b) ? (a) : (b)) +#define MAX3(a, b, c) MAX(MAX((a), (b)), (c)) + +/* Round up @a so it's divisible by @b. */ +#define ROUNDUP(a, b) (((a) + (b) - 1) / (b) * (b)) + +#if defined(HAVE_SECURE_GETENV) +# define secure_getenv secure_getenv +#elif defined(HAVE___SECURE_GETENV) +# define secure_getenv __secure_getenv +#else +# define secure_getenv getenv +#endif + +#if defined(HAVE___BUILTIN_EXPECT) +# define likely(x) __builtin_expect(!!(x), 1) +# define unlikely(x) __builtin_expect(!!(x), 0) +#else +# define likely(x) (x) +# define unlikely(x) (x) +#endif + +/* Compiler Attributes */ + +#if defined(__GNUC__) && (__GNUC__ >= 4) && !defined(__CYGWIN__) +# define XKB_EXPORT __attribute__((visibility("default"))) +#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) +# define XKB_EXPORT __global +#else /* not gcc >= 4 and not Sun Studio >= 8 */ +# define XKB_EXPORT +#endif + +#if defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 203) +# define ATTR_PRINTF(x,y) __attribute__((__format__(__printf__, x, y))) +#else /* not gcc >= 2.3 */ +# define ATTR_PRINTF(x,y) +#endif + +#if (defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 205)) \ + || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)) +# define ATTR_NORETURN __attribute__((__noreturn__)) +#else +# define ATTR_NORETURN +#endif /* GNUC */ + +#if (defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 296) +#define ATTR_MALLOC __attribute__((__malloc__)) +#else +#define ATTR_MALLOC +#endif + +#if defined(__GNUC__) && (__GNUC__ >= 4) +# define ATTR_NULL_SENTINEL __attribute__((__sentinel__)) +#else +# define ATTR_NULL_SENTINEL +#endif /* GNUC >= 4 */ + +#if (defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 295) +#define ATTR_PACKED __attribute__((__packed__)) +#else +#define ATTR_PACKED +#endif + +#endif /* UTILS_H */ diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/x11/keymap.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/x11/keymap.c new file mode 100644 index 0000000..0e7a890 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/x11/keymap.c @@ -0,0 +1,1176 @@ +/* + * Copyright © 2013 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "x11-priv.h" + +/* + * References for the lonesome traveler: + * Xkb protocol specification: + * http://www.x.org/releases/current/doc/kbproto/xkbproto.html + * The XCB xkb XML protocol file: + * /user/share/xcb/xkb.xml + * The XCB xkb header file: + * /usr/include/xcb/xkb.h + * The old kbproto header files: + * /usr/include/X11/extensions/XKB{,proto,str}.h + * Xlib XKB source code: + * /src/xkb/XKBGetMap.c (and friends) + * X server XKB protocol handling: + * /xkb/xkb.c + * Man pages: + * XkbGetMap(3), XkbGetCompatMap(3), etc. + */ + +/* Constants from /usr/include/X11/extensions/XKB.h */ +/* XkbNumModifiers. */ +#define NUM_REAL_MODS 8u +/* XkbNumVirtualMods. */ +#define NUM_VMODS 16u +/* XkbNoModifier. */ +#define NO_MODIFIER 0xff +/* XkbNumIndicators. */ +#define NUM_INDICATORS 32u +/* XkbAllIndicatorsMask. */ +#define ALL_INDICATORS_MASK 0xffffffff + +/* Some macros. Not very nice but it'd be worse without them. */ + +/* + * We try not to trust the server too much and be paranoid. If we get + * something which we definitely shouldn't, we fail. + */ +#define STRINGIFY(expr) #expr +#define FAIL_UNLESS(expr) do { \ + if (!(expr)) { \ + log_err(keymap->ctx, \ + "x11: failed to get keymap from X server: unmet condition in %s(): %s\n", \ + __func__, STRINGIFY(expr)); \ + goto fail; \ + } \ +} while (0) + +#define FAIL_IF_BAD_REPLY(reply, request_name) do { \ + if (!reply) { \ + log_err(keymap->ctx, \ + "x11: failed to get keymap from X server: %s request failed\n", \ + (request_name)); \ + goto fail; \ + } \ +} while (0) + +#define ALLOC_OR_FAIL(arr, nmemb) do { \ + if ((nmemb) > 0) { \ + (arr) = calloc((nmemb), sizeof(*(arr))); \ + if (!(arr)) \ + goto fail; \ + } \ +} while (0) + + +static xkb_mod_mask_t +translate_mods(uint8_t rmods, uint16_t vmods_low, uint16_t vmods_high) +{ + /* We represent mod masks in a single uint32_t value, with real mods + * first and vmods after (though we don't make these distinctions). */ + return + ((xkb_mod_mask_t) rmods) | + ((xkb_mod_mask_t) vmods_low << 8) | + ((xkb_mod_mask_t) vmods_high << 16); +} + +static enum xkb_action_controls +translate_controls_mask(uint32_t wire) +{ + enum xkb_action_controls ret = 0; + if (wire & XCB_XKB_BOOL_CTRL_REPEAT_KEYS) + ret |= CONTROL_REPEAT; + if (wire & XCB_XKB_BOOL_CTRL_SLOW_KEYS) + ret |= CONTROL_SLOW; + if (wire & XCB_XKB_BOOL_CTRL_BOUNCE_KEYS) + ret |= CONTROL_DEBOUNCE; + if (wire & XCB_XKB_BOOL_CTRL_STICKY_KEYS) + ret |= CONTROL_STICKY; + if (wire & XCB_XKB_BOOL_CTRL_MOUSE_KEYS) + ret |= CONTROL_MOUSEKEYS; + if (wire & XCB_XKB_BOOL_CTRL_MOUSE_KEYS_ACCEL) + ret |= CONTROL_MOUSEKEYS_ACCEL; + if (wire & XCB_XKB_BOOL_CTRL_ACCESS_X_KEYS) + ret |= CONTROL_AX; + if (wire & XCB_XKB_BOOL_CTRL_ACCESS_X_TIMEOUT_MASK) + ret |= CONTROL_AX_TIMEOUT; + if (wire & XCB_XKB_BOOL_CTRL_ACCESS_X_FEEDBACK_MASK) + ret |= CONTROL_AX_FEEDBACK; + if (wire & XCB_XKB_BOOL_CTRL_AUDIBLE_BELL_MASK) + ret |= CONTROL_BELL; + if (wire & XCB_XKB_BOOL_CTRL_IGNORE_GROUP_LOCK_MASK) + ret |= CONTROL_IGNORE_GROUP_LOCK; + /* Some controls are not supported and don't appear here. */ + return ret; +} + +static void +translate_action(union xkb_action *action, const xcb_xkb_action_t *wire) +{ + switch (wire->type) { + case XCB_XKB_SA_TYPE_SET_MODS: + action->type = ACTION_TYPE_MOD_SET; + + action->mods.mods.mods = translate_mods(wire->setmods.realMods, + wire->setmods.vmodsLow, + wire->setmods.vmodsHigh); + action->mods.mods.mask = translate_mods(wire->setmods.mask, 0, 0); + + if (wire->setmods.flags & XCB_XKB_SA_CLEAR_LOCKS) + action->mods.flags |= ACTION_LOCK_CLEAR; + if (wire->setmods.flags & XCB_XKB_SA_LATCH_TO_LOCK) + action->mods.flags |= ACTION_LATCH_TO_LOCK; + if (wire->setmods.flags & XCB_XKB_SA_USE_MOD_MAP_MODS) + action->mods.flags |= ACTION_MODS_LOOKUP_MODMAP; + + break; + case XCB_XKB_SA_TYPE_LATCH_MODS: + action->type = ACTION_TYPE_MOD_LATCH; + + action->mods.mods.mods = translate_mods(wire->latchmods.realMods, + wire->latchmods.vmodsLow, + wire->latchmods.vmodsHigh); + action->mods.mods.mask = translate_mods(wire->latchmods.mask, 0, 0); + + if (wire->latchmods.flags & XCB_XKB_SA_CLEAR_LOCKS) + action->mods.flags |= ACTION_LOCK_CLEAR; + if (wire->latchmods.flags & XCB_XKB_SA_LATCH_TO_LOCK) + action->mods.flags |= ACTION_LATCH_TO_LOCK; + if (wire->latchmods.flags & XCB_XKB_SA_USE_MOD_MAP_MODS) + action->mods.flags |= ACTION_MODS_LOOKUP_MODMAP; + + break; + case XCB_XKB_SA_TYPE_LOCK_MODS: + action->type = ACTION_TYPE_MOD_LOCK; + + action->mods.mods.mods = translate_mods(wire->lockmods.realMods, + wire->lockmods.vmodsLow, + wire->lockmods.vmodsHigh); + action->mods.mods.mask = translate_mods(wire->lockmods.mask, 0, 0); + + if (wire->lockmods.flags & XCB_XKB_SA_ISO_LOCK_FLAG_NO_LOCK) + action->mods.flags |= ACTION_LOCK_NO_LOCK; + if (wire->lockmods.flags & XCB_XKB_SA_ISO_LOCK_FLAG_NO_UNLOCK) + action->mods.flags |= ACTION_LOCK_NO_UNLOCK; + if (wire->lockmods.flags & XCB_XKB_SA_USE_MOD_MAP_MODS) + action->mods.flags |= ACTION_MODS_LOOKUP_MODMAP; + + break; + case XCB_XKB_SA_TYPE_SET_GROUP: + action->type = ACTION_TYPE_GROUP_SET; + + action->group.group = wire->setgroup.group; + + if (wire->setmods.flags & XCB_XKB_SA_CLEAR_LOCKS) + action->group.flags |= ACTION_LOCK_CLEAR; + if (wire->setmods.flags & XCB_XKB_SA_LATCH_TO_LOCK) + action->group.flags |= ACTION_LATCH_TO_LOCK; + if (wire->setmods.flags & XCB_XKB_SA_ISO_LOCK_FLAG_GROUP_ABSOLUTE) + action->group.flags |= ACTION_ABSOLUTE_SWITCH; + + break; + case XCB_XKB_SA_TYPE_LATCH_GROUP: + action->type = ACTION_TYPE_GROUP_LATCH; + + action->group.group = wire->latchgroup.group; + + if (wire->latchmods.flags & XCB_XKB_SA_CLEAR_LOCKS) + action->group.flags |= ACTION_LOCK_CLEAR; + if (wire->latchmods.flags & XCB_XKB_SA_LATCH_TO_LOCK) + action->group.flags |= ACTION_LATCH_TO_LOCK; + if (wire->latchmods.flags & XCB_XKB_SA_ISO_LOCK_FLAG_GROUP_ABSOLUTE) + action->group.flags |= ACTION_ABSOLUTE_SWITCH; + + break; + case XCB_XKB_SA_TYPE_LOCK_GROUP: + action->type = ACTION_TYPE_GROUP_LOCK; + + action->group.group = wire->lockgroup.group; + + if (wire->lockgroup.flags & XCB_XKB_SA_ISO_LOCK_FLAG_GROUP_ABSOLUTE) + action->group.flags |= ACTION_ABSOLUTE_SWITCH; + + break; + case XCB_XKB_SA_TYPE_MOVE_PTR: + action->type = ACTION_TYPE_PTR_MOVE; + + action->ptr.x = (wire->moveptr.xLow | (wire->moveptr.xHigh << 8)); + action->ptr.y = (wire->moveptr.yLow | (wire->moveptr.yHigh << 8)); + + if (!(wire->moveptr.flags & XCB_XKB_SA_MOVE_PTR_FLAG_NO_ACCELERATION)) + action->ptr.flags |= ACTION_ACCEL; + if (wire->moveptr.flags & XCB_XKB_SA_MOVE_PTR_FLAG_MOVE_ABSOLUTE_X) + action->ptr.flags |= ACTION_ABSOLUTE_X; + if (wire->moveptr.flags & XCB_XKB_SA_MOVE_PTR_FLAG_MOVE_ABSOLUTE_Y) + action->ptr.flags |= ACTION_ABSOLUTE_Y; + + break; + case XCB_XKB_SA_TYPE_PTR_BTN: + action->type = ACTION_TYPE_PTR_BUTTON; + + action->btn.count = wire->ptrbtn.count; + action->btn.button = wire->ptrbtn.button; + action->btn.flags = 0; + + break; + case XCB_XKB_SA_TYPE_LOCK_PTR_BTN: + action->type = ACTION_TYPE_PTR_LOCK; + + action->btn.button = wire->lockptrbtn.button; + + if (wire->lockptrbtn.flags & XCB_XKB_SA_ISO_LOCK_FLAG_NO_LOCK) + action->btn.flags |= ACTION_LOCK_NO_LOCK; + if (wire->lockptrbtn.flags & XCB_XKB_SA_ISO_LOCK_FLAG_NO_UNLOCK) + action->btn.flags |= ACTION_LOCK_NO_UNLOCK; + + break; + case XCB_XKB_SA_TYPE_SET_PTR_DFLT: + action->type = ACTION_TYPE_PTR_DEFAULT; + + action->dflt.value = wire->setptrdflt.value; + + if (wire->setptrdflt.flags & XCB_XKB_SA_SET_PTR_DFLT_FLAG_DFLT_BTN_ABSOLUTE) + action->dflt.flags |= ACTION_ABSOLUTE_SWITCH; + + break; + case XCB_XKB_SA_TYPE_TERMINATE: + action->type = ACTION_TYPE_TERMINATE; + + break; + case XCB_XKB_SA_TYPE_SWITCH_SCREEN: + action->type = ACTION_TYPE_SWITCH_VT; + + action->screen.screen = wire->switchscreen.newScreen; + + if (!(wire->switchscreen.flags & XCB_XKB_SWITCH_SCREEN_FLAG_APPLICATION)) + action->screen.flags |= ACTION_SAME_SCREEN; + if (wire->switchscreen.flags & XCB_XKB_SWITCH_SCREEN_FLAG_ABSOLUTE) + action->screen.flags |= ACTION_ABSOLUTE_SWITCH; + + break; + case XCB_XKB_SA_TYPE_SET_CONTROLS: + action->type = ACTION_TYPE_CTRL_SET; + { + const uint16_t mask = (wire->setcontrols.boolCtrlsLow | + (wire->setcontrols.boolCtrlsHigh << 8)); + action->ctrls.ctrls = translate_controls_mask(mask); + } + break; + case XCB_XKB_SA_TYPE_LOCK_CONTROLS: + action->type = ACTION_TYPE_CTRL_LOCK; + { + const uint16_t mask = (wire->lockcontrols.boolCtrlsLow | + (wire->lockcontrols.boolCtrlsHigh << 8)); + action->ctrls.ctrls = translate_controls_mask(mask); + } + break; + + case XCB_XKB_SA_TYPE_NO_ACTION: + /* We don't support these. */ + case XCB_XKB_SA_TYPE_ISO_LOCK: + case XCB_XKB_SA_TYPE_REDIRECT_KEY: + case XCB_XKB_SA_TYPE_ACTION_MESSAGE: + case XCB_XKB_SA_TYPE_DEVICE_BTN: + case XCB_XKB_SA_TYPE_LOCK_DEVICE_BTN: + case XCB_XKB_SA_TYPE_DEVICE_VALUATOR: + action->type = ACTION_TYPE_NONE; + break; + + default: + if (wire->type < ACTION_TYPE_PRIVATE) { + action->type = ACTION_TYPE_NONE; + break; + } + + /* Treat high unknown actions as Private actions. */ + action->priv.type = wire->noaction.type; + STATIC_ASSERT(sizeof(action->priv.data) == 7 && + sizeof(wire->noaction.pad0) == 7, + "The private action data must be 7 bytes long!"); + memcpy(action->priv.data, wire->noaction.pad0, 7); + break; + } +} + +static bool +get_types(struct xkb_keymap *keymap, xcb_connection_t *conn, + xcb_xkb_get_map_reply_t *reply, xcb_xkb_get_map_map_t *map) +{ + int types_length = xcb_xkb_get_map_map_types_rtrn_length(reply, map); + xcb_xkb_key_type_iterator_t types_iter = + xcb_xkb_get_map_map_types_rtrn_iterator(reply, map); + + FAIL_UNLESS(reply->firstType == 0); + + keymap->num_types = reply->nTypes; + ALLOC_OR_FAIL(keymap->types, keymap->num_types); + + for (int i = 0; i < types_length; i++) { + xcb_xkb_key_type_t *wire_type = types_iter.data; + struct xkb_key_type *type = &keymap->types[i]; + + FAIL_UNLESS(wire_type->numLevels > 0); + + type->mods.mods = translate_mods(wire_type->mods_mods, + wire_type->mods_vmods, 0); + type->mods.mask = translate_mods(wire_type->mods_mask, 0, 0); + type->num_levels = wire_type->numLevels; + + { + int entries_length = xcb_xkb_key_type_map_length(wire_type); + xcb_xkb_kt_map_entry_iterator_t entries_iter = + xcb_xkb_key_type_map_iterator(wire_type); + + type->num_entries = wire_type->nMapEntries; + ALLOC_OR_FAIL(type->entries, type->num_entries); + + for (int j = 0; j < entries_length; j++) { + xcb_xkb_kt_map_entry_t *wire_entry = entries_iter.data; + struct xkb_key_type_entry *entry = &type->entries[j]; + + FAIL_UNLESS(wire_entry->level < type->num_levels); + + entry->level = wire_entry->level; + entry->mods.mods = translate_mods(wire_entry->mods_mods, + wire_entry->mods_vmods, 0); + entry->mods.mask = translate_mods(wire_entry->mods_mask, 0, 0); + + xcb_xkb_kt_map_entry_next(&entries_iter); + } + } + + { + int preserves_length = xcb_xkb_key_type_preserve_length(wire_type); + xcb_xkb_mod_def_iterator_t preserves_iter = + xcb_xkb_key_type_preserve_iterator(wire_type); + + FAIL_UNLESS((unsigned) preserves_length <= type->num_entries); + + for (int j = 0; j < preserves_length; j++) { + xcb_xkb_mod_def_t *wire_preserve = preserves_iter.data; + struct xkb_key_type_entry *entry = &type->entries[j]; + + entry->preserve.mods = translate_mods(wire_preserve->realMods, + wire_preserve->vmods, 0); + entry->preserve.mask = translate_mods(wire_preserve->mask, 0, 0); + + xcb_xkb_mod_def_next(&preserves_iter); + } + } + + xcb_xkb_key_type_next(&types_iter); + } + + return true; + +fail: + return false; +} + +static bool +get_sym_maps(struct xkb_keymap *keymap, xcb_connection_t *conn, + xcb_xkb_get_map_reply_t *reply, xcb_xkb_get_map_map_t *map) +{ + int sym_maps_length = xcb_xkb_get_map_map_syms_rtrn_length(reply, map); + xcb_xkb_key_sym_map_iterator_t sym_maps_iter = + xcb_xkb_get_map_map_syms_rtrn_iterator(reply, map); + + FAIL_UNLESS(reply->minKeyCode <= reply->maxKeyCode); + FAIL_UNLESS(reply->firstKeySym >= reply->minKeyCode); + FAIL_UNLESS(reply->firstKeySym + reply->nKeySyms <= reply->maxKeyCode + 1); + + keymap->min_key_code = reply->minKeyCode; + keymap->max_key_code = reply->maxKeyCode; + + ALLOC_OR_FAIL(keymap->keys, keymap->max_key_code + 1); + + for (xkb_keycode_t kc = keymap->min_key_code; kc <= keymap->max_key_code; kc++) + keymap->keys[kc].keycode = kc; + + for (int i = 0; i < sym_maps_length; i++) { + xcb_xkb_key_sym_map_t *wire_sym_map = sym_maps_iter.data; + struct xkb_key *key = &keymap->keys[reply->firstKeySym + i]; + + key->num_groups = wire_sym_map->groupInfo & 0x0f; + FAIL_UNLESS(key->num_groups <= ARRAY_SIZE(wire_sym_map->kt_index)); + ALLOC_OR_FAIL(key->groups, key->num_groups); + + for (unsigned j = 0; j < key->num_groups; j++) { + FAIL_UNLESS(wire_sym_map->kt_index[j] < keymap->num_types); + key->groups[j].type = &keymap->types[wire_sym_map->kt_index[j]]; + + ALLOC_OR_FAIL(key->groups[j].levels, key->groups[j].type->num_levels); + } + + key->out_of_range_group_number = (wire_sym_map->groupInfo & 0x30) >> 4; + + FAIL_UNLESS(key->out_of_range_group_number <= key->num_groups); + + if (wire_sym_map->groupInfo & XCB_XKB_GROUPS_WRAP_CLAMP_INTO_RANGE) + key->out_of_range_group_action = RANGE_SATURATE; + else if (wire_sym_map->groupInfo & XCB_XKB_GROUPS_WRAP_REDIRECT_INTO_RANGE) + key->out_of_range_group_action = RANGE_REDIRECT; + else + key->out_of_range_group_action = RANGE_WRAP; + + { + int syms_length = xcb_xkb_key_sym_map_syms_length(wire_sym_map); + xcb_keysym_t *syms_iter = xcb_xkb_key_sym_map_syms(wire_sym_map); + + FAIL_UNLESS((unsigned) syms_length == wire_sym_map->width * key->num_groups); + + for (int j = 0; j < syms_length; j++) { + xcb_keysym_t wire_keysym = *syms_iter; + const xkb_layout_index_t group = j / wire_sym_map->width; + const xkb_level_index_t level = j % wire_sym_map->width; + + if (level < key->groups[group].type->num_levels && + wire_keysym != XKB_KEY_NoSymbol) { + key->groups[group].levels[level].num_syms = 1; + key->groups[group].levels[level].u.sym = wire_keysym; + } + + syms_iter++; + } + } + + xcb_xkb_key_sym_map_next(&sym_maps_iter); + } + + return true; + +fail: + return false; +} + +static bool +get_actions(struct xkb_keymap *keymap, xcb_connection_t *conn, + xcb_xkb_get_map_reply_t *reply, xcb_xkb_get_map_map_t *map) +{ + int acts_count_length = + xcb_xkb_get_map_map_acts_rtrn_count_length(reply, map); + uint8_t *acts_count_iter = xcb_xkb_get_map_map_acts_rtrn_count(map); + xcb_xkb_action_iterator_t acts_iter = + xcb_xkb_get_map_map_acts_rtrn_acts_iterator(reply, map); + xcb_xkb_key_sym_map_iterator_t sym_maps_iter = + xcb_xkb_get_map_map_syms_rtrn_iterator(reply, map); + + FAIL_UNLESS(reply->firstKeyAction == keymap->min_key_code); + FAIL_UNLESS(reply->firstKeyAction + reply->nKeyActions == + keymap->max_key_code + 1); + + for (int i = 0; i < acts_count_length; i++) { + xcb_xkb_key_sym_map_t *wire_sym_map = sym_maps_iter.data; + int syms_length = xcb_xkb_key_sym_map_syms_length(wire_sym_map); + uint8_t wire_count = *acts_count_iter; + struct xkb_key *key = &keymap->keys[reply->firstKeyAction + i]; + + FAIL_UNLESS(wire_count == 0 || wire_count == syms_length); + + for (int j = 0; j < wire_count; j++) { + xcb_xkb_action_t *wire_action = acts_iter.data; + const xkb_layout_index_t group = j / wire_sym_map->width; + const xkb_level_index_t level = j % wire_sym_map->width; + + if (level < key->groups[group].type->num_levels) { + union xkb_action *action = + &key->groups[group].levels[level].action; + + translate_action(action, wire_action); + } + + xcb_xkb_action_next(&acts_iter); + } + + acts_count_iter++; + xcb_xkb_key_sym_map_next(&sym_maps_iter); + } + + return true; + +fail: + return false; +} + +static bool +get_vmods(struct xkb_keymap *keymap, xcb_connection_t *conn, + xcb_xkb_get_map_reply_t *reply, xcb_xkb_get_map_map_t *map) +{ + uint8_t *iter = xcb_xkb_get_map_map_vmods_rtrn(map); + + keymap->mods.num_mods = + NUM_REAL_MODS + MIN(msb_pos(reply->virtualMods), NUM_VMODS); + + for (unsigned i = 0; i < NUM_VMODS; i++) { + if (reply->virtualMods & (1u << i)) { + uint8_t wire = *iter; + struct xkb_mod *mod = &keymap->mods.mods[NUM_REAL_MODS + i]; + + mod->type = MOD_VIRT; + mod->mapping = translate_mods(wire, 0, 0); + + iter++; + } + } + + return true; +} + +static bool +get_explicits(struct xkb_keymap *keymap, xcb_connection_t *conn, + xcb_xkb_get_map_reply_t *reply, xcb_xkb_get_map_map_t *map) +{ + int length = xcb_xkb_get_map_map_explicit_rtrn_length(reply, map); + xcb_xkb_set_explicit_iterator_t iter = + xcb_xkb_get_map_map_explicit_rtrn_iterator(reply, map); + + for (int i = 0; i < length; i++) { + xcb_xkb_set_explicit_t *wire = iter.data; + struct xkb_key *key; + + FAIL_UNLESS(wire->keycode >= keymap->min_key_code && + wire->keycode <= keymap->max_key_code); + + key = &keymap->keys[wire->keycode]; + + if ((wire->explicit & XCB_XKB_EXPLICIT_KEY_TYPE_1) && + key->num_groups > 0) + key->groups[0].explicit_type = true; + if ((wire->explicit & XCB_XKB_EXPLICIT_KEY_TYPE_2) && + key->num_groups > 1) + key->groups[1].explicit_type = true; + if ((wire->explicit & XCB_XKB_EXPLICIT_KEY_TYPE_3) && + key->num_groups > 2) + key->groups[2].explicit_type = true; + if ((wire->explicit & XCB_XKB_EXPLICIT_KEY_TYPE_4) && + key->num_groups > 3) + key->groups[3].explicit_type = true; + if (wire->explicit & XCB_XKB_EXPLICIT_INTERPRET) + key->explicit |= EXPLICIT_INTERP; + if (wire->explicit & XCB_XKB_EXPLICIT_AUTO_REPEAT) + key->explicit |= EXPLICIT_REPEAT; + if (wire->explicit & XCB_XKB_EXPLICIT_V_MOD_MAP) + key->explicit |= EXPLICIT_VMODMAP; + + xcb_xkb_set_explicit_next(&iter); + } + + return true; + +fail: + return false; +} + +static bool +get_modmaps(struct xkb_keymap *keymap, xcb_connection_t *conn, + xcb_xkb_get_map_reply_t *reply, xcb_xkb_get_map_map_t *map) +{ + int length = xcb_xkb_get_map_map_modmap_rtrn_length(reply, map); + xcb_xkb_key_mod_map_iterator_t iter = + xcb_xkb_get_map_map_modmap_rtrn_iterator(reply, map); + + for (int i = 0; i < length; i++) { + xcb_xkb_key_mod_map_t *wire = iter.data; + struct xkb_key *key; + + FAIL_UNLESS(wire->keycode >= keymap->min_key_code && + wire->keycode <= keymap->max_key_code); + + key = &keymap->keys[wire->keycode]; + key->modmap = wire->mods; + + xcb_xkb_key_mod_map_next(&iter); + } + + return true; + +fail: + return false; +} + +static bool +get_vmodmaps(struct xkb_keymap *keymap, xcb_connection_t *conn, + xcb_xkb_get_map_reply_t *reply, xcb_xkb_get_map_map_t *map) +{ + int length = xcb_xkb_get_map_map_vmodmap_rtrn_length(reply, map); + xcb_xkb_key_v_mod_map_iterator_t iter = + xcb_xkb_get_map_map_vmodmap_rtrn_iterator(reply, map); + + for (int i = 0; i < length; i++) { + xcb_xkb_key_v_mod_map_t *wire = iter.data; + struct xkb_key *key; + + FAIL_UNLESS(wire->keycode >= keymap->min_key_code && + wire->keycode <= keymap->max_key_code); + + key = &keymap->keys[wire->keycode]; + key->vmodmap = translate_mods(0, wire->vmods, 0); + + xcb_xkb_key_v_mod_map_next(&iter); + } + + return true; + +fail: + return false; +} + +static bool +get_map(struct xkb_keymap *keymap, xcb_connection_t *conn, uint16_t device_id) +{ + static const xcb_xkb_map_part_t required_components = + (XCB_XKB_MAP_PART_KEY_TYPES | + XCB_XKB_MAP_PART_KEY_SYMS | + XCB_XKB_MAP_PART_MODIFIER_MAP | + XCB_XKB_MAP_PART_EXPLICIT_COMPONENTS | + XCB_XKB_MAP_PART_KEY_ACTIONS | + XCB_XKB_MAP_PART_VIRTUAL_MODS | + XCB_XKB_MAP_PART_VIRTUAL_MOD_MAP); + + xcb_xkb_get_map_cookie_t cookie = + xcb_xkb_get_map(conn, device_id, required_components, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + xcb_xkb_get_map_reply_t *reply = xcb_xkb_get_map_reply(conn, cookie, NULL); + xcb_xkb_get_map_map_t map; + + FAIL_IF_BAD_REPLY(reply, "XkbGetMap"); + + if ((reply->present & required_components) != required_components) + goto fail; + + xcb_xkb_get_map_map_unpack(xcb_xkb_get_map_map(reply), + reply->nTypes, + reply->nKeySyms, + reply->nKeyActions, + reply->totalActions, + reply->totalKeyBehaviors, + reply->virtualMods, + reply->totalKeyExplicit, + reply->totalModMapKeys, + reply->totalVModMapKeys, + reply->present, + &map); + + if (!get_types(keymap, conn, reply, &map) || + !get_sym_maps(keymap, conn, reply, &map) || + !get_actions(keymap, conn, reply, &map) || + !get_vmods(keymap, conn, reply, &map) || + !get_explicits(keymap, conn, reply, &map) || + !get_modmaps(keymap, conn, reply, &map) || + !get_vmodmaps(keymap, conn, reply, &map)) + goto fail; + + free(reply); + return true; + +fail: + free(reply); + return false; +} + +static bool +get_indicators(struct xkb_keymap *keymap, xcb_connection_t *conn, + xcb_xkb_get_indicator_map_reply_t *reply) +{ + xcb_xkb_indicator_map_iterator_t iter = + xcb_xkb_get_indicator_map_maps_iterator(reply); + + keymap->num_leds = msb_pos(reply->which); + + for (unsigned i = 0; i < NUM_INDICATORS; i++) { + if (reply->which & (1u << i)) { + xcb_xkb_indicator_map_t *wire = iter.data; + struct xkb_led *led = &keymap->leds[i]; + + if (wire->whichGroups & XCB_XKB_IM_GROUPS_WHICH_USE_BASE) + led->which_groups |= XKB_STATE_LAYOUT_DEPRESSED; + if (wire->whichGroups & XCB_XKB_IM_GROUPS_WHICH_USE_LATCHED) + led->which_groups |= XKB_STATE_LAYOUT_LATCHED; + if (wire->whichGroups & XCB_XKB_IM_GROUPS_WHICH_USE_LOCKED) + led->which_groups |= XKB_STATE_LAYOUT_LOCKED; + if (wire->whichGroups & XCB_XKB_IM_GROUPS_WHICH_USE_EFFECTIVE) + led->which_groups |= XKB_STATE_LAYOUT_EFFECTIVE; + if (wire->whichGroups & XCB_XKB_IM_GROUPS_WHICH_USE_COMPAT) + led->which_groups |= XKB_STATE_LAYOUT_EFFECTIVE; + + led->groups = wire->groups; + + if (wire->whichMods & XCB_XKB_IM_MODS_WHICH_USE_BASE) + led->which_mods |= XKB_STATE_MODS_DEPRESSED; + if (wire->whichMods & XCB_XKB_IM_MODS_WHICH_USE_LATCHED) + led->which_mods |= XKB_STATE_MODS_LATCHED; + if (wire->whichMods & XCB_XKB_IM_MODS_WHICH_USE_LOCKED) + led->which_mods |= XKB_STATE_MODS_LOCKED; + if (wire->whichMods & XCB_XKB_IM_MODS_WHICH_USE_EFFECTIVE) + led->which_mods |= XKB_STATE_MODS_EFFECTIVE; + if (wire->whichMods & XCB_XKB_IM_MODS_WHICH_USE_COMPAT) + led->which_mods |= XKB_STATE_MODS_EFFECTIVE; + + led->mods.mods = translate_mods(wire->realMods, wire->vmods, 0); + led->mods.mask = translate_mods(wire->mods, 0, 0); + + led->ctrls = translate_controls_mask(wire->ctrls); + + xcb_xkb_indicator_map_next(&iter); + } + } + + return true; +} + +static bool +get_indicator_map(struct xkb_keymap *keymap, xcb_connection_t *conn, + uint16_t device_id) +{ + xcb_xkb_get_indicator_map_cookie_t cookie = + xcb_xkb_get_indicator_map(conn, device_id, ALL_INDICATORS_MASK); + xcb_xkb_get_indicator_map_reply_t *reply = + xcb_xkb_get_indicator_map_reply(conn, cookie, NULL); + + FAIL_IF_BAD_REPLY(reply, "XkbGetIndicatorMap"); + + if (!get_indicators(keymap, conn, reply)) + goto fail; + + free(reply); + return true; + +fail: + free(reply); + return false; +} + +static bool +get_sym_interprets(struct xkb_keymap *keymap, xcb_connection_t *conn, + xcb_xkb_get_compat_map_reply_t *reply) +{ + int length = xcb_xkb_get_compat_map_si_rtrn_length(reply); + xcb_xkb_sym_interpret_iterator_t iter = + xcb_xkb_get_compat_map_si_rtrn_iterator(reply); + + FAIL_UNLESS(reply->firstSIRtrn == 0); + FAIL_UNLESS(reply->nSIRtrn == reply->nTotalSI); + + keymap->num_sym_interprets = reply->nSIRtrn; + ALLOC_OR_FAIL(keymap->sym_interprets, keymap->num_sym_interprets); + + for (int i = 0; i < length; i++) { + xcb_xkb_sym_interpret_t *wire = iter.data; + struct xkb_sym_interpret *sym_interpret = &keymap->sym_interprets[i]; + + sym_interpret->sym = wire->sym; + + switch (wire->match & XCB_XKB_SYM_INTERP_MATCH_OP_MASK) { + case XCB_XKB_SYM_INTERPRET_MATCH_NONE_OF: + sym_interpret->match = MATCH_NONE; + break; + case XCB_XKB_SYM_INTERPRET_MATCH_ANY_OF_OR_NONE: + sym_interpret->match = MATCH_ANY_OR_NONE; + break; + case XCB_XKB_SYM_INTERPRET_MATCH_ANY_OF: + sym_interpret->match = MATCH_ANY; + break; + case XCB_XKB_SYM_INTERPRET_MATCH_ALL_OF: + sym_interpret->match = MATCH_ALL; + break; + case XCB_XKB_SYM_INTERPRET_MATCH_EXACTLY: + sym_interpret->match = MATCH_EXACTLY; + break; + } + + sym_interpret->level_one_only = + (wire->match & XCB_XKB_SYM_INTERP_MATCH_LEVEL_ONE_ONLY); + sym_interpret->mods = wire->mods; + + if (wire->virtualMod == NO_MODIFIER) + sym_interpret->virtual_mod = XKB_MOD_INVALID; + else + sym_interpret->virtual_mod = NUM_REAL_MODS + wire->virtualMod; + + sym_interpret->repeat = (wire->flags & 0x01); + translate_action(&sym_interpret->action, + (xcb_xkb_action_t *) &wire->action); + + xcb_xkb_sym_interpret_next(&iter); + } + + return true; + +fail: + return false; +} + +static bool +get_compat_map(struct xkb_keymap *keymap, xcb_connection_t *conn, + uint16_t device_id) +{ + xcb_xkb_get_compat_map_cookie_t cookie = + xcb_xkb_get_compat_map(conn, device_id, 0, true, 0, 0); + xcb_xkb_get_compat_map_reply_t *reply = + xcb_xkb_get_compat_map_reply(conn, cookie, NULL); + + FAIL_IF_BAD_REPLY(reply, "XkbGetCompatMap"); + + if (!get_sym_interprets(keymap, conn, reply)) + goto fail; + + free(reply); + return true; + +fail: + free(reply); + return false; +} + +static bool +get_type_names(struct xkb_keymap *keymap, xcb_connection_t *conn, + xcb_xkb_get_names_reply_t *reply, + xcb_xkb_get_names_value_list_t *list) +{ + int key_type_names_length = + xcb_xkb_get_names_value_list_type_names_length(reply, list); + xcb_atom_t *key_type_names_iter = + xcb_xkb_get_names_value_list_type_names(list); + int n_levels_per_type_length = + xcb_xkb_get_names_value_list_n_levels_per_type_length(reply, list); + uint8_t *n_levels_per_type_iter = + xcb_xkb_get_names_value_list_n_levels_per_type(list); + xcb_atom_t *kt_level_names_iter = + xcb_xkb_get_names_value_list_kt_level_names(list); + + FAIL_UNLESS(reply->nTypes == keymap->num_types); + FAIL_UNLESS(key_type_names_length == n_levels_per_type_length); + + for (int i = 0; i < key_type_names_length; i++) { + xcb_atom_t wire_type_name = *key_type_names_iter; + uint8_t wire_num_levels = *n_levels_per_type_iter; + struct xkb_key_type *type = &keymap->types[i]; + + /* Levels must have names. */ + FAIL_UNLESS(type->num_levels == wire_num_levels); + + ALLOC_OR_FAIL(type->level_names, type->num_levels); + + if (!adopt_atom(keymap->ctx, conn, wire_type_name, &type->name)) + goto fail; + + if (!adopt_atoms(keymap->ctx, conn, + kt_level_names_iter, type->level_names, + wire_num_levels)) + goto fail; + + kt_level_names_iter += wire_num_levels; + key_type_names_iter++; + n_levels_per_type_iter++; + } + + return true; + +fail: + return false; +} + +static bool +get_indicator_names(struct xkb_keymap *keymap, xcb_connection_t *conn, + xcb_xkb_get_names_reply_t *reply, + xcb_xkb_get_names_value_list_t *list) +{ + xcb_atom_t *iter = xcb_xkb_get_names_value_list_indicator_names(list); + + FAIL_UNLESS(msb_pos(reply->indicators) <= keymap->num_leds); + + for (unsigned i = 0; i < NUM_INDICATORS; i++) { + if (reply->indicators & (1u << i)) { + xcb_atom_t wire = *iter; + struct xkb_led *led = &keymap->leds[i]; + + if (!adopt_atom(keymap->ctx, conn, wire, &led->name)) + return false; + + iter++; + } + } + + return true; + +fail: + return false; +} + +static bool +get_vmod_names(struct xkb_keymap *keymap, xcb_connection_t *conn, + xcb_xkb_get_names_reply_t *reply, + xcb_xkb_get_names_value_list_t *list) +{ + xcb_atom_t *iter = xcb_xkb_get_names_value_list_virtual_mod_names(list); + + /* + * GetMap's reply->virtualMods is always 0xffff. This one really + * tells us which vmods exist (a vmod must have a name), so we fix + * up the size here. + */ + keymap->mods.num_mods = + NUM_REAL_MODS + MIN(msb_pos(reply->virtualMods), NUM_VMODS); + + for (unsigned i = 0; i < NUM_VMODS; i++) { + if (reply->virtualMods & (1u << i)) { + xcb_atom_t wire = *iter; + struct xkb_mod *mod = &keymap->mods.mods[NUM_REAL_MODS + i]; + + if (!adopt_atom(keymap->ctx, conn, wire, &mod->name)) + return false; + + iter++; + } + } + + return true; +} + +static bool +get_group_names(struct xkb_keymap *keymap, xcb_connection_t *conn, + xcb_xkb_get_names_reply_t *reply, + xcb_xkb_get_names_value_list_t *list) +{ + int length = xcb_xkb_get_names_value_list_groups_length(reply, list); + xcb_atom_t *iter = xcb_xkb_get_names_value_list_groups(list); + + keymap->num_group_names = msb_pos(reply->groupNames); + ALLOC_OR_FAIL(keymap->group_names, keymap->num_group_names); + + if (!adopt_atoms(keymap->ctx, conn, + iter, keymap->group_names, length)) + goto fail; + + return true; + +fail: + return false; +} + +static bool +get_key_names(struct xkb_keymap *keymap, xcb_connection_t *conn, + xcb_xkb_get_names_reply_t *reply, + xcb_xkb_get_names_value_list_t *list) +{ + int length = xcb_xkb_get_names_value_list_key_names_length(reply, list); + xcb_xkb_key_name_iterator_t iter = + xcb_xkb_get_names_value_list_key_names_iterator(reply, list); + + FAIL_UNLESS(reply->minKeyCode == keymap->min_key_code); + FAIL_UNLESS(reply->maxKeyCode == keymap->max_key_code); + FAIL_UNLESS(reply->firstKey == keymap->min_key_code); + FAIL_UNLESS(reply->firstKey + reply->nKeys - 1U == keymap->max_key_code); + + for (int i = 0; i < length; i++) { + xcb_xkb_key_name_t *wire = iter.data; + xkb_atom_t *key_name = &keymap->keys[reply->firstKey + i].name; + + if (wire->name[0] == '\0') { + *key_name = XKB_ATOM_NONE; + } + else { + *key_name = xkb_atom_intern(keymap->ctx, wire->name, + strnlen(wire->name, + XCB_XKB_CONST_KEY_NAME_LENGTH)); + if (!*key_name) + return false; + } + + xcb_xkb_key_name_next(&iter); + } + + return true; + +fail: + return false; +} + +static bool +get_aliases(struct xkb_keymap *keymap, xcb_connection_t *conn, + xcb_xkb_get_names_reply_t *reply, + xcb_xkb_get_names_value_list_t *list) +{ + int length = xcb_xkb_get_names_value_list_key_aliases_length(reply, list); + xcb_xkb_key_alias_iterator_t iter = + xcb_xkb_get_names_value_list_key_aliases_iterator(reply, list); + + keymap->num_key_aliases = reply->nKeyAliases; + ALLOC_OR_FAIL(keymap->key_aliases, keymap->num_key_aliases); + + for (int i = 0; i < length; i++) { + xcb_xkb_key_alias_t *wire = iter.data; + struct xkb_key_alias *alias = &keymap->key_aliases[i]; + + alias->real = + xkb_atom_intern(keymap->ctx, wire->real, + strnlen(wire->real, XCB_XKB_CONST_KEY_NAME_LENGTH)); + alias->alias = + xkb_atom_intern(keymap->ctx, wire->alias, + strnlen(wire->alias, XCB_XKB_CONST_KEY_NAME_LENGTH)); + if (!alias->real || !alias->alias) + goto fail; + + xcb_xkb_key_alias_next(&iter); + } + + return true; + +fail: + return false; +} + +static bool +get_names(struct xkb_keymap *keymap, xcb_connection_t *conn, + uint16_t device_id) +{ + static const xcb_xkb_name_detail_t wanted = + (XCB_XKB_NAME_DETAIL_KEYCODES | + XCB_XKB_NAME_DETAIL_SYMBOLS | + XCB_XKB_NAME_DETAIL_TYPES | + XCB_XKB_NAME_DETAIL_COMPAT | + XCB_XKB_NAME_DETAIL_KEY_TYPE_NAMES | + XCB_XKB_NAME_DETAIL_KT_LEVEL_NAMES | + XCB_XKB_NAME_DETAIL_INDICATOR_NAMES | + XCB_XKB_NAME_DETAIL_KEY_NAMES | + XCB_XKB_NAME_DETAIL_KEY_ALIASES | + XCB_XKB_NAME_DETAIL_VIRTUAL_MOD_NAMES | + XCB_XKB_NAME_DETAIL_GROUP_NAMES); + static const xcb_xkb_name_detail_t required = + (XCB_XKB_NAME_DETAIL_KEY_TYPE_NAMES | + XCB_XKB_NAME_DETAIL_KT_LEVEL_NAMES | + XCB_XKB_NAME_DETAIL_KEY_NAMES | + XCB_XKB_NAME_DETAIL_VIRTUAL_MOD_NAMES); + + xcb_xkb_get_names_cookie_t cookie = + xcb_xkb_get_names(conn, device_id, wanted); + xcb_xkb_get_names_reply_t *reply = + xcb_xkb_get_names_reply(conn, cookie, NULL); + xcb_xkb_get_names_value_list_t list; + + FAIL_IF_BAD_REPLY(reply, "XkbGetNames"); + + FAIL_UNLESS((reply->which & required) == required); + + xcb_xkb_get_names_value_list_unpack(xcb_xkb_get_names_value_list(reply), + reply->nTypes, + reply->indicators, + reply->virtualMods, + reply->groupNames, + reply->nKeys, + reply->nKeyAliases, + reply->nRadioGroups, + reply->which, + &list); + + if (!get_atom_name(conn, list.keycodesName, &keymap->keycodes_section_name) || + !get_atom_name(conn, list.symbolsName, &keymap->symbols_section_name) || + !get_atom_name(conn, list.typesName, &keymap->types_section_name) || + !get_atom_name(conn, list.compatName, &keymap->compat_section_name) || + !get_type_names(keymap, conn, reply, &list) || + !get_indicator_names(keymap, conn, reply, &list) || + !get_vmod_names(keymap, conn, reply, &list) || + !get_group_names(keymap, conn, reply, &list) || + !get_key_names(keymap, conn, reply, &list) || + !get_aliases(keymap, conn, reply, &list)) + goto fail; + + XkbEscapeMapName(keymap->keycodes_section_name); + XkbEscapeMapName(keymap->symbols_section_name); + XkbEscapeMapName(keymap->types_section_name); + XkbEscapeMapName(keymap->compat_section_name); + + free(reply); + return true; + +fail: + free(reply); + return false; +} + +static bool +get_controls(struct xkb_keymap *keymap, xcb_connection_t *conn, + uint16_t device_id) +{ + xcb_xkb_get_controls_cookie_t cookie = + xcb_xkb_get_controls(conn, device_id); + xcb_xkb_get_controls_reply_t *reply = + xcb_xkb_get_controls_reply(conn, cookie, NULL); + + FAIL_IF_BAD_REPLY(reply, "XkbGetControls"); + FAIL_UNLESS(reply->numGroups > 0 && reply->numGroups <= 4); + + keymap->enabled_ctrls = translate_controls_mask(reply->enabledControls); + keymap->num_groups = reply->numGroups; + + FAIL_UNLESS(keymap->max_key_code < XCB_XKB_CONST_PER_KEY_BIT_ARRAY_SIZE * 8); + + for (xkb_keycode_t i = keymap->min_key_code; i <= keymap->max_key_code; i++) + keymap->keys[i].repeats = (reply->perKeyRepeat[i / 8] & (1 << (i % 8))); + + free(reply); + return true; + +fail: + free(reply); + return false; +} + +XKB_EXPORT struct xkb_keymap * +xkb_x11_keymap_new_from_device(struct xkb_context *ctx, + xcb_connection_t *conn, + int32_t device_id, + enum xkb_keymap_compile_flags flags) +{ + struct xkb_keymap *keymap; + const enum xkb_keymap_format format = XKB_KEYMAP_FORMAT_TEXT_V1; + + if (flags & ~(XKB_KEYMAP_COMPILE_NO_FLAGS)) { + log_err_func(ctx, "unrecognized flags: %#x\n", flags); + return NULL; + } + + if (device_id < 0 || device_id > 255) { + log_err_func(ctx, "illegal device ID: %d\n", device_id); + return NULL; + } + + keymap = xkb_keymap_new(ctx, format, flags); + if (!keymap) + return NULL; + + if (!get_map(keymap, conn, device_id) || + !get_indicator_map(keymap, conn, device_id) || + !get_compat_map(keymap, conn, device_id) || + !get_names(keymap, conn, device_id) || + !get_controls(keymap, conn, device_id)) { + xkb_keymap_unref(keymap); + return NULL; + } + + return keymap; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/x11/state.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/x11/state.c new file mode 100644 index 0000000..da7dcc2 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/x11/state.c @@ -0,0 +1,71 @@ +/* + * Copyright © 2013 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "x11-priv.h" + +static bool +update_initial_state(struct xkb_state *state, xcb_connection_t *conn, + uint16_t device_id) +{ + xcb_xkb_get_state_cookie_t cookie = + xcb_xkb_get_state(conn, device_id); + xcb_xkb_get_state_reply_t *reply = + xcb_xkb_get_state_reply(conn, cookie, NULL); + + if (!reply) + return false; + + xkb_state_update_mask(state, + reply->baseMods, + reply->latchedMods, + reply->lockedMods, + reply->baseGroup, + reply->latchedGroup, + reply->lockedGroup); + + free(reply); + return true; +} + +XKB_EXPORT struct xkb_state * +xkb_x11_state_new_from_device(struct xkb_keymap *keymap, + xcb_connection_t *conn, int32_t device_id) +{ + struct xkb_state *state; + + if (device_id < 0 || device_id > 255) { + log_err_func(keymap->ctx, "illegal device ID: %d", device_id); + return NULL; + } + + state = xkb_state_new(keymap); + if (!state) + return NULL; + + if (!update_initial_state(state, conn, device_id)) { + xkb_state_unref(state); + return NULL; + } + + return state; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/x11/util.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/x11/util.c new file mode 100644 index 0000000..c41f1d6 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/x11/util.c @@ -0,0 +1,217 @@ +/* + * Copyright © 2013 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "x11-priv.h" + +XKB_EXPORT int +xkb_x11_setup_xkb_extension(xcb_connection_t *conn, + uint16_t major_xkb_version, + uint16_t minor_xkb_version, + enum xkb_x11_setup_xkb_extension_flags flags, + uint16_t *major_xkb_version_out, + uint16_t *minor_xkb_version_out, + uint8_t *base_event_out, + uint8_t *base_error_out) +{ + uint8_t base_event, base_error; + uint16_t server_major, server_minor; + + if (flags & ~(XKB_X11_SETUP_XKB_EXTENSION_NO_FLAGS)) { + /* log_err_func(ctx, "unrecognized flags: %#x\n", flags); */ + return 0; + } + + { + const xcb_query_extension_reply_t *reply = + xcb_get_extension_data(conn, &xcb_xkb_id); + if (!reply) { + /* log_err_func(ctx, "failed to query for XKB extension\n"); */ + return 0; + } + + if (!reply->present) { + /* log_err_func(ctx, "failed to start using XKB extension: not available in server\n"); */ + return 0; + } + + base_event = reply->first_event; + base_error = reply->first_error; + } + + { + xcb_generic_error_t *error = NULL; + xcb_xkb_use_extension_cookie_t cookie = + xcb_xkb_use_extension(conn, major_xkb_version, minor_xkb_version); + xcb_xkb_use_extension_reply_t *reply = + xcb_xkb_use_extension_reply(conn, cookie, &error); + + if (!reply) { + /* log_err_func(ctx, */ + /* "failed to start using XKB extension: error code %d\n", */ + /* error ? error->error_code : -1); */ + free(error); + return 0; + } + + if (!reply->supported) { + /* log_err_func(ctx, */ + /* "failed to start using XKB extension: server doesn't support version %d.%d\n", */ + /* major_xkb_version, minor_xkb_version); */ + free(reply); + return 0; + } + + server_major = reply->serverMajor; + server_minor = reply->serverMinor; + + free(reply); + } + + /* + * The XkbUseExtension() in libX11 has a *bunch* of legacy stuff, but + * it doesn't seem like any of it is useful to us. + */ + + if (major_xkb_version_out) + *major_xkb_version_out = server_major; + if (minor_xkb_version_out) + *minor_xkb_version_out = server_minor; + if (base_event_out) + *base_event_out = base_event; + if (base_error_out) + *base_error_out = base_error; + + return 1; +} + +XKB_EXPORT int32_t +xkb_x11_get_core_keyboard_device_id(xcb_connection_t *conn) +{ + int32_t device_id; + xcb_xkb_get_device_info_cookie_t cookie = + xcb_xkb_get_device_info(conn, XCB_XKB_ID_USE_CORE_KBD, + 0, 0, 0, 0, 0, 0); + xcb_xkb_get_device_info_reply_t *reply = + xcb_xkb_get_device_info_reply(conn, cookie, NULL); + + if (!reply) + return -1; + + device_id = reply->deviceID; + free(reply); + return device_id; +} + +bool +get_atom_name(xcb_connection_t *conn, xcb_atom_t atom, char **out) +{ + xcb_get_atom_name_cookie_t cookie; + xcb_get_atom_name_reply_t *reply; + int length; + char *name; + + if (atom == 0) { + *out = NULL; + return true; + } + + cookie = xcb_get_atom_name(conn, atom); + reply = xcb_get_atom_name_reply(conn, cookie, NULL); + if (!reply) + return false; + + length = xcb_get_atom_name_name_length(reply); + name = xcb_get_atom_name_name(reply); + + *out = strndup(name, length); + if (!*out) { + free(reply); + return false; + } + + free(reply); + return true; +} + +bool +adopt_atoms(struct xkb_context *ctx, xcb_connection_t *conn, + const xcb_atom_t *from, xkb_atom_t *to, const size_t count) +{ + enum { SIZE = 128 }; + xcb_get_atom_name_cookie_t cookies[SIZE]; + const size_t num_batches = ROUNDUP(count, SIZE) / SIZE; + + /* Send and collect the atoms in batches of reasonable SIZE. */ + for (size_t batch = 0; batch < num_batches; batch++) { + const size_t start = batch * SIZE; + const size_t stop = min((batch + 1) * SIZE, count); + + /* Send. */ + for (size_t i = start; i < stop; i++) + if (from[i] != XCB_ATOM_NONE) + cookies[i % SIZE] = xcb_get_atom_name(conn, from[i]); + + /* Collect. */ + for (size_t i = start; i < stop; i++) { + xcb_get_atom_name_reply_t *reply; + + if (from[i] == XCB_ATOM_NONE) { + to[i] = XKB_ATOM_NONE; + continue; + } + + reply = xcb_get_atom_name_reply(conn, cookies[i % SIZE], NULL); + if (!reply) + goto err_discard; + + to[i] = xkb_atom_intern(ctx, + xcb_get_atom_name_name(reply), + xcb_get_atom_name_name_length(reply)); + free(reply); + + if (to[i] == XKB_ATOM_NONE) + goto err_discard; + + continue; + + /* + * If we don't discard the uncollected replies, they just + * sit in the XCB queue waiting forever. Sad. + */ +err_discard: + for (size_t j = i + 1; j < stop; j++) + if (from[j] != XCB_ATOM_NONE) + xcb_discard_reply(conn, cookies[j % SIZE].sequence); + return false; + } + } + + return true; +} + +bool +adopt_atom(struct xkb_context *ctx, xcb_connection_t *conn, xcb_atom_t atom, + xkb_atom_t *out) +{ + return adopt_atoms(ctx, conn, &atom, out, 1); +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/x11/x11-priv.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/x11/x11-priv.h new file mode 100644 index 0000000..3a19e99 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/x11/x11-priv.h @@ -0,0 +1,54 @@ +/* + * Copyright © 2013 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef _XKBCOMMON_X11_PRIV_H +#define _XKBCOMMON_X11_PRIV_H + +#include + +#include "keymap.h" +#include "xkbcommon/xkbcommon-x11.h" + +/* Get a strdup'd name of an X atom. */ +bool +get_atom_name(xcb_connection_t *conn, xcb_atom_t atom, char **out); + +/* + * Make a xkb_atom_t's from X atoms (prefer to send as many as possible + * at once, to avoid many roundtrips). + * + * TODO: We can make this more flexible, such that @to doesn't have to + * be sequential. Then we can convert most adopt_atom() calls to + * adopt_atoms(). + * Atom caching would also likely be useful for avoiding quite a + * few requests. + */ +bool +adopt_atoms(struct xkb_context *ctx, xcb_connection_t *conn, + const xcb_atom_t *from, xkb_atom_t *to, size_t count); + +bool +adopt_atom(struct xkb_context *ctx, xcb_connection_t *conn, xcb_atom_t atom, + xkb_atom_t *out); + +#endif diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c new file mode 100644 index 0000000..5f1fd65 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.c @@ -0,0 +1,870 @@ +/************************************************************ + * Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +/* + * Copyright © 2012 Intel Corporation + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Daniel Stone + * Ran Benita + */ + +#include "xkbcomp-priv.h" +#include "text.h" +#include "expr.h" +#include "action.h" + +static const ExprBoolean constTrue = { + .expr = { + .common = { .type = STMT_EXPR, .next = NULL }, + .op = EXPR_VALUE, + .value_type = EXPR_TYPE_BOOLEAN, + }, + .set = true, +}; + +static const ExprBoolean constFalse = { + .expr = { + .common = { .type = STMT_EXPR, .next = NULL }, + .op = EXPR_VALUE, + .value_type = EXPR_TYPE_BOOLEAN, + }, + .set = false, +}; + +enum action_field { + ACTION_FIELD_CLEAR_LOCKS, + ACTION_FIELD_LATCH_TO_LOCK, + ACTION_FIELD_GEN_KEY_EVENT, + ACTION_FIELD_REPORT, + ACTION_FIELD_DEFAULT, + ACTION_FIELD_AFFECT, + ACTION_FIELD_INCREMENT, + ACTION_FIELD_MODIFIERS, + ACTION_FIELD_GROUP, + ACTION_FIELD_X, + ACTION_FIELD_Y, + ACTION_FIELD_ACCEL, + ACTION_FIELD_BUTTON, + ACTION_FIELD_VALUE, + ACTION_FIELD_CONTROLS, + ACTION_FIELD_TYPE, + ACTION_FIELD_COUNT, + ACTION_FIELD_SCREEN, + ACTION_FIELD_SAME, + ACTION_FIELD_DATA, + ACTION_FIELD_DEVICE, + ACTION_FIELD_KEYCODE, + ACTION_FIELD_MODS_TO_CLEAR, +}; + +ActionsInfo * +NewActionsInfo(void) +{ + enum xkb_action_type type; + ActionsInfo *info; + + info = calloc(1, sizeof(*info)); + if (!info) + return NULL; + + for (type = 0; type < _ACTION_TYPE_NUM_ENTRIES; type++) + info->actions[type].type = type; + + /* Apply some "factory defaults". */ + + /* Increment default button. */ + info->actions[ACTION_TYPE_PTR_DEFAULT].dflt.flags = 0; + info->actions[ACTION_TYPE_PTR_DEFAULT].dflt.value = 1; + info->actions[ACTION_TYPE_PTR_MOVE].ptr.flags = ACTION_ACCEL; + info->actions[ACTION_TYPE_SWITCH_VT].screen.flags = ACTION_SAME_SCREEN; + + return info; +} + +void +FreeActionsInfo(ActionsInfo *info) +{ + free(info); +} + +static const LookupEntry fieldStrings[] = { + { "clearLocks", ACTION_FIELD_CLEAR_LOCKS }, + { "latchToLock", ACTION_FIELD_LATCH_TO_LOCK }, + { "genKeyEvent", ACTION_FIELD_GEN_KEY_EVENT }, + { "generateKeyEvent", ACTION_FIELD_GEN_KEY_EVENT }, + { "report", ACTION_FIELD_REPORT }, + { "default", ACTION_FIELD_DEFAULT }, + { "affect", ACTION_FIELD_AFFECT }, + { "increment", ACTION_FIELD_INCREMENT }, + { "modifiers", ACTION_FIELD_MODIFIERS }, + { "mods", ACTION_FIELD_MODIFIERS }, + { "group", ACTION_FIELD_GROUP }, + { "x", ACTION_FIELD_X }, + { "y", ACTION_FIELD_Y }, + { "accel", ACTION_FIELD_ACCEL }, + { "accelerate", ACTION_FIELD_ACCEL }, + { "repeat", ACTION_FIELD_ACCEL }, + { "button", ACTION_FIELD_BUTTON }, + { "value", ACTION_FIELD_VALUE }, + { "controls", ACTION_FIELD_CONTROLS }, + { "ctrls", ACTION_FIELD_CONTROLS }, + { "type", ACTION_FIELD_TYPE }, + { "count", ACTION_FIELD_COUNT }, + { "screen", ACTION_FIELD_SCREEN }, + { "same", ACTION_FIELD_SAME }, + { "sameServer", ACTION_FIELD_SAME }, + { "data", ACTION_FIELD_DATA }, + { "device", ACTION_FIELD_DEVICE }, + { "dev", ACTION_FIELD_DEVICE }, + { "key", ACTION_FIELD_KEYCODE }, + { "keycode", ACTION_FIELD_KEYCODE }, + { "kc", ACTION_FIELD_KEYCODE }, + { "clearmods", ACTION_FIELD_MODS_TO_CLEAR }, + { "clearmodifiers", ACTION_FIELD_MODS_TO_CLEAR }, + { NULL, 0 } +}; + +static bool +stringToAction(const char *str, enum xkb_action_type *type_rtrn) +{ + return LookupString(actionTypeNames, str, type_rtrn); +} + +static bool +stringToField(const char *str, enum action_field *field_rtrn) +{ + return LookupString(fieldStrings, str, field_rtrn); +} + +static const char * +fieldText(enum action_field field) +{ + return LookupValue(fieldStrings, field); +} + +/***====================================================================***/ + +static inline bool +ReportMismatch(struct xkb_context *ctx, enum xkb_action_type action, + enum action_field field, const char *type) +{ + log_err(ctx, + "Value of %s field must be of type %s; " + "Action %s definition ignored\n", + fieldText(field), type, ActionTypeText(action)); + return false; +} + +static inline bool +ReportIllegal(struct xkb_context *ctx, enum xkb_action_type action, + enum action_field field) +{ + log_err(ctx, + "Field %s is not defined for an action of type %s; " + "Action definition ignored\n", + fieldText(field), ActionTypeText(action)); + return false; +} + +static inline bool +ReportActionNotArray(struct xkb_context *ctx, enum xkb_action_type action, + enum action_field field) +{ + log_err(ctx, + "The %s field in the %s action is not an array; " + "Action definition ignored\n", + fieldText(field), ActionTypeText(action)); + return false; +} + +static bool +HandleNoAction(struct xkb_context *ctx, const struct xkb_mod_set *mods, + union xkb_action *action, enum action_field field, + const ExprDef *array_ndx, const ExprDef *value) + +{ + return true; +} + +static bool +CheckBooleanFlag(struct xkb_context *ctx, enum xkb_action_type action, + enum action_field field, enum xkb_action_flags flag, + const ExprDef *array_ndx, const ExprDef *value, + enum xkb_action_flags *flags_inout) +{ + bool set; + + if (array_ndx) + return ReportActionNotArray(ctx, action, field); + + if (!ExprResolveBoolean(ctx, value, &set)) + return ReportMismatch(ctx, action, field, "boolean"); + + if (set) + *flags_inout |= flag; + else + *flags_inout &= ~flag; + + return true; +} + +static bool +CheckModifierField(struct xkb_context *ctx, const struct xkb_mod_set *mods, + enum xkb_action_type action, const ExprDef *array_ndx, + const ExprDef *value, enum xkb_action_flags *flags_inout, + xkb_mod_mask_t *mods_rtrn) +{ + if (array_ndx) + return ReportActionNotArray(ctx, action, ACTION_FIELD_MODIFIERS); + + if (value->expr.op == EXPR_IDENT) { + const char *valStr; + valStr = xkb_atom_text(ctx, value->ident.ident); + if (valStr && (istreq(valStr, "usemodmapmods") || + istreq(valStr, "modmapmods"))) { + *mods_rtrn = 0; + *flags_inout |= ACTION_MODS_LOOKUP_MODMAP; + return true; + } + } + + if (!ExprResolveModMask(ctx, value, MOD_BOTH, mods, mods_rtrn)) + return ReportMismatch(ctx, action, + ACTION_FIELD_MODIFIERS, "modifier mask"); + + *flags_inout &= ~ACTION_MODS_LOOKUP_MODMAP; + return true; +} + +static const LookupEntry lockWhich[] = { + { "both", 0 }, + { "lock", ACTION_LOCK_NO_UNLOCK }, + { "neither", (ACTION_LOCK_NO_LOCK | ACTION_LOCK_NO_UNLOCK) }, + { "unlock", ACTION_LOCK_NO_LOCK }, + { NULL, 0 } +}; + +static bool +CheckAffectField(struct xkb_context *ctx, enum xkb_action_type action, + const ExprDef *array_ndx, const ExprDef *value, + enum xkb_action_flags *flags_inout) +{ + enum xkb_action_flags flags; + + if (array_ndx) + return ReportActionNotArray(ctx, action, ACTION_FIELD_AFFECT); + + if (!ExprResolveEnum(ctx, value, &flags, lockWhich)) + return ReportMismatch(ctx, action, ACTION_FIELD_AFFECT, + "lock, unlock, both, neither"); + + *flags_inout &= ~(ACTION_LOCK_NO_LOCK | ACTION_LOCK_NO_UNLOCK); + *flags_inout |= flags; + return true; +} + +static bool +HandleSetLatchLockMods(struct xkb_context *ctx, const struct xkb_mod_set *mods, + union xkb_action *action, enum action_field field, + const ExprDef *array_ndx, const ExprDef *value) +{ + struct xkb_mod_action *act = &action->mods; + const enum xkb_action_type type = action->type; + + if (field == ACTION_FIELD_MODIFIERS) + return CheckModifierField(ctx, mods, action->type, array_ndx, value, + &act->flags, &act->mods.mods); + if ((type == ACTION_TYPE_MOD_SET || type == ACTION_TYPE_MOD_LATCH) && + field == ACTION_FIELD_CLEAR_LOCKS) + return CheckBooleanFlag(ctx, action->type, field, + ACTION_LOCK_CLEAR, array_ndx, value, + &act->flags); + if (type == ACTION_TYPE_MOD_LATCH && + field == ACTION_FIELD_LATCH_TO_LOCK) + return CheckBooleanFlag(ctx, action->type, field, + ACTION_LATCH_TO_LOCK, array_ndx, value, + &act->flags); + if (type == ACTION_TYPE_MOD_LOCK && + field == ACTION_FIELD_AFFECT) + return CheckAffectField(ctx, action->type, array_ndx, value, + &act->flags); + + return ReportIllegal(ctx, action->type, field); +} + +static bool +CheckGroupField(struct xkb_context *ctx, enum xkb_action_type action, + const ExprDef *array_ndx, const ExprDef *value, + enum xkb_action_flags *flags_inout, int32_t *group_rtrn) +{ + const ExprDef *spec; + xkb_layout_index_t idx; + enum xkb_action_flags flags = *flags_inout; + + if (array_ndx) + return ReportActionNotArray(ctx, action, ACTION_FIELD_GROUP); + + if (value->expr.op == EXPR_NEGATE || value->expr.op == EXPR_UNARY_PLUS) { + flags &= ~ACTION_ABSOLUTE_SWITCH; + spec = value->unary.child; + } + else { + flags |= ACTION_ABSOLUTE_SWITCH; + spec = value; + } + + if (!ExprResolveGroup(ctx, spec, &idx)) + return ReportMismatch(ctx, action, ACTION_FIELD_GROUP, + "integer (range 1..8)"); + + /* +n, -n are relative, n is absolute. */ + if (value->expr.op == EXPR_NEGATE || value->expr.op == EXPR_UNARY_PLUS) { + *group_rtrn = (int32_t) idx; + if (value->expr.op == EXPR_NEGATE) + *group_rtrn = -*group_rtrn; + } + else { + *group_rtrn = (int32_t) (idx - 1); + } + *flags_inout = flags; + return true; +} + +static bool +HandleSetLatchLockGroup(struct xkb_context *ctx, const struct xkb_mod_set *mods, + union xkb_action *action, enum action_field field, + const ExprDef *array_ndx, const ExprDef *value) +{ + struct xkb_group_action *act = &action->group; + const enum xkb_action_type type = action->type; + + if (field == ACTION_FIELD_GROUP) + return CheckGroupField(ctx, action->type, array_ndx, value, + &act->flags, &act->group); + if ((type == ACTION_TYPE_GROUP_SET || type == ACTION_TYPE_GROUP_LATCH) && + field == ACTION_FIELD_CLEAR_LOCKS) + return CheckBooleanFlag(ctx, action->type, field, + ACTION_LOCK_CLEAR, array_ndx, value, + &act->flags); + if (type == ACTION_TYPE_GROUP_LATCH && + field == ACTION_FIELD_LATCH_TO_LOCK) + return CheckBooleanFlag(ctx, action->type, field, + ACTION_LATCH_TO_LOCK, array_ndx, value, + &act->flags); + + return ReportIllegal(ctx, action->type, field); +} + +static bool +HandleMovePtr(struct xkb_context *ctx, const struct xkb_mod_set *mods, + union xkb_action *action, enum action_field field, + const ExprDef *array_ndx, const ExprDef *value) +{ + struct xkb_pointer_action *act = &action->ptr; + + if (field == ACTION_FIELD_X || field == ACTION_FIELD_Y) { + int val; + const bool absolute = (value->expr.op != EXPR_NEGATE && + value->expr.op != EXPR_UNARY_PLUS); + + if (array_ndx) + return ReportActionNotArray(ctx, action->type, field); + + if (!ExprResolveInteger(ctx, value, &val)) + return ReportMismatch(ctx, action->type, field, "integer"); + + if (val < INT16_MIN || val > INT16_MAX) { + log_err(ctx, + "The %s field in the %s action must be in range %d..%d; " + "Action definition ignored\n", + fieldText(field), ActionTypeText(action->type), + INT16_MIN, INT16_MAX); + return false; + } + + if (field == ACTION_FIELD_X) { + if (absolute) + act->flags |= ACTION_ABSOLUTE_X; + act->x = (int16_t) val; + } + else { + if (absolute) + act->flags |= ACTION_ABSOLUTE_Y; + act->y = (int16_t) val; + } + + return true; + } + else if (field == ACTION_FIELD_ACCEL) { + return CheckBooleanFlag(ctx, action->type, field, + ACTION_ACCEL, array_ndx, value, &act->flags); + } + + return ReportIllegal(ctx, action->type, field); +} + +static bool +HandlePtrBtn(struct xkb_context *ctx, const struct xkb_mod_set *mods, + union xkb_action *action, enum action_field field, + const ExprDef *array_ndx, const ExprDef *value) +{ + struct xkb_pointer_button_action *act = &action->btn; + + if (field == ACTION_FIELD_BUTTON) { + int btn; + + if (array_ndx) + return ReportActionNotArray(ctx, action->type, field); + + if (!ExprResolveButton(ctx, value, &btn)) + return ReportMismatch(ctx, action->type, field, + "integer (range 1..5)"); + + if (btn < 0 || btn > 5) { + log_err(ctx, + "Button must specify default or be in the range 1..5; " + "Illegal button value %d ignored\n", btn); + return false; + } + + act->button = btn; + return true; + } + else if (action->type == ACTION_TYPE_PTR_LOCK && + field == ACTION_FIELD_AFFECT) { + return CheckAffectField(ctx, action->type, array_ndx, value, + &act->flags); + } + else if (field == ACTION_FIELD_COUNT) { + int val; + + if (array_ndx) + return ReportActionNotArray(ctx, action->type, field); + + if (!ExprResolveInteger(ctx, value, &val)) + return ReportMismatch(ctx, action->type, field, "integer"); + + if (val < 0 || val > 255) { + log_err(ctx, + "The count field must have a value in the range 0..255; " + "Illegal count %d ignored\n", val); + return false; + } + + act->count = (uint8_t) val; + return true; + } + + return ReportIllegal(ctx, action->type, field); +} + +static const LookupEntry ptrDflts[] = { + { "dfltbtn", 1 }, + { "defaultbutton", 1 }, + { "button", 1 }, + { NULL, 0 } +}; + +static bool +HandleSetPtrDflt(struct xkb_context *ctx, const struct xkb_mod_set *mods, + union xkb_action *action, enum action_field field, + const ExprDef *array_ndx, const ExprDef *value) +{ + struct xkb_pointer_default_action *act = &action->dflt; + + if (field == ACTION_FIELD_AFFECT) { + unsigned int val; + + if (array_ndx) + return ReportActionNotArray(ctx, action->type, field); + + if (!ExprResolveEnum(ctx, value, &val, ptrDflts)) + return ReportMismatch(ctx, action->type, field, + "pointer component"); + return true; + } + else if (field == ACTION_FIELD_BUTTON || field == ACTION_FIELD_VALUE) { + const ExprDef *button; + int btn; + + if (array_ndx) + return ReportActionNotArray(ctx, action->type, field); + + if (value->expr.op == EXPR_NEGATE || + value->expr.op == EXPR_UNARY_PLUS) { + act->flags &= ~ACTION_ABSOLUTE_SWITCH; + button = value->unary.child; + } + else { + act->flags |= ACTION_ABSOLUTE_SWITCH; + button = value; + } + + if (!ExprResolveButton(ctx, button, &btn)) + return ReportMismatch(ctx, action->type, field, + "integer (range 1..5)"); + + if (btn < 0 || btn > 5) { + log_err(ctx, + "New default button value must be in the range 1..5; " + "Illegal default button value %d ignored\n", btn); + return false; + } + if (btn == 0) { + log_err(ctx, + "Cannot set default pointer button to \"default\"; " + "Illegal default button setting ignored\n"); + return false; + } + + act->value = (value->expr.op == EXPR_NEGATE ? -btn: btn); + return true; + } + + return ReportIllegal(ctx, action->type, field); +} + +static bool +HandleSwitchScreen(struct xkb_context *ctx, const struct xkb_mod_set *mods, + union xkb_action *action, enum action_field field, + const ExprDef *array_ndx, const ExprDef *value) +{ + struct xkb_switch_screen_action *act = &action->screen; + + if (field == ACTION_FIELD_SCREEN) { + const ExprDef *scrn; + int val; + + if (array_ndx) + return ReportActionNotArray(ctx, action->type, field); + + if (value->expr.op == EXPR_NEGATE || + value->expr.op == EXPR_UNARY_PLUS) { + act->flags &= ~ACTION_ABSOLUTE_SWITCH; + scrn = value->unary.child; + } + else { + act->flags |= ACTION_ABSOLUTE_SWITCH; + scrn = value; + } + + if (!ExprResolveInteger(ctx, scrn, &val)) + return ReportMismatch(ctx, action->type, field, + "integer (0..255)"); + + if (val < 0 || val > 255) { + log_err(ctx, + "Screen index must be in the range 1..255; " + "Illegal screen value %d ignored\n", val); + return false; + } + + act->screen = (value->expr.op == EXPR_NEGATE ? -val : val); + return true; + } + else if (field == ACTION_FIELD_SAME) { + return CheckBooleanFlag(ctx, action->type, field, + ACTION_SAME_SCREEN, array_ndx, value, + &act->flags); + } + + return ReportIllegal(ctx, action->type, field); +} + +static bool +HandleSetLockControls(struct xkb_context *ctx, const struct xkb_mod_set *mods, + union xkb_action *action, enum action_field field, + const ExprDef *array_ndx, const ExprDef *value) +{ + struct xkb_controls_action *act = &action->ctrls; + + if (field == ACTION_FIELD_CONTROLS) { + enum xkb_action_controls mask; + + if (array_ndx) + return ReportActionNotArray(ctx, action->type, field); + + if (!ExprResolveMask(ctx, value, &mask, ctrlMaskNames)) + return ReportMismatch(ctx, action->type, field, + "controls mask"); + + act->ctrls = mask; + return true; + } + else if (field == ACTION_FIELD_AFFECT) { + return CheckAffectField(ctx, action->type, array_ndx, value, + &act->flags); + } + + return ReportIllegal(ctx, action->type, field); +} + +static bool +HandlePrivate(struct xkb_context *ctx, const struct xkb_mod_set *mods, + union xkb_action *action, enum action_field field, + const ExprDef *array_ndx, const ExprDef *value) +{ + struct xkb_private_action *act = &action->priv; + + if (field == ACTION_FIELD_TYPE) { + int type; + + if (array_ndx) + return ReportActionNotArray(ctx, action->type, field); + + if (!ExprResolveInteger(ctx, value, &type)) + return ReportMismatch(ctx, ACTION_TYPE_PRIVATE, field, "integer"); + + if (type < 0 || type > 255) { + log_err(ctx, + "Private action type must be in the range 0..255; " + "Illegal type %d ignored\n", type); + return false; + } + + /* + * It's possible for someone to write something like this: + * actions = [ Private(type=3,data[0]=1,data[1]=3,data[2]=3) ] + * where the type refers to some existing action type, e.g. LockMods. + * This assumes that this action's struct is laid out in memory + * exactly as described in the XKB specification and libraries. + * We, however, have changed these structs in various ways, so this + * assumption is no longer true. Since this is a lousy "feature", we + * make actions like these no-ops for now. + */ + if (type < ACTION_TYPE_PRIVATE) { + log_info(ctx, + "Private actions of type %s are not supported; Ignored\n", + ActionTypeText(type)); + act->type = ACTION_TYPE_NONE; + } + else { + act->type = (enum xkb_action_type) type; + } + + return true; + } + else if (field == ACTION_FIELD_DATA) { + if (array_ndx == NULL) { + xkb_atom_t val; + const char *str; + size_t len; + + if (!ExprResolveString(ctx, value, &val)) + return ReportMismatch(ctx, action->type, field, "string"); + + str = xkb_atom_text(ctx, val); + len = strlen(str); + if (len < 1 || len > 7) { + log_warn(ctx, + "A private action has 7 data bytes; " + "Illegal data ignored\n"); + return false; + } + + strncpy((char *) act->data, str, sizeof(act->data)); + return true; + } + else { + int ndx, datum; + + if (!ExprResolveInteger(ctx, array_ndx, &ndx)) { + log_err(ctx, + "Array subscript must be integer; " + "Illegal subscript ignored\n"); + return false; + } + + if (ndx < 0 || (size_t) ndx >= sizeof(act->data)) { + log_err(ctx, + "The data for a private action is %lu bytes long; " + "Attempt to use data[%d] ignored\n", + (unsigned long) sizeof(act->data), ndx); + return false; + } + + if (!ExprResolveInteger(ctx, value, &datum)) + return ReportMismatch(ctx, act->type, field, "integer"); + + if (datum < 0 || datum > 255) { + log_err(ctx, + "All data for a private action must be 0..255; " + "Illegal datum %d ignored\n", datum); + return false; + } + + act->data[ndx] = (uint8_t) datum; + return true; + } + } + + return ReportIllegal(ctx, ACTION_TYPE_NONE, field); +} + +typedef bool (*actionHandler)(struct xkb_context *ctx, + const struct xkb_mod_set *mods, + union xkb_action *action, + enum action_field field, + const ExprDef *array_ndx, + const ExprDef *value); + +static const actionHandler handleAction[_ACTION_TYPE_NUM_ENTRIES] = { + [ACTION_TYPE_NONE] = HandleNoAction, + [ACTION_TYPE_MOD_SET] = HandleSetLatchLockMods, + [ACTION_TYPE_MOD_LATCH] = HandleSetLatchLockMods, + [ACTION_TYPE_MOD_LOCK] = HandleSetLatchLockMods, + [ACTION_TYPE_GROUP_SET] = HandleSetLatchLockGroup, + [ACTION_TYPE_GROUP_LATCH] = HandleSetLatchLockGroup, + [ACTION_TYPE_GROUP_LOCK] = HandleSetLatchLockGroup, + [ACTION_TYPE_PTR_MOVE] = HandleMovePtr, + [ACTION_TYPE_PTR_BUTTON] = HandlePtrBtn, + [ACTION_TYPE_PTR_LOCK] = HandlePtrBtn, + [ACTION_TYPE_PTR_DEFAULT] = HandleSetPtrDflt, + [ACTION_TYPE_TERMINATE] = HandleNoAction, + [ACTION_TYPE_SWITCH_VT] = HandleSwitchScreen, + [ACTION_TYPE_CTRL_SET] = HandleSetLockControls, + [ACTION_TYPE_CTRL_LOCK] = HandleSetLockControls, + [ACTION_TYPE_PRIVATE] = HandlePrivate, +}; + +/***====================================================================***/ + +bool +HandleActionDef(struct xkb_context *ctx, ActionsInfo *info, + const struct xkb_mod_set *mods, ExprDef *def, + union xkb_action *action) +{ + ExprDef *arg; + const char *str; + enum xkb_action_type handler_type; + + if (def->expr.op != EXPR_ACTION_DECL) { + log_err(ctx, "Expected an action definition, found %s\n", + expr_op_type_to_string(def->expr.op)); + return false; + } + + str = xkb_atom_text(ctx, def->action.name); + if (!stringToAction(str, &handler_type)) { + log_err(ctx, "Unknown action %s\n", str); + return false; + } + + /* + * Get the default values for this action type, as modified by + * statements such as: + * latchMods.clearLocks = True; + */ + *action = info->actions[handler_type]; + + /* + * Now change the action properties as specified for this + * particular instance, e.g. "modifiers" and "clearLocks" in: + * SetMods(modifiers=Alt,clearLocks); + */ + for (arg = def->action.args; arg != NULL; + arg = (ExprDef *) arg->common.next) { + const ExprDef *value; + ExprDef *field, *arrayRtrn; + const char *elemRtrn, *fieldRtrn; + enum action_field fieldNdx; + + if (arg->expr.op == EXPR_ASSIGN) { + field = arg->binary.left; + value = arg->binary.right; + } + else if (arg->expr.op == EXPR_NOT || arg->expr.op == EXPR_INVERT) { + field = arg->unary.child; + value = (const ExprDef *) &constFalse; + } + else { + field = arg; + value = (const ExprDef *) &constTrue; + } + + if (!ExprResolveLhs(ctx, field, &elemRtrn, &fieldRtrn, &arrayRtrn)) + return false; + + if (elemRtrn) { + log_err(ctx, + "Cannot change defaults in an action definition; " + "Ignoring attempt to change %s.%s\n", + elemRtrn, fieldRtrn); + return false; + } + + if (!stringToField(fieldRtrn, &fieldNdx)) { + log_err(ctx, "Unknown field name %s\n", fieldRtrn); + return false; + } + + if (!handleAction[handler_type](ctx, mods, action, fieldNdx, + arrayRtrn, value)) + return false; + } + + return true; +} + +bool +SetActionField(struct xkb_context *ctx, ActionsInfo *info, + struct xkb_mod_set *mods, const char *elem, + const char *field, ExprDef *array_ndx, ExprDef *value) +{ + enum xkb_action_type action; + enum action_field action_field; + + if (!stringToAction(elem, &action)) + return false; + + if (!stringToField(field, &action_field)) { + log_err(ctx, "\"%s\" is not a legal field name\n", field); + return false; + } + + return handleAction[action](ctx, mods, &info->actions[action], + action_field, array_ndx, value); +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.h new file mode 100644 index 0000000..1f92e7b --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/action.h @@ -0,0 +1,56 @@ +/************************************************************ + * Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +#ifndef XKBCOMP_ACTION_H +#define XKBCOMP_ACTION_H + +/* + * This struct contains the default values which every new action + * (e.g. in an interpret statement) starts off with. It can be + * modified within the files (see calls to SetActionField). + */ +typedef struct { + union xkb_action actions[_ACTION_TYPE_NUM_ENTRIES]; +} ActionsInfo; + +ActionsInfo * +NewActionsInfo(void); + +void +FreeActionsInfo(ActionsInfo *info); + +bool +HandleActionDef(struct xkb_context *ctx, ActionsInfo *info, + const struct xkb_mod_set *mods, ExprDef *def, + union xkb_action *action); + +bool +SetActionField(struct xkb_context *ctx, ActionsInfo *info, + struct xkb_mod_set *mods, const char *elem, + const char *field, ExprDef *array_ndx, ExprDef *value); + + +#endif diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c new file mode 100644 index 0000000..7fd92a6 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.c @@ -0,0 +1,806 @@ +/************************************************************ + * Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +/* + * Copyright © 2012 Intel Corporation + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Daniel Stone + * Ran Benita + */ + +#include "xkbcomp-priv.h" +#include "ast-build.h" +#include "include.h" + +ParseCommon * +AppendStmt(ParseCommon *to, ParseCommon *append) +{ + ParseCommon *iter; + + if (!to) + return append; + + for (iter = to; iter->next; iter = iter->next); + + iter->next = append; + return to; +} + +static ExprDef * +ExprCreate(enum expr_op_type op, enum expr_value_type type, size_t size) +{ + ExprDef *expr = malloc(size); + if (!expr) + return NULL; + + expr->common.type = STMT_EXPR; + expr->common.next = NULL; + expr->expr.op = op; + expr->expr.value_type = type; + + return expr; +} + +#define EXPR_CREATE(type_, name_, op_, value_type_) \ + ExprDef *name_ = ExprCreate(op_, value_type_, sizeof(type_)); \ + if (!name_) \ + return NULL; + +ExprDef * +ExprCreateString(xkb_atom_t str) +{ + EXPR_CREATE(ExprString, expr, EXPR_VALUE, EXPR_TYPE_STRING); + expr->string.str = str; + return expr; +} + +ExprDef * +ExprCreateInteger(int ival) +{ + EXPR_CREATE(ExprInteger, expr, EXPR_VALUE, EXPR_TYPE_INT); + expr->integer.ival = ival; + return expr; +} + +ExprDef * +ExprCreateBoolean(bool set) +{ + EXPR_CREATE(ExprBoolean, expr, EXPR_VALUE, EXPR_TYPE_BOOLEAN); + expr->boolean.set = set; + return expr; +} + +ExprDef * +ExprCreateKeyName(xkb_atom_t key_name) +{ + EXPR_CREATE(ExprKeyName, expr, EXPR_VALUE, EXPR_TYPE_KEYNAME); + expr->key_name.key_name = key_name; + return expr; +} + +ExprDef * +ExprCreateIdent(xkb_atom_t ident) +{ + EXPR_CREATE(ExprIdent, expr, EXPR_IDENT, EXPR_TYPE_UNKNOWN); + expr->ident.ident = ident; + return expr; +} + +ExprDef * +ExprCreateUnary(enum expr_op_type op, enum expr_value_type type, + ExprDef *child) +{ + EXPR_CREATE(ExprUnary, expr, op, type); + expr->unary.child = child; + return expr; +} + +ExprDef * +ExprCreateBinary(enum expr_op_type op, ExprDef *left, ExprDef *right) +{ + EXPR_CREATE(ExprBinary, expr, op, EXPR_TYPE_UNKNOWN); + + if (op == EXPR_ASSIGN || left->expr.value_type == EXPR_TYPE_UNKNOWN) + expr->expr.value_type = right->expr.value_type; + else if (left->expr.value_type == right->expr.value_type || + right->expr.value_type == EXPR_TYPE_UNKNOWN) + expr->expr.value_type = left->expr.value_type; + expr->binary.left = left; + expr->binary.right = right; + + return expr; +} + +ExprDef * +ExprCreateFieldRef(xkb_atom_t element, xkb_atom_t field) +{ + EXPR_CREATE(ExprFieldRef, expr, EXPR_FIELD_REF, EXPR_TYPE_UNKNOWN); + expr->field_ref.element = element; + expr->field_ref.field = field; + return expr; +} + +ExprDef * +ExprCreateArrayRef(xkb_atom_t element, xkb_atom_t field, ExprDef *entry) +{ + EXPR_CREATE(ExprArrayRef, expr, EXPR_ARRAY_REF, EXPR_TYPE_UNKNOWN); + expr->array_ref.element = element; + expr->array_ref.field = field; + expr->array_ref.entry = entry; + return expr; +} + +ExprDef * +ExprCreateAction(xkb_atom_t name, ExprDef *args) +{ + EXPR_CREATE(ExprAction, expr, EXPR_ACTION_DECL, EXPR_TYPE_UNKNOWN); + expr->action.name = name; + expr->action.args = args; + return expr; +} + +ExprDef * +ExprCreateKeysymList(xkb_keysym_t sym) +{ + EXPR_CREATE(ExprKeysymList, expr, EXPR_KEYSYM_LIST, EXPR_TYPE_SYMBOLS); + + darray_init(expr->keysym_list.syms); + darray_init(expr->keysym_list.symsMapIndex); + darray_init(expr->keysym_list.symsNumEntries); + + darray_append(expr->keysym_list.syms, sym); + darray_append(expr->keysym_list.symsMapIndex, 0); + darray_append(expr->keysym_list.symsNumEntries, 1); + + return expr; +} + +ExprDef * +ExprCreateMultiKeysymList(ExprDef *expr) +{ + unsigned nLevels = darray_size(expr->keysym_list.symsMapIndex); + + darray_resize(expr->keysym_list.symsMapIndex, 1); + darray_resize(expr->keysym_list.symsNumEntries, 1); + darray_item(expr->keysym_list.symsMapIndex, 0) = 0; + darray_item(expr->keysym_list.symsNumEntries, 0) = nLevels; + + return expr; +} + +ExprDef * +ExprAppendKeysymList(ExprDef *expr, xkb_keysym_t sym) +{ + unsigned nSyms = darray_size(expr->keysym_list.syms); + + darray_append(expr->keysym_list.symsMapIndex, nSyms); + darray_append(expr->keysym_list.symsNumEntries, 1); + darray_append(expr->keysym_list.syms, sym); + + return expr; +} + +ExprDef * +ExprAppendMultiKeysymList(ExprDef *expr, ExprDef *append) +{ + xkb_keysym_t *syms; + unsigned nSyms = darray_size(expr->keysym_list.syms); + unsigned numEntries = darray_size(append->keysym_list.syms); + + darray_append(expr->keysym_list.symsMapIndex, nSyms); + darray_append(expr->keysym_list.symsNumEntries, numEntries); + darray_steal(append->keysym_list.syms, &syms, NULL); + darray_append_items(expr->keysym_list.syms, syms, numEntries); + + FreeStmt((ParseCommon *) &append); + + return expr; +} + +KeycodeDef * +KeycodeCreate(xkb_atom_t name, int64_t value) +{ + KeycodeDef *def = malloc(sizeof(*def)); + if (!def) + return NULL; + + def->common.type = STMT_KEYCODE; + def->common.next = NULL; + def->name = name; + def->value = value; + + return def; +} + +KeyAliasDef * +KeyAliasCreate(xkb_atom_t alias, xkb_atom_t real) +{ + KeyAliasDef *def = malloc(sizeof(*def)); + if (!def) + return NULL; + + def->common.type = STMT_ALIAS; + def->common.next = NULL; + def->alias = alias; + def->real = real; + + return def; +} + +VModDef * +VModCreate(xkb_atom_t name, ExprDef *value) +{ + VModDef *def = malloc(sizeof(*def)); + if (!def) + return NULL; + + def->common.type = STMT_VMOD; + def->common.next = NULL; + def->name = name; + def->value = value; + + return def; +} + +VarDef * +VarCreate(ExprDef *name, ExprDef *value) +{ + VarDef *def = malloc(sizeof(*def)); + if (!def) + return NULL; + + def->common.type = STMT_VAR; + def->common.next = NULL; + def->name = name; + def->value = value; + + return def; +} + +VarDef * +BoolVarCreate(xkb_atom_t ident, bool set) +{ + ExprDef *name, *value; + VarDef *def; + if (!(name = ExprCreateIdent(ident))) { + return NULL; + } + if (!(value = ExprCreateBoolean(set))) { + FreeStmt((ParseCommon *) name); + return NULL; + } + if (!(def = VarCreate(name, value))) { + FreeStmt((ParseCommon *) name); + FreeStmt((ParseCommon *) value); + return NULL; + } + return def; +} + +InterpDef * +InterpCreate(xkb_keysym_t sym, ExprDef *match) +{ + InterpDef *def = malloc(sizeof(*def)); + if (!def) + return NULL; + + def->common.type = STMT_INTERP; + def->common.next = NULL; + def->sym = sym; + def->match = match; + def->def = NULL; + + return def; +} + +KeyTypeDef * +KeyTypeCreate(xkb_atom_t name, VarDef *body) +{ + KeyTypeDef *def = malloc(sizeof(*def)); + if (!def) + return NULL; + + def->common.type = STMT_TYPE; + def->common.next = NULL; + def->merge = MERGE_DEFAULT; + def->name = name; + def->body = body; + + return def; +} + +SymbolsDef * +SymbolsCreate(xkb_atom_t keyName, VarDef *symbols) +{ + SymbolsDef *def = malloc(sizeof(*def)); + if (!def) + return NULL; + + def->common.type = STMT_SYMBOLS; + def->common.next = NULL; + def->merge = MERGE_DEFAULT; + def->keyName = keyName; + def->symbols = symbols; + + return def; +} + +GroupCompatDef * +GroupCompatCreate(unsigned group, ExprDef *val) +{ + GroupCompatDef *def = malloc(sizeof(*def)); + if (!def) + return NULL; + + def->common.type = STMT_GROUP_COMPAT; + def->common.next = NULL; + def->merge = MERGE_DEFAULT; + def->group = group; + def->def = val; + + return def; +} + +ModMapDef * +ModMapCreate(xkb_atom_t modifier, ExprDef *keys) +{ + ModMapDef *def = malloc(sizeof(*def)); + if (!def) + return NULL; + + def->common.type = STMT_MODMAP; + def->common.next = NULL; + def->merge = MERGE_DEFAULT; + def->modifier = modifier; + def->keys = keys; + + return def; +} + +LedMapDef * +LedMapCreate(xkb_atom_t name, VarDef *body) +{ + LedMapDef *def = malloc(sizeof(*def)); + if (!def) + return NULL; + + def->common.type = STMT_LED_MAP; + def->common.next = NULL; + def->merge = MERGE_DEFAULT; + def->name = name; + def->body = body; + + return def; +} + +LedNameDef * +LedNameCreate(unsigned ndx, ExprDef *name, bool virtual) +{ + LedNameDef *def = malloc(sizeof(*def)); + if (!def) + return NULL; + + def->common.type = STMT_LED_NAME; + def->common.next = NULL; + def->merge = MERGE_DEFAULT; + def->ndx = ndx; + def->name = name; + def->virtual = virtual; + + return def; +} + +static void +FreeInclude(IncludeStmt *incl); + +IncludeStmt * +IncludeCreate(struct xkb_context *ctx, char *str, enum merge_mode merge) +{ + IncludeStmt *incl, *first; + char *file, *map, *stmt, *tmp, *extra_data; + char nextop; + + incl = first = NULL; + file = map = NULL; + tmp = str; + stmt = strdup_safe(str); + while (tmp && *tmp) + { + if (!ParseIncludeMap(&tmp, &file, &map, &nextop, &extra_data)) + goto err; + + /* + * Given an RMLVO (here layout) like 'us,,fr', the rules parser + * will give out something like 'pc+us+:2+fr:3+inet(evdev)'. + * We should just skip the ':2' in this case and leave it to the + * appropriate section to deal with the empty group. + */ + if (isempty(file)) { + free(file); + free(map); + free(extra_data); + continue; + } + + if (first == NULL) { + first = incl = malloc(sizeof(*first)); + } else { + incl->next_incl = malloc(sizeof(*first)); + incl = incl->next_incl; + } + + if (!incl) { + log_wsgo(ctx, + "Allocation failure in IncludeCreate; " + "Using only part of the include\n"); + break; + } + + incl->common.type = STMT_INCLUDE; + incl->common.next = NULL; + incl->merge = merge; + incl->stmt = NULL; + incl->file = file; + incl->map = map; + incl->modifier = extra_data; + incl->next_incl = NULL; + + if (nextop == '|') + merge = MERGE_AUGMENT; + else + merge = MERGE_OVERRIDE; + } + + if (first) + first->stmt = stmt; + else + free(stmt); + + return first; + +err: + log_err(ctx, "Illegal include statement \"%s\"; Ignored\n", stmt); + FreeInclude(first); + free(stmt); + return NULL; +} + +XkbFile * +XkbFileCreate(enum xkb_file_type type, char *name, ParseCommon *defs, + enum xkb_map_flags flags) +{ + XkbFile *file; + + file = calloc(1, sizeof(*file)); + if (!file) + return NULL; + + XkbEscapeMapName(name); + file->file_type = type; + file->topName = strdup_safe(name); + file->name = name; + file->defs = defs; + file->flags = flags; + + return file; +} + +XkbFile * +XkbFileFromComponents(struct xkb_context *ctx, + const struct xkb_component_names *kkctgs) +{ + char *const components[] = { + kkctgs->keycodes, kkctgs->types, + kkctgs->compat, kkctgs->symbols, + }; + enum xkb_file_type type; + IncludeStmt *include = NULL; + XkbFile *file = NULL; + ParseCommon *defs = NULL; + + for (type = FIRST_KEYMAP_FILE_TYPE; type <= LAST_KEYMAP_FILE_TYPE; type++) { + include = IncludeCreate(ctx, components[type], MERGE_DEFAULT); + if (!include) + goto err; + + file = XkbFileCreate(type, NULL, (ParseCommon *) include, 0); + if (!file) { + FreeInclude(include); + goto err; + } + + defs = AppendStmt(defs, &file->common); + } + + file = XkbFileCreate(FILE_TYPE_KEYMAP, NULL, defs, 0); + if (!file) + goto err; + + return file; + +err: + FreeXkbFile((XkbFile *) defs); + return NULL; +} + +static void +FreeExpr(ExprDef *expr) +{ + if (!expr) + return; + + switch (expr->expr.op) { + case EXPR_ACTION_LIST: + case EXPR_NEGATE: + case EXPR_UNARY_PLUS: + case EXPR_NOT: + case EXPR_INVERT: + FreeStmt((ParseCommon *) expr->unary.child); + break; + + case EXPR_DIVIDE: + case EXPR_ADD: + case EXPR_SUBTRACT: + case EXPR_MULTIPLY: + case EXPR_ASSIGN: + FreeStmt((ParseCommon *) expr->binary.left); + FreeStmt((ParseCommon *) expr->binary.right); + break; + + case EXPR_ACTION_DECL: + FreeStmt((ParseCommon *) expr->action.args); + break; + + case EXPR_ARRAY_REF: + FreeStmt((ParseCommon *) expr->array_ref.entry); + break; + + case EXPR_KEYSYM_LIST: + darray_free(expr->keysym_list.syms); + darray_free(expr->keysym_list.symsMapIndex); + darray_free(expr->keysym_list.symsNumEntries); + break; + + default: + break; + } +} + +static void +FreeInclude(IncludeStmt *incl) +{ + IncludeStmt *next; + + while (incl) + { + next = incl->next_incl; + + free(incl->file); + free(incl->map); + free(incl->modifier); + free(incl->stmt); + + free(incl); + incl = next; + } +} + +void +FreeStmt(ParseCommon *stmt) +{ + ParseCommon *next; + + while (stmt) + { + next = stmt->next; + + switch (stmt->type) { + case STMT_INCLUDE: + FreeInclude((IncludeStmt *) stmt); + /* stmt is already free'd here. */ + stmt = NULL; + break; + case STMT_EXPR: + FreeExpr((ExprDef *) stmt); + break; + case STMT_VAR: + FreeStmt((ParseCommon *) ((VarDef *) stmt)->name); + FreeStmt((ParseCommon *) ((VarDef *) stmt)->value); + break; + case STMT_TYPE: + FreeStmt((ParseCommon *) ((KeyTypeDef *) stmt)->body); + break; + case STMT_INTERP: + FreeStmt((ParseCommon *) ((InterpDef *) stmt)->match); + FreeStmt((ParseCommon *) ((InterpDef *) stmt)->def); + break; + case STMT_VMOD: + FreeStmt((ParseCommon *) ((VModDef *) stmt)->value); + break; + case STMT_SYMBOLS: + FreeStmt((ParseCommon *) ((SymbolsDef *) stmt)->symbols); + break; + case STMT_MODMAP: + FreeStmt((ParseCommon *) ((ModMapDef *) stmt)->keys); + break; + case STMT_GROUP_COMPAT: + FreeStmt((ParseCommon *) ((GroupCompatDef *) stmt)->def); + break; + case STMT_LED_MAP: + FreeStmt((ParseCommon *) ((LedMapDef *) stmt)->body); + break; + case STMT_LED_NAME: + FreeStmt((ParseCommon *) ((LedNameDef *) stmt)->name); + break; + default: + break; + } + + free(stmt); + stmt = next; + } +} + +void +FreeXkbFile(XkbFile *file) +{ + XkbFile *next; + + while (file) + { + next = (XkbFile *) file->common.next; + + switch (file->file_type) { + case FILE_TYPE_KEYMAP: + FreeXkbFile((XkbFile *) file->defs); + break; + + case FILE_TYPE_TYPES: + case FILE_TYPE_COMPAT: + case FILE_TYPE_SYMBOLS: + case FILE_TYPE_KEYCODES: + case FILE_TYPE_GEOMETRY: + FreeStmt(file->defs); + break; + + default: + break; + } + + free(file->name); + free(file->topName); + free(file); + file = next; + } +} + +static const char *xkb_file_type_strings[_FILE_TYPE_NUM_ENTRIES] = { + [FILE_TYPE_KEYCODES] = "xkb_keycodes", + [FILE_TYPE_TYPES] = "xkb_types", + [FILE_TYPE_COMPAT] = "xkb_compatibility", + [FILE_TYPE_SYMBOLS] = "xkb_symbols", + [FILE_TYPE_GEOMETRY] = "xkb_geometry", + [FILE_TYPE_KEYMAP] = "xkb_keymap", + [FILE_TYPE_RULES] = "rules", +}; + +const char * +xkb_file_type_to_string(enum xkb_file_type type) +{ + if (type > _FILE_TYPE_NUM_ENTRIES) + return "unknown"; + return xkb_file_type_strings[type]; +} + +static const char *stmt_type_strings[_STMT_NUM_VALUES] = { + [STMT_UNKNOWN] = "unknown statement", + [STMT_INCLUDE] = "include statement", + [STMT_KEYCODE] = "key name definition", + [STMT_ALIAS] = "key alias definition", + [STMT_EXPR] = "expression", + [STMT_VAR] = "variable definition", + [STMT_TYPE] = "key type definition", + [STMT_INTERP] = "symbol interpretation definition", + [STMT_VMOD] = "virtual modifiers definition", + [STMT_SYMBOLS] = "key symbols definition", + [STMT_MODMAP] = "modifier map declaration", + [STMT_GROUP_COMPAT] = "group declaration", + [STMT_LED_MAP] = "indicator map declaration", + [STMT_LED_NAME] = "indicator name declaration", +}; + +const char * +stmt_type_to_string(enum stmt_type type) +{ + if (type >= _STMT_NUM_VALUES) + return NULL; + return stmt_type_strings[type]; +} + +static const char *expr_op_type_strings[_EXPR_NUM_VALUES] = { + [EXPR_VALUE] = "literal", + [EXPR_IDENT] = "identifier", + [EXPR_ACTION_DECL] = "action declaration", + [EXPR_FIELD_REF] = "field reference", + [EXPR_ARRAY_REF] = "array reference", + [EXPR_KEYSYM_LIST] = "list of keysyms", + [EXPR_ACTION_LIST] = "list of actions", + [EXPR_ADD] = "addition", + [EXPR_SUBTRACT] = "subtraction", + [EXPR_MULTIPLY] = "multiplication", + [EXPR_DIVIDE] = "division", + [EXPR_ASSIGN] = "assignment", + [EXPR_NOT] = "logical negation", + [EXPR_NEGATE] = "arithmetic negation", + [EXPR_INVERT] = "bitwise inversion", + [EXPR_UNARY_PLUS] = "unary plus", +}; + +const char * +expr_op_type_to_string(enum expr_op_type type) +{ + if (type >= _EXPR_NUM_VALUES) + return NULL; + return expr_op_type_strings[type]; +} + +static const char *expr_value_type_strings[_EXPR_TYPE_NUM_VALUES] = { + [EXPR_TYPE_UNKNOWN] = "unknown", + [EXPR_TYPE_BOOLEAN] = "boolean", + [EXPR_TYPE_INT] = "int", + [EXPR_TYPE_STRING] = "string", + [EXPR_TYPE_ACTION] = "action", + [EXPR_TYPE_KEYNAME] = "keyname", + [EXPR_TYPE_SYMBOLS] = "symbols", +}; + +const char * +expr_value_type_to_string(enum expr_value_type type) +{ + if (type >= _EXPR_TYPE_NUM_VALUES) + return NULL; + return expr_value_type_strings[type]; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.h new file mode 100644 index 0000000..b57e4cd --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast-build.h @@ -0,0 +1,122 @@ +/************************************************************ + * Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +#ifndef XKBCOMP_AST_BUILD_H +#define XKBCOMP_AST_BUILD_H + +ParseCommon * +AppendStmt(ParseCommon *to, ParseCommon *append); + +ExprDef * +ExprCreateString(xkb_atom_t str); + +ExprDef * +ExprCreateInteger(int ival); + +ExprDef * +ExprCreateBoolean(bool set); + +ExprDef * +ExprCreateKeyName(xkb_atom_t key_name); + +ExprDef * +ExprCreateIdent(xkb_atom_t ident); + +ExprDef * +ExprCreateUnary(enum expr_op_type op, enum expr_value_type type, + ExprDef *child); + +ExprDef * +ExprCreateBinary(enum expr_op_type op, ExprDef *left, ExprDef *right); + +ExprDef * +ExprCreateFieldRef(xkb_atom_t element, xkb_atom_t field); + +ExprDef * +ExprCreateArrayRef(xkb_atom_t element, xkb_atom_t field, ExprDef *entry); + +ExprDef * +ExprCreateAction(xkb_atom_t name, ExprDef *args); + +ExprDef * +ExprCreateMultiKeysymList(ExprDef *list); + +ExprDef * +ExprCreateKeysymList(xkb_keysym_t sym); + +ExprDef * +ExprAppendMultiKeysymList(ExprDef *list, ExprDef *append); + +ExprDef * +ExprAppendKeysymList(ExprDef *list, xkb_keysym_t sym); + +KeycodeDef * +KeycodeCreate(xkb_atom_t name, int64_t value); + +KeyAliasDef * +KeyAliasCreate(xkb_atom_t alias, xkb_atom_t real); + +VModDef * +VModCreate(xkb_atom_t name, ExprDef *value); + +VarDef * +VarCreate(ExprDef *name, ExprDef *value); + +VarDef * +BoolVarCreate(xkb_atom_t ident, bool set); + +InterpDef * +InterpCreate(xkb_keysym_t sym, ExprDef *match); + +KeyTypeDef * +KeyTypeCreate(xkb_atom_t name, VarDef *body); + +SymbolsDef * +SymbolsCreate(xkb_atom_t keyName, VarDef *symbols); + +GroupCompatDef * +GroupCompatCreate(unsigned group, ExprDef *def); + +ModMapDef * +ModMapCreate(xkb_atom_t modifier, ExprDef *keys); + +LedMapDef * +LedMapCreate(xkb_atom_t name, VarDef *body); + +LedNameDef * +LedNameCreate(unsigned ndx, ExprDef *name, bool virtual); + +IncludeStmt * +IncludeCreate(struct xkb_context *ctx, char *str, enum merge_mode merge); + +XkbFile * +XkbFileCreate(enum xkb_file_type type, char *name, ParseCommon *defs, + enum xkb_map_flags flags); + +void +FreeStmt(ParseCommon *stmt); + +#endif diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast.h new file mode 100644 index 0000000..26cbb3a --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/ast.h @@ -0,0 +1,347 @@ +/************************************************************ + * Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +/* + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef XKBCOMP_AST_H +#define XKBCOMP_AST_H + +enum xkb_file_type { + /* Component files, by order of compilation. */ + FILE_TYPE_KEYCODES = 0, + FILE_TYPE_TYPES = 1, + FILE_TYPE_COMPAT = 2, + FILE_TYPE_SYMBOLS = 3, + /* Geometry is not compiled any more. */ + FILE_TYPE_GEOMETRY = 4, + + /* A top level file which includes the above files. */ + FILE_TYPE_KEYMAP, + +/* File types which must be found in a keymap file. */ +#define FIRST_KEYMAP_FILE_TYPE FILE_TYPE_KEYCODES +#define LAST_KEYMAP_FILE_TYPE FILE_TYPE_SYMBOLS + + /* This one doesn't mix with the others, but useful here as well. */ + FILE_TYPE_RULES, + + _FILE_TYPE_NUM_ENTRIES +}; + +enum stmt_type { + STMT_UNKNOWN = 0, + STMT_INCLUDE, + STMT_KEYCODE, + STMT_ALIAS, + STMT_EXPR, + STMT_VAR, + STMT_TYPE, + STMT_INTERP, + STMT_VMOD, + STMT_SYMBOLS, + STMT_MODMAP, + STMT_GROUP_COMPAT, + STMT_LED_MAP, + STMT_LED_NAME, + + _STMT_NUM_VALUES +}; + +enum expr_value_type { + EXPR_TYPE_UNKNOWN = 0, + EXPR_TYPE_BOOLEAN, + EXPR_TYPE_INT, + EXPR_TYPE_STRING, + EXPR_TYPE_ACTION, + EXPR_TYPE_KEYNAME, + EXPR_TYPE_SYMBOLS, + + _EXPR_TYPE_NUM_VALUES +}; + +enum expr_op_type { + EXPR_VALUE, + EXPR_IDENT, + EXPR_ACTION_DECL, + EXPR_FIELD_REF, + EXPR_ARRAY_REF, + EXPR_KEYSYM_LIST, + EXPR_ACTION_LIST, + EXPR_ADD, + EXPR_SUBTRACT, + EXPR_MULTIPLY, + EXPR_DIVIDE, + EXPR_ASSIGN, + EXPR_NOT, + EXPR_NEGATE, + EXPR_INVERT, + EXPR_UNARY_PLUS, + + _EXPR_NUM_VALUES +}; + +enum merge_mode { + MERGE_DEFAULT, + MERGE_AUGMENT, + MERGE_OVERRIDE, + MERGE_REPLACE, +}; + +const char * +xkb_file_type_to_string(enum xkb_file_type type); + +const char * +stmt_type_to_string(enum stmt_type type); + +const char * +expr_op_type_to_string(enum expr_op_type type); + +const char * +expr_value_type_to_string(enum expr_value_type type); + +typedef struct _ParseCommon { + struct _ParseCommon *next; + enum stmt_type type; +} ParseCommon; + +typedef struct _IncludeStmt { + ParseCommon common; + enum merge_mode merge; + char *stmt; + char *file; + char *map; + char *modifier; + struct _IncludeStmt *next_incl; +} IncludeStmt; + +typedef struct { + ParseCommon common; + enum expr_op_type op; + enum expr_value_type value_type; +} ExprCommon; + +typedef union ExprDef ExprDef; + +typedef struct { + ExprCommon expr; + xkb_atom_t ident; +} ExprIdent; + +typedef struct { + ExprCommon expr; + xkb_atom_t str; +} ExprString; + +typedef struct { + ExprCommon expr; + bool set; +} ExprBoolean; + +typedef struct { + ExprCommon expr; + int ival; +} ExprInteger; + +typedef struct { + ExprCommon expr; + xkb_atom_t key_name; +} ExprKeyName; + +typedef struct { + ExprCommon expr; + ExprDef *left; + ExprDef *right; +} ExprBinary; + +typedef struct { + ExprCommon expr; + ExprDef *child; +} ExprUnary; + +typedef struct { + ExprCommon expr; + xkb_atom_t element; + xkb_atom_t field; +} ExprFieldRef; + +typedef struct { + ExprCommon expr; + xkb_atom_t element; + xkb_atom_t field; + ExprDef *entry; +} ExprArrayRef; + +typedef struct { + ExprCommon expr; + xkb_atom_t name; + ExprDef *args; +} ExprAction; + +typedef struct { + ExprCommon expr; + darray(xkb_keysym_t) syms; + darray(unsigned int) symsMapIndex; + darray(unsigned int) symsNumEntries; +} ExprKeysymList; + +union ExprDef { + ParseCommon common; + /* Maybe someday we can use C11 anonymous struct for ExprCommon here. */ + ExprCommon expr; + ExprIdent ident; + ExprString string; + ExprBoolean boolean; + ExprInteger integer; + ExprKeyName key_name; + ExprBinary binary; + ExprUnary unary; + ExprFieldRef field_ref; + ExprArrayRef array_ref; + ExprAction action; + ExprKeysymList keysym_list; +}; + +typedef struct { + ParseCommon common; + enum merge_mode merge; + ExprDef *name; + ExprDef *value; +} VarDef; + +typedef struct { + ParseCommon common; + enum merge_mode merge; + xkb_atom_t name; + ExprDef *value; +} VModDef; + +typedef struct { + ParseCommon common; + enum merge_mode merge; + xkb_atom_t name; + int64_t value; +} KeycodeDef; + +typedef struct { + ParseCommon common; + enum merge_mode merge; + xkb_atom_t alias; + xkb_atom_t real; +} KeyAliasDef; + +typedef struct { + ParseCommon common; + enum merge_mode merge; + xkb_atom_t name; + VarDef *body; +} KeyTypeDef; + +typedef struct { + ParseCommon common; + enum merge_mode merge; + xkb_atom_t keyName; + VarDef *symbols; +} SymbolsDef; + +typedef struct { + ParseCommon common; + enum merge_mode merge; + xkb_atom_t modifier; + ExprDef *keys; +} ModMapDef; + +typedef struct { + ParseCommon common; + enum merge_mode merge; + unsigned group; + ExprDef *def; +} GroupCompatDef; + +typedef struct { + ParseCommon common; + enum merge_mode merge; + xkb_keysym_t sym; + ExprDef *match; + VarDef *def; +} InterpDef; + +typedef struct { + ParseCommon common; + enum merge_mode merge; + unsigned ndx; + ExprDef *name; + bool virtual; +} LedNameDef; + +typedef struct { + ParseCommon common; + enum merge_mode merge; + xkb_atom_t name; + VarDef *body; +} LedMapDef; + +enum xkb_map_flags { + MAP_IS_DEFAULT = (1 << 0), + MAP_IS_PARTIAL = (1 << 1), + MAP_IS_HIDDEN = (1 << 2), + MAP_HAS_ALPHANUMERIC = (1 << 3), + MAP_HAS_MODIFIER = (1 << 4), + MAP_HAS_KEYPAD = (1 << 5), + MAP_HAS_FN = (1 << 6), + MAP_IS_ALTGR = (1 << 7), +}; + +typedef struct { + ParseCommon common; + enum xkb_file_type file_type; + char *topName; + char *name; + ParseCommon *defs; + enum xkb_map_flags flags; +} XkbFile; + +#endif diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c new file mode 100644 index 0000000..ff83645 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/compat.c @@ -0,0 +1,932 @@ +/************************************************************ + * Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +/* + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "xkbcomp-priv.h" +#include "text.h" +#include "expr.h" +#include "action.h" +#include "vmod.h" +#include "include.h" + +enum si_field { + SI_FIELD_VIRTUAL_MOD = (1 << 0), + SI_FIELD_ACTION = (1 << 1), + SI_FIELD_AUTO_REPEAT = (1 << 2), + SI_FIELD_LEVEL_ONE_ONLY = (1 << 3), +}; + +typedef struct { + enum si_field defined; + enum merge_mode merge; + + struct xkb_sym_interpret interp; +} SymInterpInfo; + +enum led_field { + LED_FIELD_MODS = (1 << 0), + LED_FIELD_GROUPS = (1 << 1), + LED_FIELD_CTRLS = (1 << 2), +}; + +typedef struct { + enum led_field defined; + enum merge_mode merge; + + struct xkb_led led; +} LedInfo; + +typedef struct { + char *name; + int errorCount; + SymInterpInfo default_interp; + darray(SymInterpInfo) interps; + LedInfo default_led; + LedInfo leds[XKB_MAX_LEDS]; + unsigned int num_leds; + ActionsInfo *actions; + struct xkb_mod_set mods; + + struct xkb_context *ctx; +} CompatInfo; + +static const char * +siText(SymInterpInfo *si, CompatInfo *info) +{ + char *buf = xkb_context_get_buffer(info->ctx, 128); + + if (si == &info->default_interp) + return "default"; + + snprintf(buf, 128, "%s+%s(%s)", + KeysymText(info->ctx, si->interp.sym), + SIMatchText(si->interp.match), + ModMaskText(info->ctx, &info->mods, si->interp.mods)); + + return buf; +} + +static inline bool +ReportSINotArray(CompatInfo *info, SymInterpInfo *si, const char *field) +{ + return ReportNotArray(info->ctx, "symbol interpretation", field, + siText(si, info)); +} + +static inline bool +ReportSIBadType(CompatInfo *info, SymInterpInfo *si, const char *field, + const char *wanted) +{ + return ReportBadType(info->ctx, "symbol interpretation", field, + siText(si, info), wanted); +} + +static inline bool +ReportLedBadType(CompatInfo *info, LedInfo *ledi, const char *field, + const char *wanted) +{ + return ReportBadType(info->ctx, "indicator map", field, + xkb_atom_text(info->ctx, ledi->led.name), + wanted); +} + +static inline bool +ReportLedNotArray(CompatInfo *info, LedInfo *ledi, const char *field) +{ + return ReportNotArray(info->ctx, "indicator map", field, + xkb_atom_text(info->ctx, ledi->led.name)); +} + +static void +InitCompatInfo(CompatInfo *info, struct xkb_context *ctx, + ActionsInfo *actions, const struct xkb_mod_set *mods) +{ + memset(info, 0, sizeof(*info)); + info->ctx = ctx; + info->actions = actions; + info->mods = *mods; + info->default_interp.merge = MERGE_OVERRIDE; + info->default_interp.interp.virtual_mod = XKB_MOD_INVALID; + info->default_led.merge = MERGE_OVERRIDE; +} + +static void +ClearCompatInfo(CompatInfo *info) +{ + free(info->name); + darray_free(info->interps); +} + +static SymInterpInfo * +FindMatchingInterp(CompatInfo *info, SymInterpInfo *new) +{ + SymInterpInfo *old; + + darray_foreach(old, info->interps) + if (old->interp.sym == new->interp.sym && + old->interp.mods == new->interp.mods && + old->interp.match == new->interp.match) + return old; + + return NULL; +} + +static bool +UseNewInterpField(enum si_field field, SymInterpInfo *old, SymInterpInfo *new, + bool report, enum si_field *collide) +{ + if (!(old->defined & field)) + return true; + + if (new->defined & field) { + if (report) + *collide |= field; + + if (new->merge != MERGE_AUGMENT) + return true; + } + + return false; +} + +static bool +AddInterp(CompatInfo *info, SymInterpInfo *new, bool same_file) +{ + SymInterpInfo *old = FindMatchingInterp(info, new); + if (old) { + const int verbosity = xkb_context_get_log_verbosity(info->ctx); + const bool report = (same_file && verbosity > 0) || verbosity > 9; + enum si_field collide = 0; + + if (new->merge == MERGE_REPLACE) { + if (report) + log_warn(info->ctx, + "Multiple definitions for \"%s\"; " + "Earlier interpretation ignored\n", + siText(new, info)); + *old = *new; + return true; + } + + if (UseNewInterpField(SI_FIELD_VIRTUAL_MOD, old, new, report, + &collide)) { + old->interp.virtual_mod = new->interp.virtual_mod; + old->defined |= SI_FIELD_VIRTUAL_MOD; + } + if (UseNewInterpField(SI_FIELD_ACTION, old, new, report, + &collide)) { + old->interp.action = new->interp.action; + old->defined |= SI_FIELD_ACTION; + } + if (UseNewInterpField(SI_FIELD_AUTO_REPEAT, old, new, report, + &collide)) { + old->interp.repeat = new->interp.repeat; + old->defined |= SI_FIELD_AUTO_REPEAT; + } + if (UseNewInterpField(SI_FIELD_LEVEL_ONE_ONLY, old, new, report, + &collide)) { + old->interp.level_one_only = new->interp.level_one_only; + old->defined |= SI_FIELD_LEVEL_ONE_ONLY; + } + + if (collide) { + log_warn(info->ctx, + "Multiple interpretations of \"%s\"; " + "Using %s definition for duplicate fields\n", + siText(new, info), + (new->merge != MERGE_AUGMENT ? "last" : "first")); + } + + return true; + } + + darray_append(info->interps, *new); + return true; +} + +/***====================================================================***/ + +static bool +ResolveStateAndPredicate(ExprDef *expr, enum xkb_match_operation *pred_rtrn, + xkb_mod_mask_t *mods_rtrn, CompatInfo *info) +{ + if (expr == NULL) { + *pred_rtrn = MATCH_ANY_OR_NONE; + *mods_rtrn = MOD_REAL_MASK_ALL; + return true; + } + + *pred_rtrn = MATCH_EXACTLY; + if (expr->expr.op == EXPR_ACTION_DECL) { + const char *pred_txt = xkb_atom_text(info->ctx, expr->action.name); + if (!LookupString(symInterpretMatchMaskNames, pred_txt, pred_rtrn)) { + log_err(info->ctx, + "Illegal modifier predicate \"%s\"; Ignored\n", pred_txt); + return false; + } + expr = expr->action.args; + } + else if (expr->expr.op == EXPR_IDENT) { + const char *pred_txt = xkb_atom_text(info->ctx, expr->ident.ident); + if (pred_txt && istreq(pred_txt, "any")) { + *pred_rtrn = MATCH_ANY; + *mods_rtrn = MOD_REAL_MASK_ALL; + return true; + } + } + + return ExprResolveModMask(info->ctx, expr, MOD_REAL, &info->mods, + mods_rtrn); +} + +/***====================================================================***/ + +static bool +UseNewLEDField(enum led_field field, LedInfo *old, LedInfo *new, + bool report, enum led_field *collide) +{ + if (!(old->defined & field)) + return true; + + if (new->defined & field) { + if (report) + *collide |= field; + + if (new->merge != MERGE_AUGMENT) + return true; + } + + return false; +} + +static bool +AddLedMap(CompatInfo *info, LedInfo *new, bool same_file) +{ + enum led_field collide; + const int verbosity = xkb_context_get_log_verbosity(info->ctx); + const bool report = (same_file && verbosity > 0) || verbosity > 9; + + for (xkb_led_index_t i = 0; i < info->num_leds; i++) { + LedInfo *old = &info->leds[i]; + + if (old->led.name != new->led.name) + continue; + + if (old->led.mods.mods == new->led.mods.mods && + old->led.groups == new->led.groups && + old->led.ctrls == new->led.ctrls && + old->led.which_mods == new->led.which_mods && + old->led.which_groups == new->led.which_groups) { + old->defined |= new->defined; + return true; + } + + if (new->merge == MERGE_REPLACE) { + if (report) + log_warn(info->ctx, + "Map for indicator %s redefined; " + "Earlier definition ignored\n", + xkb_atom_text(info->ctx, old->led.name)); + *old = *new; + return true; + } + + collide = 0; + if (UseNewLEDField(LED_FIELD_MODS, old, new, report, &collide)) { + old->led.which_mods = new->led.which_mods; + old->led.mods = new->led.mods; + old->defined |= LED_FIELD_MODS; + } + if (UseNewLEDField(LED_FIELD_GROUPS, old, new, report, &collide)) { + old->led.which_groups = new->led.which_groups; + old->led.groups = new->led.groups; + old->defined |= LED_FIELD_GROUPS; + } + if (UseNewLEDField(LED_FIELD_CTRLS, old, new, report, &collide)) { + old->led.ctrls = new->led.ctrls; + old->defined |= LED_FIELD_CTRLS; + } + + if (collide) { + log_warn(info->ctx, + "Map for indicator %s redefined; " + "Using %s definition for duplicate fields\n", + xkb_atom_text(info->ctx, old->led.name), + (new->merge == MERGE_AUGMENT ? "first" : "last")); + } + + return true; + } + + if (info->num_leds >= XKB_MAX_LEDS) { + log_err(info->ctx, + "Too many LEDs defined (maximum %d)\n", + XKB_MAX_LEDS); + return false; + } + info->leds[info->num_leds++] = *new; + return true; +} + +static void +MergeIncludedCompatMaps(CompatInfo *into, CompatInfo *from, + enum merge_mode merge) +{ + SymInterpInfo *si; + + if (from->errorCount > 0) { + into->errorCount += from->errorCount; + return; + } + + into->mods = from->mods; + + if (into->name == NULL) { + into->name = from->name; + from->name = NULL; + } + + if (darray_empty(into->interps)) { + into->interps = from->interps; + darray_init(from->interps); + } + else { + darray_foreach(si, from->interps) { + si->merge = (merge == MERGE_DEFAULT ? si->merge : merge); + if (!AddInterp(into, si, false)) + into->errorCount++; + } + } + + if (into->num_leds == 0) { + memcpy(into->leds, from->leds, sizeof(*from->leds) * from->num_leds); + into->num_leds = from->num_leds; + from->num_leds = 0; + } + else { + for (xkb_led_index_t i = 0; i < from->num_leds; i++) { + LedInfo *ledi = &from->leds[i]; + ledi->merge = (merge == MERGE_DEFAULT ? ledi->merge : merge); + if (!AddLedMap(into, ledi, false)) + into->errorCount++; + } + } +} + +static void +HandleCompatMapFile(CompatInfo *info, XkbFile *file, enum merge_mode merge); + +static bool +HandleIncludeCompatMap(CompatInfo *info, IncludeStmt *include) +{ + CompatInfo included; + + InitCompatInfo(&included, info->ctx, info->actions, &info->mods); + included.name = include->stmt; + include->stmt = NULL; + + for (IncludeStmt *stmt = include; stmt; stmt = stmt->next_incl) { + CompatInfo next_incl; + XkbFile *file; + + file = ProcessIncludeFile(info->ctx, stmt, FILE_TYPE_COMPAT); + if (!file) { + info->errorCount += 10; + ClearCompatInfo(&included); + return false; + } + + InitCompatInfo(&next_incl, info->ctx, info->actions, &included.mods); + next_incl.default_interp = info->default_interp; + next_incl.default_interp.merge = stmt->merge; + next_incl.default_led = info->default_led; + next_incl.default_led.merge = stmt->merge; + + HandleCompatMapFile(&next_incl, file, MERGE_OVERRIDE); + + MergeIncludedCompatMaps(&included, &next_incl, stmt->merge); + + ClearCompatInfo(&next_incl); + FreeXkbFile(file); + } + + MergeIncludedCompatMaps(info, &included, include->merge); + ClearCompatInfo(&included); + + return (info->errorCount == 0); +} + +static bool +SetInterpField(CompatInfo *info, SymInterpInfo *si, const char *field, + ExprDef *arrayNdx, ExprDef *value) +{ + xkb_mod_index_t ndx; + + if (istreq(field, "action")) { + if (arrayNdx) + return ReportSINotArray(info, si, field); + + if (!HandleActionDef(info->ctx, info->actions, &info->mods, + value, &si->interp.action)) + return false; + + si->defined |= SI_FIELD_ACTION; + } + else if (istreq(field, "virtualmodifier") || + istreq(field, "virtualmod")) { + if (arrayNdx) + return ReportSINotArray(info, si, field); + + if (!ExprResolveMod(info->ctx, value, MOD_VIRT, &info->mods, &ndx)) + return ReportSIBadType(info, si, field, "virtual modifier"); + + si->interp.virtual_mod = ndx; + si->defined |= SI_FIELD_VIRTUAL_MOD; + } + else if (istreq(field, "repeat")) { + bool set; + + if (arrayNdx) + return ReportSINotArray(info, si, field); + + if (!ExprResolveBoolean(info->ctx, value, &set)) + return ReportSIBadType(info, si, field, "boolean"); + + si->interp.repeat = set; + + si->defined |= SI_FIELD_AUTO_REPEAT; + } + else if (istreq(field, "locking")) { + log_dbg(info->ctx, + "The \"locking\" field in symbol interpretation is unsupported; " + "Ignored\n"); + } + else if (istreq(field, "usemodmap") || + istreq(field, "usemodmapmods")) { + unsigned int val; + + if (arrayNdx) + return ReportSINotArray(info, si, field); + + if (!ExprResolveEnum(info->ctx, value, &val, useModMapValueNames)) + return ReportSIBadType(info, si, field, "level specification"); + + si->interp.level_one_only = val; + si->defined |= SI_FIELD_LEVEL_ONE_ONLY; + } + else { + return ReportBadField(info->ctx, "symbol interpretation", field, + siText(si, info)); + } + + return true; +} + +static bool +SetLedMapField(CompatInfo *info, LedInfo *ledi, const char *field, + ExprDef *arrayNdx, ExprDef *value) +{ + bool ok = true; + + if (istreq(field, "modifiers") || istreq(field, "mods")) { + if (arrayNdx) + return ReportLedNotArray(info, ledi, field); + + if (!ExprResolveModMask(info->ctx, value, MOD_BOTH, + &info->mods, &ledi->led.mods.mods)) + return ReportLedBadType(info, ledi, field, "modifier mask"); + + ledi->defined |= LED_FIELD_MODS; + } + else if (istreq(field, "groups")) { + unsigned int mask; + + if (arrayNdx) + return ReportLedNotArray(info, ledi, field); + + if (!ExprResolveMask(info->ctx, value, &mask, groupMaskNames)) + return ReportLedBadType(info, ledi, field, "group mask"); + + ledi->led.groups = mask; + ledi->defined |= LED_FIELD_GROUPS; + } + else if (istreq(field, "controls") || istreq(field, "ctrls")) { + unsigned int mask; + + if (arrayNdx) + return ReportLedNotArray(info, ledi, field); + + if (!ExprResolveMask(info->ctx, value, &mask, ctrlMaskNames)) + return ReportLedBadType(info, ledi, field, "controls mask"); + + ledi->led.ctrls = mask; + ledi->defined |= LED_FIELD_CTRLS; + } + else if (istreq(field, "allowexplicit")) { + log_dbg(info->ctx, + "The \"allowExplicit\" field in indicator statements is unsupported; " + "Ignored\n"); + } + else if (istreq(field, "whichmodstate") || + istreq(field, "whichmodifierstate")) { + unsigned int mask; + + if (arrayNdx) + return ReportLedNotArray(info, ledi, field); + + if (!ExprResolveMask(info->ctx, value, &mask, + modComponentMaskNames)) + return ReportLedBadType(info, ledi, field, + "mask of modifier state components"); + + ledi->led.which_mods = mask; + } + else if (istreq(field, "whichgroupstate")) { + unsigned mask; + + if (arrayNdx) + return ReportLedNotArray(info, ledi, field); + + if (!ExprResolveMask(info->ctx, value, &mask, + groupComponentMaskNames)) + return ReportLedBadType(info, ledi, field, + "mask of group state components"); + + ledi->led.which_groups = mask; + } + else if (istreq(field, "driveskbd") || + istreq(field, "driveskeyboard") || + istreq(field, "leddriveskbd") || + istreq(field, "leddriveskeyboard") || + istreq(field, "indicatordriveskbd") || + istreq(field, "indicatordriveskeyboard")) { + log_dbg(info->ctx, + "The \"%s\" field in indicator statements is unsupported; " + "Ignored\n", field); + } + else if (istreq(field, "index")) { + /* Users should see this, it might cause unexpected behavior. */ + log_err(info->ctx, + "The \"index\" field in indicator statements is unsupported; " + "Ignored\n"); + } + else { + log_err(info->ctx, + "Unknown field %s in map for %s indicator; " + "Definition ignored\n", + field, xkb_atom_text(info->ctx, ledi->led.name)); + ok = false; + } + + return ok; +} + +static bool +HandleGlobalVar(CompatInfo *info, VarDef *stmt) +{ + const char *elem, *field; + ExprDef *ndx; + bool ret; + + if (!ExprResolveLhs(info->ctx, stmt->name, &elem, &field, &ndx)) + ret = false; + else if (elem && istreq(elem, "interpret")) + ret = SetInterpField(info, &info->default_interp, field, ndx, + stmt->value); + else if (elem && istreq(elem, "indicator")) + ret = SetLedMapField(info, &info->default_led, field, ndx, + stmt->value); + else + ret = SetActionField(info->ctx, info->actions, &info->mods, + elem, field, ndx, stmt->value); + return ret; +} + +static bool +HandleInterpBody(CompatInfo *info, VarDef *def, SymInterpInfo *si) +{ + bool ok = true; + const char *elem, *field; + ExprDef *arrayNdx; + + for (; def; def = (VarDef *) def->common.next) { + if (def->name && def->name->expr.op == EXPR_FIELD_REF) { + log_err(info->ctx, + "Cannot set a global default value from within an interpret statement; " + "Move statements to the global file scope\n"); + ok = false; + continue; + } + + ok = ExprResolveLhs(info->ctx, def->name, &elem, &field, &arrayNdx); + if (!ok) + continue; + + ok = SetInterpField(info, si, field, arrayNdx, def->value); + } + + return ok; +} + +static bool +HandleInterpDef(CompatInfo *info, InterpDef *def, enum merge_mode merge) +{ + enum xkb_match_operation pred; + xkb_mod_mask_t mods; + SymInterpInfo si; + + if (!ResolveStateAndPredicate(def->match, &pred, &mods, info)) { + log_err(info->ctx, + "Couldn't determine matching modifiers; " + "Symbol interpretation ignored\n"); + return false; + } + + si = info->default_interp; + si.merge = merge = (def->merge == MERGE_DEFAULT ? merge : def->merge); + si.interp.sym = def->sym; + si.interp.match = pred; + si.interp.mods = mods; + + if (!HandleInterpBody(info, def->def, &si)) { + info->errorCount++; + return false; + } + + if (!AddInterp(info, &si, true)) { + info->errorCount++; + return false; + } + + return true; +} + +static bool +HandleLedMapDef(CompatInfo *info, LedMapDef *def, enum merge_mode merge) +{ + LedInfo ledi; + VarDef *var; + bool ok; + + if (def->merge != MERGE_DEFAULT) + merge = def->merge; + + ledi = info->default_led; + ledi.merge = merge; + ledi.led.name = def->name; + + ok = true; + for (var = def->body; var != NULL; var = (VarDef *) var->common.next) { + const char *elem, *field; + ExprDef *arrayNdx; + if (!ExprResolveLhs(info->ctx, var->name, &elem, &field, &arrayNdx)) { + ok = false; + continue; + } + + if (elem) { + log_err(info->ctx, + "Cannot set defaults for \"%s\" element in indicator map; " + "Assignment to %s.%s ignored\n", elem, elem, field); + ok = false; + } + else { + ok = SetLedMapField(info, &ledi, field, arrayNdx, var->value) && ok; + } + } + + if (ok) + return AddLedMap(info, &ledi, true); + + return false; +} + +static void +HandleCompatMapFile(CompatInfo *info, XkbFile *file, enum merge_mode merge) +{ + bool ok; + + merge = (merge == MERGE_DEFAULT ? MERGE_AUGMENT : merge); + + free(info->name); + info->name = strdup_safe(file->name); + + for (ParseCommon *stmt = file->defs; stmt; stmt = stmt->next) { + switch (stmt->type) { + case STMT_INCLUDE: + ok = HandleIncludeCompatMap(info, (IncludeStmt *) stmt); + break; + case STMT_INTERP: + ok = HandleInterpDef(info, (InterpDef *) stmt, merge); + break; + case STMT_GROUP_COMPAT: + log_dbg(info->ctx, + "The \"group\" statement in compat is unsupported; " + "Ignored\n"); + ok = true; + break; + case STMT_LED_MAP: + ok = HandleLedMapDef(info, (LedMapDef *) stmt, merge); + break; + case STMT_VAR: + ok = HandleGlobalVar(info, (VarDef *) stmt); + break; + case STMT_VMOD: + ok = HandleVModDef(info->ctx, &info->mods, (VModDef *) stmt, merge); + break; + default: + log_err(info->ctx, + "Compat files may not include other types; " + "Ignoring %s\n", stmt_type_to_string(stmt->type)); + ok = false; + break; + } + + if (!ok) + info->errorCount++; + + if (info->errorCount > 10) { + log_err(info->ctx, + "Abandoning compatibility map \"%s\"\n", file->topName); + break; + } + } +} + +/* Temporary struct for CopyInterps. */ +struct collect { + darray(struct xkb_sym_interpret) sym_interprets; +}; + +static void +CopyInterps(CompatInfo *info, bool needSymbol, enum xkb_match_operation pred, + struct collect *collect) +{ + SymInterpInfo *si; + + darray_foreach(si, info->interps) + if (si->interp.match == pred && + (si->interp.sym != XKB_KEY_NoSymbol) == needSymbol) + darray_append(collect->sym_interprets, si->interp); +} + +static void +CopyLedMapDefsToKeymap(struct xkb_keymap *keymap, CompatInfo *info) +{ + for (xkb_led_index_t idx = 0; idx < info->num_leds; idx++) { + LedInfo *ledi = &info->leds[idx]; + xkb_led_index_t i; + struct xkb_led *led; + + /* + * Find the LED with the given name, if it was already declared + * in keycodes. + */ + xkb_leds_enumerate(i, led, keymap) + if (led->name == ledi->led.name) + break; + + /* Not previously declared; create it with next free index. */ + if (i >= keymap->num_leds) { + log_dbg(keymap->ctx, + "Indicator name \"%s\" was not declared in the keycodes section; " + "Adding new indicator\n", + xkb_atom_text(keymap->ctx, ledi->led.name)); + + xkb_leds_enumerate(i, led, keymap) + if (led->name == XKB_ATOM_NONE) + break; + + if (i >= keymap->num_leds) { + /* Not place to put it; ignore. */ + if (i >= XKB_MAX_LEDS) { + log_err(keymap->ctx, + "Too many indicators (maximum is %d); " + "Indicator name \"%s\" ignored\n", + XKB_MAX_LEDS, + xkb_atom_text(keymap->ctx, ledi->led.name)); + continue; + } + + /* Add a new LED. */ + led = &keymap->leds[keymap->num_leds++]; + } + } + + *led = ledi->led; + if (led->groups != 0 && led->which_groups == 0) + led->which_groups = XKB_STATE_LAYOUT_EFFECTIVE; + if (led->mods.mods != 0 && led->which_mods == 0) + led->which_mods = XKB_STATE_MODS_EFFECTIVE; + } +} + +static bool +CopyCompatToKeymap(struct xkb_keymap *keymap, CompatInfo *info) +{ + keymap->compat_section_name = strdup_safe(info->name); + XkbEscapeMapName(keymap->compat_section_name); + + keymap->mods = info->mods; + + if (!darray_empty(info->interps)) { + struct collect collect; + darray_init(collect.sym_interprets); + + /* Most specific to least specific. */ + CopyInterps(info, true, MATCH_EXACTLY, &collect); + CopyInterps(info, true, MATCH_ALL, &collect); + CopyInterps(info, true, MATCH_NONE, &collect); + CopyInterps(info, true, MATCH_ANY, &collect); + CopyInterps(info, true, MATCH_ANY_OR_NONE, &collect); + CopyInterps(info, false, MATCH_EXACTLY, &collect); + CopyInterps(info, false, MATCH_ALL, &collect); + CopyInterps(info, false, MATCH_NONE, &collect); + CopyInterps(info, false, MATCH_ANY, &collect); + CopyInterps(info, false, MATCH_ANY_OR_NONE, &collect); + + darray_steal(collect.sym_interprets, + &keymap->sym_interprets, &keymap->num_sym_interprets); + } + + CopyLedMapDefsToKeymap(keymap, info); + + return true; +} + +bool +CompileCompatMap(XkbFile *file, struct xkb_keymap *keymap, + enum merge_mode merge) +{ + CompatInfo info; + ActionsInfo *actions; + + actions = NewActionsInfo(); + if (!actions) + return false; + + InitCompatInfo(&info, keymap->ctx, actions, &keymap->mods); + info.default_interp.merge = merge; + info.default_led.merge = merge; + + HandleCompatMapFile(&info, file, merge); + if (info.errorCount != 0) + goto err_info; + + if (!CopyCompatToKeymap(keymap, &info)) + goto err_info; + + ClearCompatInfo(&info); + FreeActionsInfo(actions); + return true; + +err_info: + ClearCompatInfo(&info); + FreeActionsInfo(actions); + return false; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c new file mode 100644 index 0000000..a85f460 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.c @@ -0,0 +1,680 @@ +/************************************************************ + * Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +#include "xkbcomp-priv.h" +#include "text.h" +#include "expr.h" + +typedef bool (*IdentLookupFunc)(struct xkb_context *ctx, const void *priv, + xkb_atom_t field, enum expr_value_type type, + unsigned int *val_rtrn); + +bool +ExprResolveLhs(struct xkb_context *ctx, const ExprDef *expr, + const char **elem_rtrn, const char **field_rtrn, + ExprDef **index_rtrn) +{ + switch (expr->expr.op) { + case EXPR_IDENT: + *elem_rtrn = NULL; + *field_rtrn = xkb_atom_text(ctx, expr->ident.ident); + *index_rtrn = NULL; + return true; + case EXPR_FIELD_REF: + *elem_rtrn = xkb_atom_text(ctx, expr->field_ref.element); + *field_rtrn = xkb_atom_text(ctx, expr->field_ref.field); + *index_rtrn = NULL; + return true; + case EXPR_ARRAY_REF: + *elem_rtrn = xkb_atom_text(ctx, expr->array_ref.element); + *field_rtrn = xkb_atom_text(ctx, expr->array_ref.field); + *index_rtrn = expr->array_ref.entry; + return true; + default: + break; + } + log_wsgo(ctx, "Unexpected operator %d in ResolveLhs\n", expr->expr.op); + return false; +} + +static bool +SimpleLookup(struct xkb_context *ctx, const void *priv, xkb_atom_t field, + enum expr_value_type type, unsigned int *val_rtrn) +{ + const LookupEntry *entry; + const char *str; + + if (!priv || field == XKB_ATOM_NONE || type != EXPR_TYPE_INT) + return false; + + str = xkb_atom_text(ctx, field); + for (entry = priv; entry && entry->name; entry++) { + if (istreq(str, entry->name)) { + *val_rtrn = entry->value; + return true; + } + } + + return false; +} + +/* Data passed in the *priv argument for LookupModMask. */ +typedef struct { + const struct xkb_mod_set *mods; + enum mod_type mod_type; +} LookupModMaskPriv; + +static bool +LookupModMask(struct xkb_context *ctx, const void *priv, xkb_atom_t field, + enum expr_value_type type, xkb_mod_mask_t *val_rtrn) +{ + const char *str; + xkb_mod_index_t ndx; + const LookupModMaskPriv *arg = priv; + const struct xkb_mod_set *mods = arg->mods; + enum mod_type mod_type = arg->mod_type; + + if (type != EXPR_TYPE_INT) + return false; + + str = xkb_atom_text(ctx, field); + + if (istreq(str, "all")) { + *val_rtrn = MOD_REAL_MASK_ALL; + return true; + } + + if (istreq(str, "none")) { + *val_rtrn = 0; + return true; + } + + ndx = XkbModNameToIndex(mods, field, mod_type); + if (ndx == XKB_MOD_INVALID) + return false; + + *val_rtrn = (1u << ndx); + return true; +} + +bool +ExprResolveBoolean(struct xkb_context *ctx, const ExprDef *expr, + bool *set_rtrn) +{ + bool ok = false; + const char *ident; + + switch (expr->expr.op) { + case EXPR_VALUE: + if (expr->expr.value_type != EXPR_TYPE_BOOLEAN) { + log_err(ctx, + "Found constant of type %s where boolean was expected\n", + expr_value_type_to_string(expr->expr.value_type)); + return false; + } + *set_rtrn = expr->boolean.set; + return true; + + case EXPR_IDENT: + ident = xkb_atom_text(ctx, expr->ident.ident); + if (ident) { + if (istreq(ident, "true") || + istreq(ident, "yes") || + istreq(ident, "on")) { + *set_rtrn = true; + return true; + } + else if (istreq(ident, "false") || + istreq(ident, "no") || + istreq(ident, "off")) { + *set_rtrn = false; + return true; + } + } + log_err(ctx, "Identifier \"%s\" of type boolean is unknown\n", ident); + return false; + + case EXPR_FIELD_REF: + log_err(ctx, "Default \"%s.%s\" of type boolean is unknown\n", + xkb_atom_text(ctx, expr->field_ref.element), + xkb_atom_text(ctx, expr->field_ref.field)); + return false; + + case EXPR_INVERT: + case EXPR_NOT: + ok = ExprResolveBoolean(ctx, expr, set_rtrn); + if (ok) + *set_rtrn = !*set_rtrn; + return ok; + case EXPR_ADD: + case EXPR_SUBTRACT: + case EXPR_MULTIPLY: + case EXPR_DIVIDE: + case EXPR_ASSIGN: + case EXPR_NEGATE: + case EXPR_UNARY_PLUS: + log_err(ctx, "%s of boolean values not permitted\n", + expr_op_type_to_string(expr->expr.op)); + break; + + default: + log_wsgo(ctx, "Unknown operator %d in ResolveBoolean\n", + expr->expr.op); + break; + } + + return false; +} + +bool +ExprResolveKeyCode(struct xkb_context *ctx, const ExprDef *expr, + xkb_keycode_t *kc) +{ + xkb_keycode_t leftRtrn, rightRtrn; + + switch (expr->expr.op) { + case EXPR_VALUE: + if (expr->expr.value_type != EXPR_TYPE_INT) { + log_err(ctx, + "Found constant of type %s where an int was expected\n", + expr_value_type_to_string(expr->expr.value_type)); + return false; + } + + *kc = (xkb_keycode_t) expr->integer.ival; + return true; + + case EXPR_ADD: + case EXPR_SUBTRACT: + case EXPR_MULTIPLY: + case EXPR_DIVIDE: + if (!ExprResolveKeyCode(ctx, expr->binary.left, &leftRtrn) || + !ExprResolveKeyCode(ctx, expr->binary.right, &rightRtrn)) + return false; + + switch (expr->expr.op) { + case EXPR_ADD: + *kc = leftRtrn + rightRtrn; + break; + case EXPR_SUBTRACT: + *kc = leftRtrn - rightRtrn; + break; + case EXPR_MULTIPLY: + *kc = leftRtrn * rightRtrn; + break; + case EXPR_DIVIDE: + if (rightRtrn == 0) { + log_err(ctx, "Cannot divide by zero: %d / %d\n", + leftRtrn, rightRtrn); + return false; + } + + *kc = leftRtrn / rightRtrn; + break; + default: + break; + } + + return true; + + case EXPR_NEGATE: + if (!ExprResolveKeyCode(ctx, expr->unary.child, &leftRtrn)) + return false; + + *kc = ~leftRtrn; + return true; + + case EXPR_UNARY_PLUS: + return ExprResolveKeyCode(ctx, expr->unary.child, kc); + + default: + log_wsgo(ctx, "Unknown operator %d in ResolveKeyCode\n", + expr->expr.op); + break; + } + + return false; +} + +/** + * This function returns ... something. It's a bit of a guess, really. + * + * If an integer is given in value ctx, it will be returned in ival. + * If an ident or field reference is given, the lookup function (if given) + * will be called. At the moment, only SimpleLookup use this, and they both + * return the results in uval. And don't support field references. + * + * Cool. + */ +static bool +ExprResolveIntegerLookup(struct xkb_context *ctx, const ExprDef *expr, + int *val_rtrn, IdentLookupFunc lookup, + const void *lookupPriv) +{ + bool ok = false; + int l, r; + unsigned u; + ExprDef *left, *right; + + switch (expr->expr.op) { + case EXPR_VALUE: + if (expr->expr.value_type != EXPR_TYPE_INT) { + log_err(ctx, + "Found constant of type %s where an int was expected\n", + expr_value_type_to_string(expr->expr.value_type)); + return false; + } + + *val_rtrn = expr->integer.ival; + return true; + + case EXPR_IDENT: + if (lookup) + ok = lookup(ctx, lookupPriv, expr->ident.ident, EXPR_TYPE_INT, &u); + + if (!ok) + log_err(ctx, "Identifier \"%s\" of type int is unknown\n", + xkb_atom_text(ctx, expr->ident.ident)); + else + *val_rtrn = (int) u; + + return ok; + + case EXPR_FIELD_REF: + log_err(ctx, "Default \"%s.%s\" of type int is unknown\n", + xkb_atom_text(ctx, expr->field_ref.element), + xkb_atom_text(ctx, expr->field_ref.field)); + return false; + + case EXPR_ADD: + case EXPR_SUBTRACT: + case EXPR_MULTIPLY: + case EXPR_DIVIDE: + left = expr->binary.left; + right = expr->binary.right; + if (!ExprResolveIntegerLookup(ctx, left, &l, lookup, lookupPriv) || + !ExprResolveIntegerLookup(ctx, right, &r, lookup, lookupPriv)) + return false; + + switch (expr->expr.op) { + case EXPR_ADD: + *val_rtrn = l + r; + break; + case EXPR_SUBTRACT: + *val_rtrn = l - r; + break; + case EXPR_MULTIPLY: + *val_rtrn = l * r; + break; + case EXPR_DIVIDE: + if (r == 0) { + log_err(ctx, "Cannot divide by zero: %d / %d\n", l, r); + return false; + } + *val_rtrn = l / r; + break; + default: + log_err(ctx, "%s of integers not permitted\n", + expr_op_type_to_string(expr->expr.op)); + return false; + } + + return true; + + case EXPR_ASSIGN: + log_wsgo(ctx, "Assignment operator not implemented yet\n"); + break; + + case EXPR_NOT: + log_err(ctx, "The ! operator cannot be applied to an integer\n"); + return false; + + case EXPR_INVERT: + case EXPR_NEGATE: + left = expr->unary.child; + if (!ExprResolveIntegerLookup(ctx, left, &l, lookup, lookupPriv)) + return false; + + *val_rtrn = (expr->expr.op == EXPR_NEGATE ? -l : ~l); + return true; + + case EXPR_UNARY_PLUS: + left = expr->unary.child; + return ExprResolveIntegerLookup(ctx, left, val_rtrn, lookup, + lookupPriv); + + default: + log_wsgo(ctx, "Unknown operator %d in ResolveInteger\n", + expr->expr.op); + break; + } + + return false; +} + +bool +ExprResolveInteger(struct xkb_context *ctx, const ExprDef *expr, + int *val_rtrn) +{ + return ExprResolveIntegerLookup(ctx, expr, val_rtrn, NULL, NULL); +} + +bool +ExprResolveGroup(struct xkb_context *ctx, const ExprDef *expr, + xkb_layout_index_t *group_rtrn) +{ + bool ok; + int result; + + ok = ExprResolveIntegerLookup(ctx, expr, &result, SimpleLookup, + groupNames); + if (!ok) + return false; + + if (result <= 0 || result > XKB_MAX_GROUPS) { + log_err(ctx, "Group index %u is out of range (1..%d)\n", + result, XKB_MAX_GROUPS); + return false; + } + + *group_rtrn = (xkb_layout_index_t) result; + return true; +} + +bool +ExprResolveLevel(struct xkb_context *ctx, const ExprDef *expr, + xkb_level_index_t *level_rtrn) +{ + bool ok; + int result; + + ok = ExprResolveIntegerLookup(ctx, expr, &result, SimpleLookup, + levelNames); + if (!ok) + return false; + + if (result < 1) { + log_err(ctx, "Shift level %d is out of range\n", result); + return false; + } + + /* Level is zero-indexed from now on. */ + *level_rtrn = (unsigned int) (result - 1); + return true; +} + +bool +ExprResolveButton(struct xkb_context *ctx, const ExprDef *expr, int *btn_rtrn) +{ + return ExprResolveIntegerLookup(ctx, expr, btn_rtrn, SimpleLookup, + buttonNames); +} + +bool +ExprResolveString(struct xkb_context *ctx, const ExprDef *expr, + xkb_atom_t *val_rtrn) +{ + switch (expr->expr.op) { + case EXPR_VALUE: + if (expr->expr.value_type != EXPR_TYPE_STRING) { + log_err(ctx, "Found constant of type %s, expected a string\n", + expr_value_type_to_string(expr->expr.value_type)); + return false; + } + + *val_rtrn = expr->string.str; + return true; + + case EXPR_IDENT: + log_err(ctx, "Identifier \"%s\" of type string not found\n", + xkb_atom_text(ctx, expr->ident.ident)); + return false; + + case EXPR_FIELD_REF: + log_err(ctx, "Default \"%s.%s\" of type string not found\n", + xkb_atom_text(ctx, expr->field_ref.element), + xkb_atom_text(ctx, expr->field_ref.field)); + return false; + + case EXPR_ADD: + case EXPR_SUBTRACT: + case EXPR_MULTIPLY: + case EXPR_DIVIDE: + case EXPR_ASSIGN: + case EXPR_NEGATE: + case EXPR_INVERT: + case EXPR_NOT: + case EXPR_UNARY_PLUS: + log_err(ctx, "%s of strings not permitted\n", + expr_op_type_to_string(expr->expr.op)); + return false; + + default: + log_wsgo(ctx, "Unknown operator %d in ResolveString\n", + expr->expr.op); + break; + } + return false; +} + +bool +ExprResolveEnum(struct xkb_context *ctx, const ExprDef *expr, + unsigned int *val_rtrn, const LookupEntry *values) +{ + if (expr->expr.op != EXPR_IDENT) { + log_err(ctx, "Found a %s where an enumerated value was expected\n", + expr_op_type_to_string(expr->expr.op)); + return false; + } + + if (!SimpleLookup(ctx, values, expr->ident.ident, EXPR_TYPE_INT, + val_rtrn)) { + log_err(ctx, "Illegal identifier %s; expected one of:\n", + xkb_atom_text(ctx, expr->ident.ident)); + while (values && values->name) + { + log_err(ctx, "\t%s\n", values->name); + values++; + } + return false; + } + + return true; +} + +static bool +ExprResolveMaskLookup(struct xkb_context *ctx, const ExprDef *expr, + unsigned int *val_rtrn, IdentLookupFunc lookup, + const void *lookupPriv) +{ + bool ok = 0; + unsigned int l, r; + int v; + ExprDef *left, *right; + const char *bogus = NULL; + + switch (expr->expr.op) { + case EXPR_VALUE: + if (expr->expr.value_type != EXPR_TYPE_INT) { + log_err(ctx, + "Found constant of type %s where a mask was expected\n", + expr_value_type_to_string(expr->expr.value_type)); + return false; + } + *val_rtrn = (unsigned int) expr->integer.ival; + return true; + + case EXPR_IDENT: + ok = lookup(ctx, lookupPriv, expr->ident.ident, EXPR_TYPE_INT, + val_rtrn); + if (!ok) + log_err(ctx, "Identifier \"%s\" of type int is unknown\n", + xkb_atom_text(ctx, expr->ident.ident)); + return ok; + + case EXPR_FIELD_REF: + log_err(ctx, "Default \"%s.%s\" of type int is unknown\n", + xkb_atom_text(ctx, expr->field_ref.element), + xkb_atom_text(ctx, expr->field_ref.field)); + return false; + + case EXPR_ARRAY_REF: + bogus = "array reference"; + + case EXPR_ACTION_DECL: + if (bogus == NULL) + bogus = "function use"; + log_err(ctx, + "Unexpected %s in mask expression; Expression Ignored\n", + bogus); + return false; + + case EXPR_ADD: + case EXPR_SUBTRACT: + case EXPR_MULTIPLY: + case EXPR_DIVIDE: + left = expr->binary.left; + right = expr->binary.right; + if (!ExprResolveMaskLookup(ctx, left, &l, lookup, lookupPriv) || + !ExprResolveMaskLookup(ctx, right, &r, lookup, lookupPriv)) + return false; + + switch (expr->expr.op) { + case EXPR_ADD: + *val_rtrn = l | r; + break; + case EXPR_SUBTRACT: + *val_rtrn = l & (~r); + break; + case EXPR_MULTIPLY: + case EXPR_DIVIDE: + log_err(ctx, "Cannot %s masks; Illegal operation ignored\n", + (expr->expr.op == EXPR_DIVIDE ? "divide" : "multiply")); + return false; + default: + break; + } + + return true; + + case EXPR_ASSIGN: + log_wsgo(ctx, "Assignment operator not implemented yet\n"); + break; + + case EXPR_INVERT: + left = expr->unary.child; + if (!ExprResolveIntegerLookup(ctx, left, &v, lookup, lookupPriv)) + return false; + + *val_rtrn = ~v; + return true; + + case EXPR_UNARY_PLUS: + case EXPR_NEGATE: + case EXPR_NOT: + left = expr->unary.child; + if (!ExprResolveIntegerLookup(ctx, left, &v, lookup, lookupPriv)) + log_err(ctx, "The %s operator cannot be used with a mask\n", + (expr->expr.op == EXPR_NEGATE ? "-" : "!")); + return false; + + default: + log_wsgo(ctx, "Unknown operator %d in ResolveMask\n", + expr->expr.op); + break; + } + + return false; +} + +bool +ExprResolveMask(struct xkb_context *ctx, const ExprDef *expr, + unsigned int *mask_rtrn, const LookupEntry *values) +{ + return ExprResolveMaskLookup(ctx, expr, mask_rtrn, SimpleLookup, values); +} + +bool +ExprResolveModMask(struct xkb_context *ctx, const ExprDef *expr, + enum mod_type mod_type, const struct xkb_mod_set *mods, + xkb_mod_mask_t *mask_rtrn) +{ + LookupModMaskPriv priv = { .mods = mods, .mod_type = mod_type }; + return ExprResolveMaskLookup(ctx, expr, mask_rtrn, LookupModMask, &priv); +} + +bool +ExprResolveKeySym(struct xkb_context *ctx, const ExprDef *expr, + xkb_keysym_t *sym_rtrn) +{ + int val; + + if (expr->expr.op == EXPR_IDENT) { + const char *str = xkb_atom_text(ctx, expr->ident.ident); + *sym_rtrn = xkb_keysym_from_name(str, 0); + if (*sym_rtrn != XKB_KEY_NoSymbol) + return true; + } + + if (!ExprResolveInteger(ctx, expr, &val)) + return false; + + if (val < 0 || val >= 10) + return false; + + *sym_rtrn = XKB_KEY_0 + (xkb_keysym_t) val; + return true; +} + +bool +ExprResolveMod(struct xkb_context *ctx, const ExprDef *def, + enum mod_type mod_type, const struct xkb_mod_set *mods, + xkb_mod_index_t *ndx_rtrn) +{ + xkb_mod_index_t ndx; + xkb_atom_t name; + + if (def->expr.op != EXPR_IDENT) { + log_err(ctx, + "Cannot resolve virtual modifier: " + "found %s where a virtual modifier name was expected\n", + expr_op_type_to_string(def->expr.op)); + return false; + } + + name = def->ident.ident; + ndx = XkbModNameToIndex(mods, name, mod_type); + if (ndx == XKB_MOD_INVALID) { + log_err(ctx, + "Cannot resolve virtual modifier: " + "\"%s\" was not previously declared\n", + xkb_atom_text(ctx, name)); + return false; + } + + *ndx_rtrn = ndx; + return true; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.h new file mode 100644 index 0000000..9882b8c --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/expr.h @@ -0,0 +1,85 @@ +/************************************************************ + * Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +#ifndef XKBCOMP_EXPR_H +#define XKBCOMP_EXPR_H + +bool +ExprResolveLhs(struct xkb_context *ctx, const ExprDef *expr, + const char **elem_rtrn, const char **field_rtrn, + ExprDef **index_rtrn); + +bool +ExprResolveModMask(struct xkb_context *ctx, const ExprDef *expr, + enum mod_type mod_type, const struct xkb_mod_set *mods, + xkb_mod_mask_t *mask_rtrn); + +bool +ExprResolveMod(struct xkb_context *ctx, const ExprDef *def, + enum mod_type mod_type, const struct xkb_mod_set *mods, + xkb_mod_index_t *ndx_rtrn); + +bool +ExprResolveBoolean(struct xkb_context *ctx, const ExprDef *expr, + bool *set_rtrn); + +bool +ExprResolveKeyCode(struct xkb_context *ctx, const ExprDef *expr, + xkb_keycode_t *kc); + +bool +ExprResolveInteger(struct xkb_context *ctx, const ExprDef *expr, + int *val_rtrn); + +bool +ExprResolveLevel(struct xkb_context *ctx, const ExprDef *expr, + xkb_level_index_t *level_rtrn); + +bool +ExprResolveGroup(struct xkb_context *ctx, const ExprDef *expr, + xkb_layout_index_t *group_rtrn); + +bool +ExprResolveButton(struct xkb_context *ctx, const ExprDef *expr, + int *btn_rtrn); + +bool +ExprResolveString(struct xkb_context *ctx, const ExprDef *expr, + xkb_atom_t *val_rtrn); + +bool +ExprResolveEnum(struct xkb_context *ctx, const ExprDef *expr, + unsigned int *val_rtrn, const LookupEntry *values); + +bool +ExprResolveMask(struct xkb_context *ctx, const ExprDef *expr, + unsigned int *mask_rtrn, const LookupEntry *values); + +bool +ExprResolveKeySym(struct xkb_context *ctx, const ExprDef *expr, + xkb_keysym_t *sym_rtrn); + +#endif diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c new file mode 100644 index 0000000..dc3f1e4 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.c @@ -0,0 +1,309 @@ +/************************************************************ + * Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +/* + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include +#include +#include + +#include "xkbcomp-priv.h" +#include "include.h" + +/** + * Parse an include statement. Each call returns a file name, along with + * (possibly) a specific map in the file, an explicit group designator, and + * the separator from the next file, used to determine the merge mode. + * + * @param str_inout Input statement, modified in-place. Should be passed in + * repeatedly. If str_inout is NULL, the parsing has completed. + * + * @param file_rtrn Set to the name of the include file to be used. Combined + * with an enum xkb_file_type, this determines which file to look for in the + * include path. + * + * @param map_rtrn Set to the string between '(' and ')', if any. This will + * result in the compilation of a specific named map within the file (e.g. + * xkb_symbols "basic" { ... }) , as opposed to the default map of the file. + * + * @param nextop_rtrn Set to the next operation in the complete statement, + * which is '\0' if it's the last file or '+' or '|' if there are more. + * Separating the files with '+' sets the merge mode to MERGE_MODE_OVERRIDE, + * while '|' sets the merge mode to MERGE_MODE_AUGMENT. + * + * @param extra_data Set to the string after ':', if any. Currently the + * extra data is only used for setting an explicit group index for a symbols + * file. + * + * @return true if parsing was successful, false for an illegal string. + * + * Example: "evdev+aliases(qwerty):2" + * str_inout = "aliases(qwerty):2" + * file_rtrn = "evdev" + * map_rtrn = NULL + * nextop_retrn = "+" + * extra_data = NULL + * + * 2nd run with "aliases(qwerty):2" + * str_inout = NULL + * file_rtrn = "aliases" + * map_rtrn = "qwerty" + * nextop_retrn = "" + * extra_data = "2" + * + */ +bool +ParseIncludeMap(char **str_inout, char **file_rtrn, char **map_rtrn, + char *nextop_rtrn, char **extra_data) +{ + char *tmp, *str, *next; + + str = *str_inout; + + /* + * Find the position in the string where the next file is included, + * if there is more than one left in the statement. + */ + next = strpbrk(str, "|+"); + if (next) { + /* Got more files, this function will be called again. */ + *nextop_rtrn = *next; + /* Separate the string, for strchr etc. to work on this file only. */ + *next++ = '\0'; + } + else { + /* This is the last file in this statement, won't be called again. */ + *nextop_rtrn = '\0'; + next = NULL; + } + + /* + * Search for the explicit group designator, if any. If it's there, + * it goes after the file name and map. + */ + tmp = strchr(str, ':'); + if (tmp != NULL) { + *tmp++ = '\0'; + *extra_data = strdup(tmp); + } + else { + *extra_data = NULL; + } + + /* Look for a map, if any. */ + tmp = strchr(str, '('); + if (tmp == NULL) { + /* No map. */ + *file_rtrn = strdup(str); + *map_rtrn = NULL; + } + else if (str[0] == '(') { + /* Map without file - invalid. */ + free(*extra_data); + return false; + } + else { + /* Got a map; separate the file and the map for the strdup's. */ + *tmp++ = '\0'; + *file_rtrn = strdup(str); + str = tmp; + tmp = strchr(str, ')'); + if (tmp == NULL || tmp[1] != '\0') { + free(*file_rtrn); + free(*extra_data); + return false; + } + *tmp++ = '\0'; + *map_rtrn = strdup(str); + } + + /* Set up the next file for the next call, if any. */ + if (*nextop_rtrn == '\0') + *str_inout = NULL; + else if (*nextop_rtrn == '|' || *nextop_rtrn == '+') + *str_inout = next; + else + return false; + + return true; +} + +static const char *xkb_file_type_include_dirs[_FILE_TYPE_NUM_ENTRIES] = { + [FILE_TYPE_KEYCODES] = "keycodes", + [FILE_TYPE_TYPES] = "types", + [FILE_TYPE_COMPAT] = "compat", + [FILE_TYPE_SYMBOLS] = "symbols", + [FILE_TYPE_GEOMETRY] = "geometry", + [FILE_TYPE_KEYMAP] = "keymap", + [FILE_TYPE_RULES] = "rules", +}; + +/** + * Return the xkb directory based on the type. + */ +static const char * +DirectoryForInclude(enum xkb_file_type type) +{ + if (type >= _FILE_TYPE_NUM_ENTRIES) + return ""; + return xkb_file_type_include_dirs[type]; +} + +FILE * +FindFileInXkbPath(struct xkb_context *ctx, const char *name, + enum xkb_file_type type, char **pathRtrn) +{ + unsigned int i; + FILE *file = NULL; + char *buf = NULL; + const char *typeDir; + size_t buf_size = 0, typeDirLen, name_len; + + typeDir = DirectoryForInclude(type); + typeDirLen = strlen(typeDir); + name_len = strlen(name); + + for (i = 0; i < xkb_context_num_include_paths(ctx); i++) { + size_t new_buf_size = strlen(xkb_context_include_path_get(ctx, i)) + + typeDirLen + name_len + 3; + int ret; + if (new_buf_size > buf_size) { + void *buf_new = realloc(buf, new_buf_size); + if (buf_new) { + buf_size = new_buf_size; + buf = buf_new; + } else { + log_err(ctx, "Cannot realloc for name (%s/%s/%s)\n", + xkb_context_include_path_get(ctx, i), typeDir, name); + continue; + } + } + ret = snprintf(buf, buf_size, "%s/%s/%s", + xkb_context_include_path_get(ctx, i), + typeDir, name); + if (ret < 0) { + log_err(ctx, "snprintf error (%s/%s/%s)\n", + xkb_context_include_path_get(ctx, i), typeDir, name); + continue; + } + + file = fopen(buf, "r"); + if (file) + break; + } + + if (!file) { + log_err(ctx, "Couldn't find file \"%s/%s\" in include paths\n", + typeDir, name); + + if (xkb_context_num_include_paths(ctx) > 0) { + log_err(ctx, "%d include paths searched:\n", + xkb_context_num_include_paths(ctx)); + for (i = 0; i < xkb_context_num_include_paths(ctx); i++) + log_err(ctx, "\t%s\n", + xkb_context_include_path_get(ctx, i)); + } + else { + log_err(ctx, "There are no include paths to search\n"); + } + + if (xkb_context_num_failed_include_paths(ctx) > 0) { + log_err(ctx, "%d include paths could not be added:\n", + xkb_context_num_failed_include_paths(ctx)); + for (i = 0; i < xkb_context_num_failed_include_paths(ctx); i++) + log_err(ctx, "\t%s\n", + xkb_context_failed_include_path_get(ctx, i)); + } + + free(buf); + return NULL; + } + + if (pathRtrn) + *pathRtrn = buf; + else + free(buf); + return file; +} + +XkbFile * +ProcessIncludeFile(struct xkb_context *ctx, IncludeStmt *stmt, + enum xkb_file_type file_type) +{ + FILE *file; + XkbFile *xkb_file; + + file = FindFileInXkbPath(ctx, stmt->file, file_type, NULL); + if (!file) + return false; + + xkb_file = XkbParseFile(ctx, file, stmt->file, stmt->map); + fclose(file); + if (!xkb_file) { + if (stmt->map) + log_err(ctx, "Couldn't process include statement for '%s(%s)'\n", + stmt->file, stmt->map); + else + log_err(ctx, "Couldn't process include statement for '%s'\n", + stmt->file); + return NULL; + } + + if (xkb_file->file_type != file_type) { + log_err(ctx, + "Include file of wrong type (expected %s, got %s); " + "Include file \"%s\" ignored\n", + xkb_file_type_to_string(file_type), + xkb_file_type_to_string(xkb_file->file_type), stmt->file); + FreeXkbFile(xkb_file); + return NULL; + } + + /* FIXME: we have to check recursive includes here (or somewhere) */ + + return xkb_file; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.h new file mode 100644 index 0000000..03e76ed --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/include.h @@ -0,0 +1,42 @@ +/************************************************************ + * Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +#ifndef XKBCOMP_INCLUDE_H +#define XKBCOMP_INCLUDE_H + +bool +ParseIncludeMap(char **str_inout, char **file_rtrn, char **map_rtrn, + char *nextop_rtrn, char **extra_data); + +FILE * +FindFileInXkbPath(struct xkb_context *ctx, const char *name, + enum xkb_file_type type, char **pathRtrn); + +XkbFile * +ProcessIncludeFile(struct xkb_context *ctx, IncludeStmt *stmt, + enum xkb_file_type file_type); + +#endif diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c new file mode 100644 index 0000000..6200cea --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keycodes.c @@ -0,0 +1,668 @@ +/************************************************************ + * Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +#include "xkbcomp-priv.h" +#include "text.h" +#include "expr.h" +#include "include.h" + +typedef struct { + enum merge_mode merge; + + xkb_atom_t alias; + xkb_atom_t real; +} AliasInfo; + +typedef struct { + enum merge_mode merge; + + xkb_atom_t name; +} LedNameInfo; + +typedef struct { + char *name; + int errorCount; + + xkb_keycode_t min_key_code; + xkb_keycode_t max_key_code; + darray(xkb_atom_t) key_names; + LedNameInfo led_names[XKB_MAX_LEDS]; + unsigned int num_led_names; + darray(AliasInfo) aliases; + + struct xkb_context *ctx; +} KeyNamesInfo; + +/***====================================================================***/ + +static void +InitAliasInfo(AliasInfo *info, enum merge_mode merge, + xkb_atom_t alias, xkb_atom_t real) +{ + memset(info, 0, sizeof(*info)); + info->merge = merge; + info->alias = alias; + info->real = real; +} + +static LedNameInfo * +FindLedByName(KeyNamesInfo *info, xkb_atom_t name, + xkb_led_index_t *idx_out) +{ + for (xkb_led_index_t idx = 0; idx < info->num_led_names; idx++) { + LedNameInfo *ledi = &info->led_names[idx]; + if (ledi->name == name) { + *idx_out = idx; + return ledi; + } + } + + return NULL; +} + +static bool +AddLedName(KeyNamesInfo *info, enum merge_mode merge, bool same_file, + LedNameInfo *new, xkb_led_index_t new_idx) +{ + xkb_led_index_t old_idx; + LedNameInfo *old; + const int verbosity = xkb_context_get_log_verbosity(info->ctx); + const bool report = (same_file && verbosity > 0) || verbosity > 9; + const bool replace = (merge == MERGE_REPLACE || merge == MERGE_OVERRIDE); + + /* LED with the same name already exists. */ + old = FindLedByName(info, new->name, &old_idx); + if (old) { + if (old_idx == new_idx) { + log_warn(info->ctx, + "Multiple indicators named \"%s\"; " + "Identical definitions ignored\n", + xkb_atom_text(info->ctx, new->name)); + return true; + } + + if (report) { + xkb_led_index_t use = (replace ? new_idx + 1 : old_idx + 1); + xkb_led_index_t ignore = (replace ? old_idx + 1 : new_idx + 1); + log_warn(info->ctx, + "Multiple indicators named %s; Using %d, ignoring %d\n", + xkb_atom_text(info->ctx, new->name), use, ignore); + } + + if (replace) + *old = *new; + + return true; + } + + if (new_idx >= info->num_led_names) + info->num_led_names = new_idx + 1; + + /* LED with the same index already exists. */ + old = &info->led_names[new_idx]; + if (old->name != XKB_ATOM_NONE) { + if (report) { + const xkb_atom_t use = (replace ? new->name : old->name); + const xkb_atom_t ignore = (replace ? old->name : new->name); + log_warn(info->ctx, "Multiple names for indicator %d; " + "Using %s, ignoring %s\n", new_idx + 1, + xkb_atom_text(info->ctx, use), + xkb_atom_text(info->ctx, ignore)); + } + + if (replace) + *old = *new; + + return true; + } + + *old = *new; + return true; +} + +static void +ClearKeyNamesInfo(KeyNamesInfo *info) +{ + free(info->name); + darray_free(info->key_names); + darray_free(info->aliases); +} + +static void +InitKeyNamesInfo(KeyNamesInfo *info, struct xkb_context *ctx) +{ + memset(info, 0, sizeof(*info)); + info->ctx = ctx; + info->min_key_code = XKB_KEYCODE_INVALID; +#if XKB_KEYCODE_INVALID < XKB_KEYCODE_MAX +#error "Hey, you can't be changing stuff like that." +#endif +} + +static xkb_keycode_t +FindKeyByName(KeyNamesInfo *info, xkb_atom_t name) +{ + xkb_keycode_t i; + + for (i = info->min_key_code; i <= info->max_key_code; i++) + if (darray_item(info->key_names, i) == name) + return i; + + return XKB_KEYCODE_INVALID; +} + +static bool +AddKeyName(KeyNamesInfo *info, xkb_keycode_t kc, xkb_atom_t name, + enum merge_mode merge, bool same_file, bool report) +{ + xkb_atom_t old_name; + xkb_keycode_t old_kc; + const int verbosity = xkb_context_get_log_verbosity(info->ctx); + + report = report && ((same_file && verbosity > 0) || verbosity > 7); + + if (kc >= darray_size(info->key_names)) + darray_resize0(info->key_names, kc + 1); + + info->min_key_code = MIN(info->min_key_code, kc); + info->max_key_code = MAX(info->max_key_code, kc); + + /* There's already a key with this keycode. */ + old_name = darray_item(info->key_names, kc); + if (old_name != XKB_ATOM_NONE) { + const char *lname = KeyNameText(info->ctx, old_name); + const char *kname = KeyNameText(info->ctx, name); + + if (old_name == name) { + if (report) + log_warn(info->ctx, + "Multiple identical key name definitions; " + "Later occurrences of \"%s = %d\" ignored\n", + lname, kc); + return true; + } + else if (merge == MERGE_AUGMENT) { + if (report) + log_warn(info->ctx, + "Multiple names for keycode %d; " + "Using %s, ignoring %s\n", kc, lname, kname); + return true; + } + else { + if (report) + log_warn(info->ctx, + "Multiple names for keycode %d; " + "Using %s, ignoring %s\n", kc, kname, lname); + darray_item(info->key_names, kc) = XKB_ATOM_NONE; + } + } + + /* There's already a key with this name. */ + old_kc = FindKeyByName(info, name); + if (old_kc != XKB_KEYCODE_INVALID && old_kc != kc) { + const char *kname = KeyNameText(info->ctx, name); + + if (merge == MERGE_OVERRIDE) { + darray_item(info->key_names, old_kc) = XKB_ATOM_NONE; + if (report) + log_warn(info->ctx, + "Key name %s assigned to multiple keys; " + "Using %d, ignoring %d\n", kname, kc, old_kc); + } + else { + if (report) + log_vrb(info->ctx, 3, + "Key name %s assigned to multiple keys; " + "Using %d, ignoring %d\n", kname, old_kc, kc); + return true; + } + } + + darray_item(info->key_names, kc) = name; + return true; +} + +/***====================================================================***/ + +static bool +HandleAliasDef(KeyNamesInfo *info, KeyAliasDef *def, enum merge_mode merge); + +static void +MergeIncludedKeycodes(KeyNamesInfo *into, KeyNamesInfo *from, + enum merge_mode merge) +{ + if (from->errorCount > 0) { + into->errorCount += from->errorCount; + return; + } + + if (into->name == NULL) { + into->name = from->name; + from->name = NULL; + } + + /* Merge key names. */ + if (darray_empty(into->key_names)) { + into->key_names = from->key_names; + darray_init(from->key_names); + into->min_key_code = from->min_key_code; + into->max_key_code = from->max_key_code; + } + else { + if (darray_size(into->key_names) < darray_size(from->key_names)) + darray_resize0(into->key_names, darray_size(from->key_names)); + + for (unsigned i = from->min_key_code; i <= from->max_key_code; i++) { + xkb_atom_t name = darray_item(from->key_names, i); + if (name == XKB_ATOM_NONE) + continue; + + if (!AddKeyName(into, i, name, merge, true, false)) + into->errorCount++; + } + } + + /* Merge key aliases. */ + if (darray_empty(into->aliases)) { + into->aliases = from->aliases; + darray_init(from->aliases); + } + else { + AliasInfo *alias; + + darray_foreach(alias, from->aliases) { + KeyAliasDef def; + + def.merge = (merge == MERGE_DEFAULT ? alias->merge : merge); + def.alias = alias->alias; + def.real = alias->real; + + if (!HandleAliasDef(into, &def, def.merge)) + into->errorCount++; + } + } + + /* Merge LED names. */ + if (into->num_led_names == 0) { + memcpy(into->led_names, from->led_names, + sizeof(*from->led_names) * from->num_led_names); + into->num_led_names = from->num_led_names; + from->num_led_names = 0; + } + else { + for (xkb_led_index_t idx = 0; idx < from->num_led_names; idx++) { + LedNameInfo *ledi = &from->led_names[idx]; + + if (ledi->name == XKB_ATOM_NONE) + continue; + + ledi->merge = (merge == MERGE_DEFAULT ? ledi->merge : merge); + if (!AddLedName(into, ledi->merge, false, ledi, idx)) + into->errorCount++; + } + } +} + +static void +HandleKeycodesFile(KeyNamesInfo *info, XkbFile *file, enum merge_mode merge); + +static bool +HandleIncludeKeycodes(KeyNamesInfo *info, IncludeStmt *include) +{ + KeyNamesInfo included; + + InitKeyNamesInfo(&included, info->ctx); + included.name = include->stmt; + include->stmt = NULL; + + for (IncludeStmt *stmt = include; stmt; stmt = stmt->next_incl) { + KeyNamesInfo next_incl; + XkbFile *file; + + file = ProcessIncludeFile(info->ctx, stmt, FILE_TYPE_KEYCODES); + if (!file) { + info->errorCount += 10; + ClearKeyNamesInfo(&included); + return false; + } + + InitKeyNamesInfo(&next_incl, info->ctx); + + HandleKeycodesFile(&next_incl, file, MERGE_OVERRIDE); + + MergeIncludedKeycodes(&included, &next_incl, stmt->merge); + + ClearKeyNamesInfo(&next_incl); + FreeXkbFile(file); + } + + MergeIncludedKeycodes(info, &included, include->merge); + ClearKeyNamesInfo(&included); + + return (info->errorCount == 0); +} + +static bool +HandleKeycodeDef(KeyNamesInfo *info, KeycodeDef *stmt, enum merge_mode merge) +{ + if (stmt->merge != MERGE_DEFAULT) { + if (stmt->merge == MERGE_REPLACE) + merge = MERGE_OVERRIDE; + else + merge = stmt->merge; + } + + if (stmt->value < 0 || stmt->value > XKB_KEYCODE_MAX) { + log_err(info->ctx, + "Illegal keycode %lld: must be between 0..%u; " + "Key ignored\n", (long long) stmt->value, XKB_KEYCODE_MAX); + return false; + } + + return AddKeyName(info, stmt->value, stmt->name, merge, false, true); +} + +static bool +HandleAliasDef(KeyNamesInfo *info, KeyAliasDef *def, enum merge_mode merge) +{ + AliasInfo *old, new; + + darray_foreach(old, info->aliases) { + if (old->alias == def->alias) { + if (def->real == old->real) { + log_vrb(info->ctx, 1, + "Alias of %s for %s declared more than once; " + "First definition ignored\n", + KeyNameText(info->ctx, def->alias), + KeyNameText(info->ctx, def->real)); + } + else { + xkb_atom_t use, ignore; + + use = (merge == MERGE_AUGMENT ? old->real : def->real); + ignore = (merge == MERGE_AUGMENT ? def->real : old->real); + + log_warn(info->ctx, + "Multiple definitions for alias %s; " + "Using %s, ignoring %s\n", + KeyNameText(info->ctx, old->alias), + KeyNameText(info->ctx, use), + KeyNameText(info->ctx, ignore)); + + old->real = use; + } + + old->merge = merge; + return true; + } + } + + InitAliasInfo(&new, merge, def->alias, def->real); + darray_append(info->aliases, new); + return true; +} + +static bool +HandleKeyNameVar(KeyNamesInfo *info, VarDef *stmt) +{ + const char *elem, *field; + ExprDef *arrayNdx; + + if (!ExprResolveLhs(info->ctx, stmt->name, &elem, &field, &arrayNdx)) + return false; + + if (elem) { + log_err(info->ctx, "Unknown element %s encountered; " + "Default for field %s ignored\n", elem, field); + return false; + } + + if (!istreq(field, "minimum") && !istreq(field, "maximum")) { + log_err(info->ctx, "Unknown field encountered; " + "Assignment to field %s ignored\n", field); + return false; + } + + /* We ignore explicit min/max statements, we always use computed. */ + return true; +} + +static bool +HandleLedNameDef(KeyNamesInfo *info, LedNameDef *def, + enum merge_mode merge) +{ + LedNameInfo ledi; + xkb_atom_t name; + + if (def->ndx < 1 || def->ndx > XKB_MAX_LEDS) { + info->errorCount++; + log_err(info->ctx, + "Illegal indicator index (%d) specified; must be between 1 .. %d; " + "Ignored\n", def->ndx, XKB_MAX_LEDS); + return false; + } + + if (!ExprResolveString(info->ctx, def->name, &name)) { + char buf[20]; + snprintf(buf, sizeof(buf), "%d", def->ndx); + info->errorCount++; + return ReportBadType(info->ctx, "indicator", "name", buf, "string"); + } + + ledi.merge = merge; + ledi.name = name; + return AddLedName(info, merge, true, &ledi, def->ndx - 1); +} + +static void +HandleKeycodesFile(KeyNamesInfo *info, XkbFile *file, enum merge_mode merge) +{ + bool ok; + + free(info->name); + info->name = strdup_safe(file->name); + + for (ParseCommon *stmt = file->defs; stmt; stmt = stmt->next) { + switch (stmt->type) { + case STMT_INCLUDE: + ok = HandleIncludeKeycodes(info, (IncludeStmt *) stmt); + break; + case STMT_KEYCODE: + ok = HandleKeycodeDef(info, (KeycodeDef *) stmt, merge); + break; + case STMT_ALIAS: + ok = HandleAliasDef(info, (KeyAliasDef *) stmt, merge); + break; + case STMT_VAR: + ok = HandleKeyNameVar(info, (VarDef *) stmt); + break; + case STMT_LED_NAME: + ok = HandleLedNameDef(info, (LedNameDef *) stmt, merge); + break; + default: + log_err(info->ctx, + "Keycode files may define key and indicator names only; " + "Ignoring %s\n", stmt_type_to_string(stmt->type)); + ok = false; + break; + } + + if (!ok) + info->errorCount++; + + if (info->errorCount > 10) { + log_err(info->ctx, "Abandoning keycodes file \"%s\"\n", + file->topName); + break; + } + } +} + +/***====================================================================***/ + +static bool +CopyKeyNamesToKeymap(struct xkb_keymap *keymap, KeyNamesInfo *info) +{ + struct xkb_key *keys; + xkb_keycode_t min_key_code, max_key_code, kc; + + min_key_code = info->min_key_code; + max_key_code = info->max_key_code; + /* If the keymap has no keys, let's just use the safest pair we know. */ + if (min_key_code == XKB_KEYCODE_INVALID) { + min_key_code = 8; + max_key_code = 255; + } + + keys = calloc(max_key_code + 1, sizeof(*keys)); + if (!keys) + return false; + + for (kc = min_key_code; kc <= max_key_code; kc++) + keys[kc].keycode = kc; + + for (kc = info->min_key_code; kc <= info->max_key_code; kc++) + keys[kc].name = darray_item(info->key_names, kc); + + keymap->min_key_code = min_key_code; + keymap->max_key_code = max_key_code; + keymap->keys = keys; + return true; +} + +static bool +CopyKeyAliasesToKeymap(struct xkb_keymap *keymap, KeyNamesInfo *info) +{ + AliasInfo *alias; + unsigned i, num_key_aliases; + struct xkb_key_alias *key_aliases; + + /* + * Do some sanity checking on the aliases. We can't do it before + * because keys and their aliases may be added out-of-order. + */ + num_key_aliases = 0; + darray_foreach(alias, info->aliases) { + /* Check that ->real is a key. */ + if (!XkbKeyByName(keymap, alias->real, false)) { + log_vrb(info->ctx, 5, + "Attempt to alias %s to non-existent key %s; Ignored\n", + KeyNameText(info->ctx, alias->alias), + KeyNameText(info->ctx, alias->real)); + alias->real = XKB_ATOM_NONE; + continue; + } + + /* Check that ->alias is not a key. */ + if (XkbKeyByName(keymap, alias->alias, false)) { + log_vrb(info->ctx, 5, + "Attempt to create alias with the name of a real key; " + "Alias \"%s = %s\" ignored\n", + KeyNameText(info->ctx, alias->alias), + KeyNameText(info->ctx, alias->real)); + alias->real = XKB_ATOM_NONE; + continue; + } + + num_key_aliases++; + } + + /* Copy key aliases. */ + key_aliases = NULL; + if (num_key_aliases > 0) { + key_aliases = calloc(num_key_aliases, sizeof(*key_aliases)); + if (!key_aliases) + return false; + } + + i = 0; + darray_foreach(alias, info->aliases) { + if (alias->real != XKB_ATOM_NONE) { + key_aliases[i].alias = alias->alias; + key_aliases[i].real = alias->real; + i++; + } + } + + keymap->num_key_aliases = num_key_aliases; + keymap->key_aliases = key_aliases; + return true; +} + +static bool +CopyLedNamesToKeymap(struct xkb_keymap *keymap, KeyNamesInfo *info) +{ + keymap->num_leds = info->num_led_names; + for (xkb_led_index_t idx = 0; idx < info->num_led_names; idx++) { + LedNameInfo *ledi = &info->led_names[idx]; + + if (ledi->name == XKB_ATOM_NONE) + continue; + + keymap->leds[idx].name = ledi->name; + } + + return true; +} + +static bool +CopyKeyNamesInfoToKeymap(struct xkb_keymap *keymap, KeyNamesInfo *info) +{ + /* This function trashes keymap on error, but that's OK. */ + if (!CopyKeyNamesToKeymap(keymap, info) || + !CopyKeyAliasesToKeymap(keymap, info) || + !CopyLedNamesToKeymap(keymap, info)) + return false; + + keymap->keycodes_section_name = strdup_safe(info->name); + XkbEscapeMapName(keymap->keycodes_section_name); + return true; +} + +/***====================================================================***/ + +bool +CompileKeycodes(XkbFile *file, struct xkb_keymap *keymap, + enum merge_mode merge) +{ + KeyNamesInfo info; + + InitKeyNamesInfo(&info, keymap->ctx); + + HandleKeycodesFile(&info, file, merge); + if (info.errorCount != 0) + goto err_info; + + if (!CopyKeyNamesInfoToKeymap(keymap, &info)) + goto err_info; + + ClearKeyNamesInfo(&info); + return true; + +err_info: + ClearKeyNamesInfo(&info); + return false; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c new file mode 100644 index 0000000..8b9bda9 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap-dump.c @@ -0,0 +1,664 @@ +/************************************************************ + * Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +/* + * Copyright © 2012 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Daniel Stone + */ + +#include "xkbcomp-priv.h" +#include "text.h" + +#define BUF_CHUNK_SIZE 4096 + +struct buf { + char *buf; + size_t size; + size_t alloc; +}; + +static bool +do_realloc(struct buf *buf, size_t at_least) +{ + char *new; + + buf->alloc += BUF_CHUNK_SIZE; + if (at_least >= BUF_CHUNK_SIZE) + buf->alloc += at_least; + + new = realloc(buf->buf, buf->alloc); + if (!new) + return false; + + buf->buf = new; + return true; +} + +ATTR_PRINTF(2, 3) static bool +check_write_buf(struct buf *buf, const char *fmt, ...) +{ + va_list args; + int printed; + size_t available; + + available = buf->alloc - buf->size; + va_start(args, fmt); + printed = vsnprintf(buf->buf + buf->size, available, fmt, args); + va_end(args); + + if (printed < 0) + goto err; + + if ((size_t) printed >= available) + if (!do_realloc(buf, printed)) + goto err; + + /* The buffer has enough space now. */ + + available = buf->alloc - buf->size; + va_start(args, fmt); + printed = vsnprintf(buf->buf + buf->size, available, fmt, args); + va_end(args); + + if (printed < 0 || (size_t) printed >= available) + goto err; + + buf->size += printed; + return true; + +err: + free(buf->buf); + buf->buf = NULL; + return false; +} + +#define write_buf(buf, ...) do { \ + if (!check_write_buf(buf, __VA_ARGS__)) \ + return false; \ +} while (0) + +static bool +write_vmods(struct xkb_keymap *keymap, struct buf *buf) +{ + const struct xkb_mod *mod; + xkb_mod_index_t num_vmods = 0; + + xkb_mods_foreach(mod, &keymap->mods) { + if (mod->type != MOD_VIRT) + continue; + + if (num_vmods == 0) + write_buf(buf, "\tvirtual_modifiers "); + else + write_buf(buf, ","); + write_buf(buf, "%s", xkb_atom_text(keymap->ctx, mod->name)); + num_vmods++; + } + + if (num_vmods > 0) + write_buf(buf, ";\n\n"); + + return true; +} + +static bool +write_keycodes(struct xkb_keymap *keymap, struct buf *buf) +{ + const struct xkb_key *key; + xkb_led_index_t idx; + const struct xkb_led *led; + + if (keymap->keycodes_section_name) + write_buf(buf, "xkb_keycodes \"%s\" {\n", + keymap->keycodes_section_name); + else + write_buf(buf, "xkb_keycodes {\n"); + + /* xkbcomp and X11 really want to see keymaps with a minimum of 8, and + * a maximum of at least 255, else XWayland really starts hating life. + * If this is a problem and people really need strictly bounded keymaps, + * we should probably control this with a flag. */ + write_buf(buf, "\tminimum = %u;\n", min(keymap->min_key_code, 8)); + write_buf(buf, "\tmaximum = %u;\n", max(keymap->max_key_code, 255)); + + xkb_keys_foreach(key, keymap) { + if (key->name == XKB_ATOM_NONE) + continue; + + write_buf(buf, "\t%-20s = %u;\n", + KeyNameText(keymap->ctx, key->name), key->keycode); + } + + xkb_leds_enumerate(idx, led, keymap) + if (led->name != XKB_ATOM_NONE) + write_buf(buf, "\tindicator %u = \"%s\";\n", + idx + 1, xkb_atom_text(keymap->ctx, led->name)); + + + for (unsigned i = 0; i < keymap->num_key_aliases; i++) + write_buf(buf, "\talias %-14s = %s;\n", + KeyNameText(keymap->ctx, keymap->key_aliases[i].alias), + KeyNameText(keymap->ctx, keymap->key_aliases[i].real)); + + write_buf(buf, "};\n\n"); + return true; +} + +static bool +write_types(struct xkb_keymap *keymap, struct buf *buf) +{ + if (keymap->types_section_name) + write_buf(buf, "xkb_types \"%s\" {\n", + keymap->types_section_name); + else + write_buf(buf, "xkb_types {\n"); + + write_vmods(keymap, buf); + + for (unsigned i = 0; i < keymap->num_types; i++) { + const struct xkb_key_type *type = &keymap->types[i]; + + write_buf(buf, "\ttype \"%s\" {\n", + xkb_atom_text(keymap->ctx, type->name)); + + write_buf(buf, "\t\tmodifiers= %s;\n", + ModMaskText(keymap->ctx, &keymap->mods, type->mods.mods)); + + for (unsigned j = 0; j < type->num_entries; j++) { + const char *str; + const struct xkb_key_type_entry *entry = &type->entries[j]; + + /* + * Printing level 1 entries is redundant, it's the default, + * unless there's preserve info. + */ + if (entry->level == 0 && entry->preserve.mods == 0) + continue; + + str = ModMaskText(keymap->ctx, &keymap->mods, entry->mods.mods); + write_buf(buf, "\t\tmap[%s]= Level%u;\n", + str, entry->level + 1); + + if (entry->preserve.mods) + write_buf(buf, "\t\tpreserve[%s]= %s;\n", + str, ModMaskText(keymap->ctx, &keymap->mods, + entry->preserve.mods)); + } + + for (xkb_level_index_t n = 0; n < type->num_levels; n++) + if (type->level_names[n]) + write_buf(buf, "\t\tlevel_name[Level%u]= \"%s\";\n", n + 1, + xkb_atom_text(keymap->ctx, type->level_names[n])); + + write_buf(buf, "\t};\n"); + } + + write_buf(buf, "};\n\n"); + return true; +} + +static bool +write_led_map(struct xkb_keymap *keymap, struct buf *buf, + const struct xkb_led *led) +{ + write_buf(buf, "\tindicator \"%s\" {\n", + xkb_atom_text(keymap->ctx, led->name)); + + if (led->which_groups) { + if (led->which_groups != XKB_STATE_LAYOUT_EFFECTIVE) { + write_buf(buf, "\t\twhichGroupState= %s;\n", + LedStateMaskText(keymap->ctx, led->which_groups)); + } + write_buf(buf, "\t\tgroups= 0x%02x;\n", + led->groups); + } + + if (led->which_mods) { + if (led->which_mods != XKB_STATE_MODS_EFFECTIVE) { + write_buf(buf, "\t\twhichModState= %s;\n", + LedStateMaskText(keymap->ctx, led->which_mods)); + } + write_buf(buf, "\t\tmodifiers= %s;\n", + ModMaskText(keymap->ctx, &keymap->mods, led->mods.mods)); + } + + if (led->ctrls) { + write_buf(buf, "\t\tcontrols= %s;\n", + ControlMaskText(keymap->ctx, led->ctrls)); + } + + write_buf(buf, "\t};\n"); + return true; +} + +static const char * +affect_lock_text(enum xkb_action_flags flags) +{ + switch (flags & (ACTION_LOCK_NO_LOCK | ACTION_LOCK_NO_UNLOCK)) { + case ACTION_LOCK_NO_UNLOCK: + return ",affect=lock"; + case ACTION_LOCK_NO_LOCK: + return ",affect=unlock"; + case ACTION_LOCK_NO_LOCK | ACTION_LOCK_NO_UNLOCK: + return ",affect=neither"; + } + return ""; +} + +static bool +write_action(struct xkb_keymap *keymap, struct buf *buf, + const union xkb_action *action, + const char *prefix, const char *suffix) +{ + const char *type; + const char *args = NULL; + + if (!prefix) + prefix = ""; + if (!suffix) + suffix = ""; + + type = ActionTypeText(action->type); + + switch (action->type) { + case ACTION_TYPE_MOD_LOCK: + case ACTION_TYPE_MOD_SET: + case ACTION_TYPE_MOD_LATCH: + if (action->mods.flags & ACTION_MODS_LOOKUP_MODMAP) + args = "modMapMods"; + else + args = ModMaskText(keymap->ctx, &keymap->mods, + action->mods.mods.mods); + write_buf(buf, "%s%s(modifiers=%s%s%s%s)%s", prefix, type, args, + (action->type != ACTION_TYPE_MOD_LOCK && (action->mods.flags & ACTION_LOCK_CLEAR)) ? ",clearLocks" : "", + (action->type != ACTION_TYPE_MOD_LOCK && (action->mods.flags & ACTION_LATCH_TO_LOCK)) ? ",latchToLock" : "", + (action->type == ACTION_TYPE_MOD_LOCK) ? affect_lock_text(action->mods.flags) : "", + suffix); + break; + + case ACTION_TYPE_GROUP_SET: + case ACTION_TYPE_GROUP_LATCH: + case ACTION_TYPE_GROUP_LOCK: + write_buf(buf, "%s%s(group=%s%d%s%s)%s", prefix, type, + (!(action->group.flags & ACTION_ABSOLUTE_SWITCH) && action->group.group > 0) ? "+" : "", + (action->group.flags & ACTION_ABSOLUTE_SWITCH) ? action->group.group + 1 : action->group.group, + (action->type != ACTION_TYPE_GROUP_LOCK && (action->group.flags & ACTION_LOCK_CLEAR)) ? ",clearLocks" : "", + (action->type != ACTION_TYPE_GROUP_LOCK && (action->group.flags & ACTION_LATCH_TO_LOCK)) ? ",latchToLock" : "", + suffix); + break; + + case ACTION_TYPE_TERMINATE: + write_buf(buf, "%s%s()%s", prefix, type, suffix); + break; + + case ACTION_TYPE_PTR_MOVE: + write_buf(buf, "%s%s(x=%s%d,y=%s%d%s)%s", prefix, type, + (!(action->ptr.flags & ACTION_ABSOLUTE_X) && action->ptr.x >= 0) ? "+" : "", + action->ptr.x, + (!(action->ptr.flags & ACTION_ABSOLUTE_Y) && action->ptr.y >= 0) ? "+" : "", + action->ptr.y, + (action->ptr.flags & ACTION_ACCEL) ? "" : ",!accel", + suffix); + break; + + case ACTION_TYPE_PTR_LOCK: + args = affect_lock_text(action->btn.flags); + /* fallthrough */ + case ACTION_TYPE_PTR_BUTTON: + write_buf(buf, "%s%s(button=", prefix, type); + if (action->btn.button > 0 && action->btn.button <= 5) + write_buf(buf, "%d", action->btn.button); + else + write_buf(buf, "default"); + if (action->btn.count) + write_buf(buf, ",count=%d", action->btn.count); + if (args) + write_buf(buf, "%s", args); + write_buf(buf, ")%s", suffix); + break; + + case ACTION_TYPE_PTR_DEFAULT: + write_buf(buf, "%s%s(", prefix, type); + write_buf(buf, "affect=button,button=%s%d", + (!(action->dflt.flags & ACTION_ABSOLUTE_SWITCH) && action->dflt.value >= 0) ? "+" : "", + action->dflt.value); + write_buf(buf, ")%s", suffix); + break; + + case ACTION_TYPE_SWITCH_VT: + write_buf(buf, "%s%s(screen=%s%d,%ssame)%s", prefix, type, + (!(action->screen.flags & ACTION_ABSOLUTE_SWITCH) && action->screen.screen >= 0) ? "+" : "", + action->screen.screen, + (action->screen.flags & ACTION_SAME_SCREEN) ? "" : "!", + suffix); + break; + + case ACTION_TYPE_CTRL_SET: + case ACTION_TYPE_CTRL_LOCK: + write_buf(buf, "%s%s(controls=%s%s)%s", prefix, type, + ControlMaskText(keymap->ctx, action->ctrls.ctrls), + (action->type == ACTION_TYPE_CTRL_LOCK) ? affect_lock_text(action->ctrls.flags) : "", + suffix); + break; + + case ACTION_TYPE_NONE: + write_buf(buf, "%sNoAction()%s", prefix, suffix); + break; + + default: + write_buf(buf, + "%s%s(type=0x%02x,data[0]=0x%02x,data[1]=0x%02x,data[2]=0x%02x,data[3]=0x%02x,data[4]=0x%02x,data[5]=0x%02x,data[6]=0x%02x)%s", + prefix, type, action->type, action->priv.data[0], + action->priv.data[1], action->priv.data[2], + action->priv.data[3], action->priv.data[4], + action->priv.data[5], action->priv.data[6], + suffix); + break; + } + + return true; +} + +static bool +write_compat(struct xkb_keymap *keymap, struct buf *buf) +{ + const struct xkb_led *led; + + if (keymap->compat_section_name) + write_buf(buf, "xkb_compatibility \"%s\" {\n", + keymap->compat_section_name); + else + write_buf(buf, "xkb_compatibility {\n"); + + write_vmods(keymap, buf); + + write_buf(buf, "\tinterpret.useModMapMods= AnyLevel;\n"); + write_buf(buf, "\tinterpret.repeat= False;\n"); + + for (unsigned i = 0; i < keymap->num_sym_interprets; i++) { + const struct xkb_sym_interpret *si = &keymap->sym_interprets[i]; + + write_buf(buf, "\tinterpret %s+%s(%s) {\n", + si->sym ? KeysymText(keymap->ctx, si->sym) : "Any", + SIMatchText(si->match), + ModMaskText(keymap->ctx, &keymap->mods, si->mods)); + + if (si->virtual_mod != XKB_MOD_INVALID) + write_buf(buf, "\t\tvirtualModifier= %s;\n", + ModIndexText(keymap->ctx, &keymap->mods, + si->virtual_mod)); + + if (si->level_one_only) + write_buf(buf, "\t\tuseModMapMods=level1;\n"); + + if (si->repeat) + write_buf(buf, "\t\trepeat= True;\n"); + + write_action(keymap, buf, &si->action, "\t\taction= ", ";\n"); + write_buf(buf, "\t};\n"); + } + + xkb_leds_foreach(led, keymap) + if (led->which_groups || led->groups || led->which_mods || + led->mods.mods || led->ctrls) + write_led_map(keymap, buf, led); + + write_buf(buf, "};\n\n"); + + return true; +} + +static bool +write_keysyms(struct xkb_keymap *keymap, struct buf *buf, + const struct xkb_key *key, xkb_layout_index_t group) +{ + for (xkb_level_index_t level = 0; level < XkbKeyNumLevels(key, group); + level++) { + const xkb_keysym_t *syms; + int num_syms; + + if (level != 0) + write_buf(buf, ", "); + + num_syms = xkb_keymap_key_get_syms_by_level(keymap, key->keycode, + group, level, &syms); + if (num_syms == 0) { + write_buf(buf, "%15s", "NoSymbol"); + } + else if (num_syms == 1) { + write_buf(buf, "%15s", KeysymText(keymap->ctx, syms[0])); + } + else { + write_buf(buf, "{ "); + for (int s = 0; s < num_syms; s++) { + if (s != 0) + write_buf(buf, ", "); + write_buf(buf, "%s", KeysymText(keymap->ctx, syms[s])); + } + write_buf(buf, " }"); + } + } + + return true; +} + +static bool +write_key(struct xkb_keymap *keymap, struct buf *buf, + const struct xkb_key *key) +{ + xkb_layout_index_t group; + bool simple = true; + bool explicit_types = false; + bool multi_type = false; + bool show_actions; + + write_buf(buf, "\tkey %-20s {", KeyNameText(keymap->ctx, key->name)); + + for (group = 0; group < key->num_groups; group++) { + if (key->groups[group].explicit_type) + explicit_types = true; + + if (group != 0 && key->groups[group].type != key->groups[0].type) + multi_type = true; + } + + if (explicit_types) { + const struct xkb_key_type *type; + simple = false; + + if (multi_type) { + for (group = 0; group < key->num_groups; group++) { + if (!key->groups[group].explicit_type) + continue; + + type = key->groups[group].type; + write_buf(buf, "\n\t\ttype[group%u]= \"%s\",", + group + 1, + xkb_atom_text(keymap->ctx, type->name)); + } + } + else { + type = key->groups[0].type; + write_buf(buf, "\n\t\ttype= \"%s\",", + xkb_atom_text(keymap->ctx, type->name)); + } + } + + if (key->explicit & EXPLICIT_REPEAT) { + if (key->repeats) + write_buf(buf, "\n\t\trepeat= Yes,"); + else + write_buf(buf, "\n\t\trepeat= No,"); + simple = false; + } + + if (key->vmodmap && (key->explicit & EXPLICIT_VMODMAP)) + write_buf(buf, "\n\t\tvirtualMods= %s,", + ModMaskText(keymap->ctx, &keymap->mods, key->vmodmap)); + + switch (key->out_of_range_group_action) { + case RANGE_SATURATE: + write_buf(buf, "\n\t\tgroupsClamp,"); + break; + + case RANGE_REDIRECT: + write_buf(buf, "\n\t\tgroupsRedirect= Group%u,", + key->out_of_range_group_number + 1); + break; + + default: + break; + } + + show_actions = (key->explicit & EXPLICIT_INTERP); + + if (key->num_groups > 1 || show_actions) + simple = false; + + if (simple) { + write_buf(buf, "\t[ "); + if (!write_keysyms(keymap, buf, key, 0)) + return false; + write_buf(buf, " ] };\n"); + } + else { + xkb_level_index_t level; + + for (group = 0; group < key->num_groups; group++) { + if (group != 0) + write_buf(buf, ","); + write_buf(buf, "\n\t\tsymbols[Group%u]= [ ", group + 1); + if (!write_keysyms(keymap, buf, key, group)) + return false; + write_buf(buf, " ]"); + if (show_actions) { + write_buf(buf, ",\n\t\tactions[Group%u]= [ ", group + 1); + for (level = 0; level < XkbKeyNumLevels(key, group); level++) { + if (level != 0) + write_buf(buf, ", "); + write_action(keymap, buf, + &key->groups[group].levels[level].action, + NULL, NULL); + } + write_buf(buf, " ]"); + } + } + write_buf(buf, "\n\t};\n"); + } + + return true; +} + +static bool +write_symbols(struct xkb_keymap *keymap, struct buf *buf) +{ + const struct xkb_key *key; + xkb_layout_index_t group; + xkb_mod_index_t i; + const struct xkb_mod *mod; + + if (keymap->symbols_section_name) + write_buf(buf, "xkb_symbols \"%s\" {\n", + keymap->symbols_section_name); + else + write_buf(buf, "xkb_symbols {\n"); + + for (group = 0; group < keymap->num_group_names; group++) + if (keymap->group_names[group]) + write_buf(buf, + "\tname[group%u]=\"%s\";\n", group + 1, + xkb_atom_text(keymap->ctx, keymap->group_names[group])); + if (group > 0) + write_buf(buf, "\n"); + + xkb_keys_foreach(key, keymap) + if (key->num_groups > 0) + write_key(keymap, buf, key); + + xkb_mods_enumerate(i, mod, &keymap->mods) { + bool had_any = false; + xkb_keys_foreach(key, keymap) { + if (key->modmap & (1u << i)) { + if (!had_any) + write_buf(buf, "\tmodifier_map %s { ", + xkb_atom_text(keymap->ctx, mod->name)); + write_buf(buf, "%s%s", + had_any ? ", " : "", + KeyNameText(keymap->ctx, key->name)); + had_any = true; + } + } + if (had_any) + write_buf(buf, " };\n"); + } + + write_buf(buf, "};\n\n"); + return true; +} + +static bool +write_keymap(struct xkb_keymap *keymap, struct buf *buf) +{ + return (check_write_buf(buf, "xkb_keymap {\n") && + write_keycodes(keymap, buf) && + write_types(keymap, buf) && + write_compat(keymap, buf) && + write_symbols(keymap, buf) && + check_write_buf(buf, "};\n")); +} + +char * +text_v1_keymap_get_as_string(struct xkb_keymap *keymap) +{ + struct buf buf = { NULL, 0, 0 }; + + if (!write_keymap(keymap, &buf)) { + free(buf.buf); + return NULL; + } + + return buf.buf; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c new file mode 100644 index 0000000..8b4693c --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keymap.c @@ -0,0 +1,301 @@ +/* + * Copyright © 2009 Dan Nicholson + * Copyright © 2012 Intel Corporation + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Dan Nicholson + * Daniel Stone + * Ran Benita + */ + +#include "xkbcomp-priv.h" + +static void +ComputeEffectiveMask(struct xkb_keymap *keymap, struct xkb_mods *mods) +{ + mods->mask = mod_mask_get_effective(keymap, mods->mods); +} + +static void +UpdateActionMods(struct xkb_keymap *keymap, union xkb_action *act, + xkb_mod_mask_t modmap) +{ + switch (act->type) { + case ACTION_TYPE_MOD_SET: + case ACTION_TYPE_MOD_LATCH: + case ACTION_TYPE_MOD_LOCK: + if (act->mods.flags & ACTION_MODS_LOOKUP_MODMAP) + act->mods.mods.mods = modmap; + ComputeEffectiveMask(keymap, &act->mods.mods); + break; + default: + break; + } +} + +static const struct xkb_sym_interpret default_interpret = { + .sym = XKB_KEY_NoSymbol, + .repeat = true, + .match = MATCH_ANY_OR_NONE, + .mods = 0, + .virtual_mod = XKB_MOD_INVALID, + .action = { .type = ACTION_TYPE_NONE }, +}; + +/** + * Find an interpretation which applies to this particular level, either by + * finding an exact match for the symbol and modifier combination, or a + * generic XKB_KEY_NoSymbol match. + */ +static const struct xkb_sym_interpret * +FindInterpForKey(struct xkb_keymap *keymap, const struct xkb_key *key, + xkb_layout_index_t group, xkb_level_index_t level) +{ + const xkb_keysym_t *syms; + int num_syms; + + num_syms = xkb_keymap_key_get_syms_by_level(keymap, key->keycode, group, + level, &syms); + if (num_syms == 0) + return NULL; + + /* + * There may be multiple matchings interprets; we should always return + * the most specific. Here we rely on compat.c to set up the + * sym_interprets array from the most specific to the least specific, + * such that when we find a match we return immediately. + */ + for (unsigned i = 0; i < keymap->num_sym_interprets; i++) { + const struct xkb_sym_interpret *interp = &keymap->sym_interprets[i]; + + xkb_mod_mask_t mods; + bool found = false; + + if ((num_syms > 1 || interp->sym != syms[0]) && + interp->sym != XKB_KEY_NoSymbol) + continue; + + if (interp->level_one_only && level != 0) + mods = 0; + else + mods = key->modmap; + + switch (interp->match) { + case MATCH_NONE: + found = !(interp->mods & mods); + break; + case MATCH_ANY_OR_NONE: + found = (!mods || (interp->mods & mods)); + break; + case MATCH_ANY: + found = (interp->mods & mods); + break; + case MATCH_ALL: + found = ((interp->mods & mods) == interp->mods); + break; + case MATCH_EXACTLY: + found = (interp->mods == mods); + break; + } + + if (found) + return interp; + } + + return &default_interpret; +} + +static bool +ApplyInterpsToKey(struct xkb_keymap *keymap, struct xkb_key *key) +{ + xkb_mod_mask_t vmodmap = 0; + xkb_layout_index_t group; + xkb_level_index_t level; + + /* If we've been told not to bind interps to this key, then don't. */ + if (key->explicit & EXPLICIT_INTERP) + return true; + + for (group = 0; group < key->num_groups; group++) { + for (level = 0; level < XkbKeyNumLevels(key, group); level++) { + const struct xkb_sym_interpret *interp; + + interp = FindInterpForKey(keymap, key, group, level); + if (!interp) + continue; + + /* Infer default key behaviours from the base level. */ + if (group == 0 && level == 0) + if (!(key->explicit & EXPLICIT_REPEAT) && interp->repeat) + key->repeats = true; + + if ((group == 0 && level == 0) || !interp->level_one_only) + if (interp->virtual_mod != XKB_MOD_INVALID) + vmodmap |= (1u << interp->virtual_mod); + + if (interp->action.type != ACTION_TYPE_NONE) + key->groups[group].levels[level].action = interp->action; + } + } + + if (!(key->explicit & EXPLICIT_VMODMAP)) + key->vmodmap = vmodmap; + + return true; +} + +/** + * This collects a bunch of disparate functions which was done in the server + * at various points that really should've been done within xkbcomp. Turns out + * your actions and types are a lot more useful when any of your modifiers + * other than Shift actually do something ... + */ +static bool +UpdateDerivedKeymapFields(struct xkb_keymap *keymap) +{ + struct xkb_key *key; + struct xkb_mod *mod; + struct xkb_led *led; + unsigned int i, j; + + /* Find all the interprets for the key and bind them to actions, + * which will also update the vmodmap. */ + xkb_keys_foreach(key, keymap) + if (!ApplyInterpsToKey(keymap, key)) + return false; + + /* Update keymap->mods, the virtual -> real mod mapping. */ + xkb_keys_foreach(key, keymap) + xkb_mods_enumerate(i, mod, &keymap->mods) + if (key->vmodmap & (1u << i)) + mod->mapping |= key->modmap; + + /* Now update the level masks for all the types to reflect the vmods. */ + for (i = 0; i < keymap->num_types; i++) { + ComputeEffectiveMask(keymap, &keymap->types[i].mods); + + for (j = 0; j < keymap->types[i].num_entries; j++) { + ComputeEffectiveMask(keymap, &keymap->types[i].entries[j].mods); + ComputeEffectiveMask(keymap, &keymap->types[i].entries[j].preserve); + } + } + + /* Update action modifiers. */ + xkb_keys_foreach(key, keymap) + for (i = 0; i < key->num_groups; i++) + for (j = 0; j < XkbKeyNumLevels(key, i); j++) + UpdateActionMods(keymap, &key->groups[i].levels[j].action, + key->modmap); + + /* Update vmod -> led maps. */ + xkb_leds_foreach(led, keymap) + ComputeEffectiveMask(keymap, &led->mods); + + /* Find maximum number of groups out of all keys in the keymap. */ + xkb_keys_foreach(key, keymap) + keymap->num_groups = MAX(keymap->num_groups, key->num_groups); + + return true; +} + +typedef bool (*compile_file_fn)(XkbFile *file, + struct xkb_keymap *keymap, + enum merge_mode merge); + +static const compile_file_fn compile_file_fns[LAST_KEYMAP_FILE_TYPE + 1] = { + [FILE_TYPE_KEYCODES] = CompileKeycodes, + [FILE_TYPE_TYPES] = CompileKeyTypes, + [FILE_TYPE_COMPAT] = CompileCompatMap, + [FILE_TYPE_SYMBOLS] = CompileSymbols, +}; + +bool +CompileKeymap(XkbFile *file, struct xkb_keymap *keymap, enum merge_mode merge) +{ + bool ok; + const char *main_name; + XkbFile *files[LAST_KEYMAP_FILE_TYPE + 1] = { NULL }; + enum xkb_file_type type; + struct xkb_context *ctx = keymap->ctx; + + main_name = file->name ? file->name : "(unnamed)"; + + /* Collect section files and check for duplicates. */ + for (file = (XkbFile *) file->defs; file; + file = (XkbFile *) file->common.next) { + if (file->file_type < FIRST_KEYMAP_FILE_TYPE || + file->file_type > LAST_KEYMAP_FILE_TYPE) { + log_err(ctx, "Cannot define %s in a keymap file\n", + xkb_file_type_to_string(file->file_type)); + continue; + } + + if (files[file->file_type]) { + log_err(ctx, + "More than one %s section in keymap file; " + "All sections after the first ignored\n", + xkb_file_type_to_string(file->file_type)); + continue; + } + + if (!file->topName) { + free(file->topName); + file->topName = strdup(main_name); + } + + files[file->file_type] = file; + } + + /* + * Check that all required section were provided. + * Report everything before failing. + */ + ok = true; + for (type = FIRST_KEYMAP_FILE_TYPE; + type <= LAST_KEYMAP_FILE_TYPE; + type++) { + if (files[type] == NULL) { + log_err(ctx, "Required section %s missing from keymap\n", + xkb_file_type_to_string(type)); + ok = false; + } + } + if (!ok) + return false; + + /* Compile sections. */ + for (type = FIRST_KEYMAP_FILE_TYPE; + type <= LAST_KEYMAP_FILE_TYPE; + type++) { + log_dbg(ctx, "Compiling %s \"%s\"\n", + xkb_file_type_to_string(type), files[type]->topName); + + ok = compile_file_fns[type](files[type], keymap, merge); + if (!ok) { + log_err(ctx, "Failed to compile %s\n", + xkb_file_type_to_string(type)); + return false; + } + } + + return UpdateDerivedKeymapFields(keymap); +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c new file mode 100644 index 0000000..abab7fe --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.c @@ -0,0 +1,348 @@ +/* ANSI-C code produced by gperf version 3.0.4 */ +/* Command-line: gperf */ +/* Computed positions: -k'1-2,5' */ + +#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ + && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ + && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ + && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ + && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ + && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ + && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ + && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ + && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ + && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ + && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ + && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ + && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ + && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ + && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ + && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ + && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ + && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ + && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ + && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ + && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ + && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ + && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) +/* The character set is not based on ISO-646. */ +#error "gperf generated tables don't work with this execution character set. Please report a bug to ." +#endif + + +#include "xkbcomp-priv.h" +#include "parser-priv.h" + +static unsigned int +keyword_gperf_hash(const char *str, unsigned int len); + +static const struct keyword_tok * +keyword_gperf_lookup(const char *str, unsigned int len); +struct keyword_tok { int name; int tok; }; +#include +/* maximum key range = 70, duplicates = 0 */ + +#ifndef GPERF_DOWNCASE +#define GPERF_DOWNCASE 1 +static unsigned char gperf_downcase[256] = + { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255 + }; +#endif + +#ifndef GPERF_CASE_STRCMP +#define GPERF_CASE_STRCMP 1 +static int +gperf_case_strcmp (register const char *s1, register const char *s2) +{ + for (;;) + { + unsigned char c1 = gperf_downcase[(unsigned char)*s1++]; + unsigned char c2 = gperf_downcase[(unsigned char)*s2++]; + if (c1 != 0 && c1 == c2) + continue; + return (int)c1 - (int)c2; + } +} +#endif + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +static unsigned int +keyword_gperf_hash (register const char *str, register unsigned int len) +{ + static const unsigned char asso_values[] = + { + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 0, 73, 5, 36, 0, + 10, 1, 15, 15, 73, 0, 10, 20, 35, 20, + 50, 73, 10, 10, 5, 0, 15, 73, 0, 15, + 73, 73, 73, 73, 73, 73, 73, 0, 73, 5, + 36, 0, 10, 1, 15, 15, 73, 0, 10, 20, + 35, 20, 50, 73, 10, 10, 5, 0, 15, 73, + 0, 15, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73 + }; + register int hval = len; + + switch (hval) + { + default: + hval += asso_values[(unsigned char)str[4]]; + /*FALLTHROUGH*/ + case 4: + case 3: + case 2: + hval += asso_values[(unsigned char)str[1]]; + /*FALLTHROUGH*/ + case 1: + hval += asso_values[(unsigned char)str[0]]; + break; + } + return hval; +} + +struct stringpool_t + { + char stringpool_str3[sizeof("key")]; + char stringpool_str4[sizeof("keys")]; + char stringpool_str7[sizeof("augment")]; + char stringpool_str9[sizeof("text")]; + char stringpool_str10[sizeof("xkb_keymap")]; + char stringpool_str11[sizeof("keypad_keys")]; + char stringpool_str12[sizeof("xkb_keycodes")]; + char stringpool_str13[sizeof("xkb_geometry")]; + char stringpool_str14[sizeof("xkb_types")]; + char stringpool_str15[sizeof("xkb_compat")]; + char stringpool_str17[sizeof("replace")]; + char stringpool_str19[sizeof("xkb_compat_map")]; + char stringpool_str20[sizeof("xkb_layout")]; + char stringpool_str21[sizeof("xkb_symbols")]; + char stringpool_str22[sizeof("xkb_compatibility")]; + char stringpool_str23[sizeof("xkb_semantics")]; + char stringpool_str24[sizeof("type")]; + char stringpool_str25[sizeof("alias")]; + char stringpool_str26[sizeof("xkb_compatibility_map")]; + char stringpool_str27[sizeof("alphanumeric_keys")]; + char stringpool_str28[sizeof("function_keys")]; + char stringpool_str29[sizeof("alternate")]; + char stringpool_str30[sizeof("shape")]; + char stringpool_str31[sizeof("action")]; + char stringpool_str32[sizeof("section")]; + char stringpool_str33[sizeof("row")]; + char stringpool_str34[sizeof("logo")]; + char stringpool_str35[sizeof("alternate_group")]; + char stringpool_str36[sizeof("hidden")]; + char stringpool_str37[sizeof("virtual")]; + char stringpool_str42[sizeof("outline")]; + char stringpool_str43[sizeof("default")]; + char stringpool_str46[sizeof("modmap")]; + char stringpool_str47[sizeof("virtual_modifiers")]; + char stringpool_str52[sizeof("overlay")]; + char stringpool_str53[sizeof("override")]; + char stringpool_str57[sizeof("include")]; + char stringpool_str62[sizeof("modifier_map")]; + char stringpool_str63[sizeof("modifier_keys")]; + char stringpool_str64[sizeof("indicator")]; + char stringpool_str66[sizeof("group")]; + char stringpool_str67[sizeof("mod_map")]; + char stringpool_str69[sizeof("interpret")]; + char stringpool_str71[sizeof("solid")]; + char stringpool_str72[sizeof("partial")]; + }; +static const struct stringpool_t stringpool_contents = + { + "key", + "keys", + "augment", + "text", + "xkb_keymap", + "keypad_keys", + "xkb_keycodes", + "xkb_geometry", + "xkb_types", + "xkb_compat", + "replace", + "xkb_compat_map", + "xkb_layout", + "xkb_symbols", + "xkb_compatibility", + "xkb_semantics", + "type", + "alias", + "xkb_compatibility_map", + "alphanumeric_keys", + "function_keys", + "alternate", + "shape", + "action", + "section", + "row", + "logo", + "alternate_group", + "hidden", + "virtual", + "outline", + "default", + "modmap", + "virtual_modifiers", + "overlay", + "override", + "include", + "modifier_map", + "modifier_keys", + "indicator", + "group", + "mod_map", + "interpret", + "solid", + "partial" + }; +#define stringpool ((const char *) &stringpool_contents) +#ifdef __GNUC__ +__inline +#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif +#endif +const struct keyword_tok * +keyword_gperf_lookup (register const char *str, register unsigned int len) +{ + enum + { + TOTAL_KEYWORDS = 45, + MIN_WORD_LENGTH = 3, + MAX_WORD_LENGTH = 21, + MIN_HASH_VALUE = 3, + MAX_HASH_VALUE = 72 + }; + + static const struct keyword_tok wordlist[] = + { + {-1}, {-1}, {-1}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str3, KEY}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str4, KEYS}, + {-1}, {-1}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str7, AUGMENT}, + {-1}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str9, TEXT}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str10, XKB_KEYMAP}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str11, KEYPAD_KEYS}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str12, XKB_KEYCODES}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str13, XKB_GEOMETRY}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str14, XKB_TYPES}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str15, XKB_COMPATMAP}, + {-1}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str17, REPLACE}, + {-1}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str19, XKB_COMPATMAP}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str20, XKB_LAYOUT}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str21, XKB_SYMBOLS}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str22, XKB_COMPATMAP}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str23, XKB_SEMANTICS}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str24, TYPE}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str25, ALIAS}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str26, XKB_COMPATMAP}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str27, ALPHANUMERIC_KEYS}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str28, FUNCTION_KEYS}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str29, ALTERNATE}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str30, SHAPE}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str31, ACTION_TOK}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str32, SECTION}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str33, ROW}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str34, LOGO}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str35, ALTERNATE_GROUP}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str36, HIDDEN}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str37, VIRTUAL}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str42, OUTLINE}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str43, DEFAULT}, + {-1}, {-1}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str46, MODIFIER_MAP}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str47, VIRTUAL_MODS}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str52, OVERLAY}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str53, OVERRIDE}, + {-1}, {-1}, {-1}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str57, INCLUDE}, + {-1}, {-1}, {-1}, {-1}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str62, MODIFIER_MAP}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str63, MODIFIER_KEYS}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str64, INDICATOR}, + {-1}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str66, GROUP}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str67, MODIFIER_MAP}, + {-1}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str69, INTERPRET}, + {-1}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str71, SOLID}, + {(int)(long)&((struct stringpool_t *)0)->stringpool_str72, PARTIAL} + }; + + if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) + { + register int key = keyword_gperf_hash (str, len); + + if (key <= MAX_HASH_VALUE && key >= 0) + { + register int o = wordlist[key].name; + if (o >= 0) + { + register const char *s = o + stringpool; + + if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strcmp (str, s)) + return &wordlist[key]; + } + } + } + return 0; +} + + +int +keyword_to_token(const char *string, unsigned int len) +{ + const struct keyword_tok *kt = keyword_gperf_lookup(string, len); + if (!kt) + return -1; + return kt->tok; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.gperf b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.gperf new file mode 100644 index 0000000..5c64144 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/keywords.gperf @@ -0,0 +1,78 @@ +%{ +#include "xkbcomp-priv.h" +#include "parser-priv.h" + +static unsigned int +keyword_gperf_hash(const char *str, unsigned int len); + +static const struct keyword_tok * +keyword_gperf_lookup(const char *str, unsigned int len); +%} + +struct keyword_tok { int name; int tok; }; +%language=ANSI-C +%define hash-function-name keyword_gperf_hash +%define lookup-function-name keyword_gperf_lookup +%readonly-tables +%enum +%includes +%struct-type +%pic +%ignore-case + +%% +action, ACTION_TOK +alias, ALIAS +alphanumeric_keys, ALPHANUMERIC_KEYS +alternate_group, ALTERNATE_GROUP +alternate, ALTERNATE +augment, AUGMENT +default, DEFAULT +function_keys, FUNCTION_KEYS +group, GROUP +hidden, HIDDEN +include, INCLUDE +indicator, INDICATOR +interpret, INTERPRET +keypad_keys, KEYPAD_KEYS +key, KEY +keys, KEYS +logo, LOGO +modifier_keys, MODIFIER_KEYS +modifier_map, MODIFIER_MAP +mod_map, MODIFIER_MAP +modmap, MODIFIER_MAP +outline, OUTLINE +overlay, OVERLAY +override, OVERRIDE +partial, PARTIAL +replace, REPLACE +row, ROW +section, SECTION +shape, SHAPE +solid, SOLID +text, TEXT +type, TYPE +virtual_modifiers, VIRTUAL_MODS +virtual, VIRTUAL +xkb_compatibility_map, XKB_COMPATMAP +xkb_compatibility, XKB_COMPATMAP +xkb_compat_map, XKB_COMPATMAP +xkb_compat, XKB_COMPATMAP +xkb_geometry, XKB_GEOMETRY +xkb_keycodes, XKB_KEYCODES +xkb_keymap, XKB_KEYMAP +xkb_layout, XKB_LAYOUT +xkb_semantics, XKB_SEMANTICS +xkb_symbols, XKB_SYMBOLS +xkb_types, XKB_TYPES +%% + +int +keyword_to_token(const char *string, unsigned int len) +{ + const struct keyword_tok *kt = keyword_gperf_lookup(string, len); + if (!kt) + return -1; + return kt->tok; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser-priv.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser-priv.h new file mode 100644 index 0000000..76b5047 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser-priv.h @@ -0,0 +1,44 @@ +/************************************************************ + * Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +#ifndef XKBCOMP_PARSER_PRIV_H +#define XKBCOMP_PARSER_PRIV_H + +struct parser_param; +struct scanner; + +#include "parser.h" + +int +_xkbcommon_lex(YYSTYPE *yylval, struct scanner *scanner); + +XkbFile * +parse(struct xkb_context *ctx, struct scanner *scanner, const char *map); + +int +keyword_to_token(const char *string, unsigned int len); + +#endif diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c new file mode 100644 index 0000000..79a9124 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.c @@ -0,0 +1,3460 @@ +/* A Bison parser, made by GNU Bison 3.0.2. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. + + 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 . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "3.0.2" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 1 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + + +/* Substitute the variable and function names. */ +#define yyparse _xkbcommon_parse +#define yylex _xkbcommon_lex +#define yyerror _xkbcommon_error +#define yydebug _xkbcommon_debug +#define yynerrs _xkbcommon_nerrs + + +/* Copy the first part of user declarations. */ +#line 33 "src/xkbcomp/parser.y" /* yacc.c:339 */ + +#include "xkbcomp-priv.h" +#include "ast-build.h" +#include "parser-priv.h" +#include "scanner-utils.h" + +struct parser_param { + struct xkb_context *ctx; + struct scanner *scanner; + XkbFile *rtrn; + bool more_maps; +}; + +#define parser_err(param, fmt, ...) \ + scanner_err((param)->scanner, fmt, ##__VA_ARGS__) + +#define parser_warn(param, fmt, ...) \ + scanner_warn((param)->scanner, fmt, ##__VA_ARGS__) + +static void +_xkbcommon_error(struct parser_param *param, const char *msg) +{ + parser_err(param, "%s", msg); +} + +static bool +resolve_keysym(const char *name, xkb_keysym_t *sym_rtrn) +{ + xkb_keysym_t sym; + + if (!name || istreq(name, "any") || istreq(name, "nosymbol")) { + *sym_rtrn = XKB_KEY_NoSymbol; + return true; + } + + if (istreq(name, "none") || istreq(name, "voidsymbol")) { + *sym_rtrn = XKB_KEY_VoidSymbol; + return true; + } + + sym = xkb_keysym_from_name(name, XKB_KEYSYM_NO_FLAGS); + if (sym != XKB_KEY_NoSymbol) { + *sym_rtrn = sym; + return true; + } + + return false; +} + +#define param_scanner param->scanner + +#line 124 "src/xkbcomp/parser.c" /* yacc.c:339 */ + +# ifndef YY_NULLPTR +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif +# endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* In a future release of Bison, this section will be replaced + by #include "y.tab.h". */ +#ifndef YY__XKBCOMMON_SRC_XKBCOMP_PARSER_H_INCLUDED +# define YY__XKBCOMMON_SRC_XKBCOMP_PARSER_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int _xkbcommon_debug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + END_OF_FILE = 0, + ERROR_TOK = 255, + XKB_KEYMAP = 1, + XKB_KEYCODES = 2, + XKB_TYPES = 3, + XKB_SYMBOLS = 4, + XKB_COMPATMAP = 5, + XKB_GEOMETRY = 6, + XKB_SEMANTICS = 7, + XKB_LAYOUT = 8, + INCLUDE = 10, + OVERRIDE = 11, + AUGMENT = 12, + REPLACE = 13, + ALTERNATE = 14, + VIRTUAL_MODS = 20, + TYPE = 21, + INTERPRET = 22, + ACTION_TOK = 23, + KEY = 24, + ALIAS = 25, + GROUP = 26, + MODIFIER_MAP = 27, + INDICATOR = 28, + SHAPE = 29, + KEYS = 30, + ROW = 31, + SECTION = 32, + OVERLAY = 33, + TEXT = 34, + OUTLINE = 35, + SOLID = 36, + LOGO = 37, + VIRTUAL = 38, + EQUALS = 40, + PLUS = 41, + MINUS = 42, + DIVIDE = 43, + TIMES = 44, + OBRACE = 45, + CBRACE = 46, + OPAREN = 47, + CPAREN = 48, + OBRACKET = 49, + CBRACKET = 50, + DOT = 51, + COMMA = 52, + SEMI = 53, + EXCLAM = 54, + INVERT = 55, + STRING = 60, + INTEGER = 61, + FLOAT = 62, + IDENT = 63, + KEYNAME = 64, + PARTIAL = 70, + DEFAULT = 71, + HIDDEN = 72, + ALPHANUMERIC_KEYS = 73, + MODIFIER_KEYS = 74, + KEYPAD_KEYS = 75, + FUNCTION_KEYS = 76, + ALTERNATE_GROUP = 77 + }; +#endif +/* Tokens. */ +#define END_OF_FILE 0 +#define ERROR_TOK 255 +#define XKB_KEYMAP 1 +#define XKB_KEYCODES 2 +#define XKB_TYPES 3 +#define XKB_SYMBOLS 4 +#define XKB_COMPATMAP 5 +#define XKB_GEOMETRY 6 +#define XKB_SEMANTICS 7 +#define XKB_LAYOUT 8 +#define INCLUDE 10 +#define OVERRIDE 11 +#define AUGMENT 12 +#define REPLACE 13 +#define ALTERNATE 14 +#define VIRTUAL_MODS 20 +#define TYPE 21 +#define INTERPRET 22 +#define ACTION_TOK 23 +#define KEY 24 +#define ALIAS 25 +#define GROUP 26 +#define MODIFIER_MAP 27 +#define INDICATOR 28 +#define SHAPE 29 +#define KEYS 30 +#define ROW 31 +#define SECTION 32 +#define OVERLAY 33 +#define TEXT 34 +#define OUTLINE 35 +#define SOLID 36 +#define LOGO 37 +#define VIRTUAL 38 +#define EQUALS 40 +#define PLUS 41 +#define MINUS 42 +#define DIVIDE 43 +#define TIMES 44 +#define OBRACE 45 +#define CBRACE 46 +#define OPAREN 47 +#define CPAREN 48 +#define OBRACKET 49 +#define CBRACKET 50 +#define DOT 51 +#define COMMA 52 +#define SEMI 53 +#define EXCLAM 54 +#define INVERT 55 +#define STRING 60 +#define INTEGER 61 +#define FLOAT 62 +#define IDENT 63 +#define KEYNAME 64 +#define PARTIAL 70 +#define DEFAULT 71 +#define HIDDEN 72 +#define ALPHANUMERIC_KEYS 73 +#define MODIFIER_KEYS 74 +#define KEYPAD_KEYS 75 +#define FUNCTION_KEYS 76 +#define ALTERNATE_GROUP 77 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 162 "src/xkbcomp/parser.y" /* yacc.c:355 */ + + int ival; + int64_t num; + enum xkb_file_type file_type; + char *str; + xkb_atom_t atom; + enum merge_mode merge; + enum xkb_map_flags mapFlags; + xkb_keysym_t keysym; + ParseCommon *any; + ExprDef *expr; + VarDef *var; + VModDef *vmod; + InterpDef *interp; + KeyTypeDef *keyType; + SymbolsDef *syms; + ModMapDef *modMask; + GroupCompatDef *groupCompat; + LedMapDef *ledMap; + LedNameDef *ledName; + KeycodeDef *keyCode; + KeyAliasDef *keyAlias; + void *geom; + XkbFile *file; + +#line 320 "src/xkbcomp/parser.c" /* yacc.c:355 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + + +int _xkbcommon_parse (struct parser_param *param); + +#endif /* !YY__XKBCOMMON_SRC_XKBCOMP_PARSER_H_INCLUDED */ + +/* Copy the second part of user declarations. */ + +#line 334 "src/xkbcomp/parser.c" /* yacc.c:358 */ + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#else +typedef signed char yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(Msgid) dgettext ("bison-runtime", Msgid) +# endif +# endif +# ifndef YY_ +# define YY_(Msgid) Msgid +# endif +#endif + +#ifndef YY_ATTRIBUTE +# if (defined __GNUC__ \ + && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ + || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C +# define YY_ATTRIBUTE(Spec) __attribute__(Spec) +# else +# define YY_ATTRIBUTE(Spec) /* empty */ +# endif +#endif + +#ifndef YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +#endif + +#if !defined _Noreturn \ + && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) +# if defined _MSC_VER && 1200 <= _MSC_VER +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(E) ((void) (E)) +#else +# define YYUSE(E) /* empty */ +#endif + +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else +# define YY_INITIAL_VALUE(Value) Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS +# include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss_alloc; + YYSTYPE yyvs_alloc; +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +# define YYCOPY_NEEDED 1 + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 16 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 735 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 65 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 72 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 184 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 334 + +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 257 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, without out-of-bounds checking. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 4, 5, 6, 7, 8, 9, 10, 11, 2, + 12, 13, 14, 15, 16, 2, 2, 2, 2, 2, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 2, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 2, 2, 2, 2, + 52, 53, 54, 55, 56, 2, 2, 2, 2, 2, + 57, 58, 59, 60, 61, 62, 63, 64, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 3, 1, 2 +}; + +#if YYDEBUG + /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 241, 241, 243, 245, 249, 255, 256, 257, 260, + 268, 272, 287, 288, 289, 290, 291, 294, 295, 298, + 299, 302, 303, 304, 305, 306, 307, 308, 309, 312, + 314, 317, 322, 327, 332, 337, 342, 347, 352, 357, + 362, 367, 372, 373, 374, 375, 382, 384, 386, 390, + 394, 398, 402, 405, 409, 411, 415, 421, 423, 427, + 430, 434, 440, 446, 449, 451, 454, 455, 456, 457, + 458, 461, 463, 467, 471, 475, 479, 481, 485, 487, + 491, 495, 496, 499, 501, 503, 505, 507, 511, 512, + 515, 516, 520, 521, 524, 526, 530, 534, 535, 538, + 541, 543, 547, 549, 551, 555, 557, 561, 565, 569, + 570, 571, 572, 575, 576, 579, 581, 583, 585, 587, + 589, 591, 593, 595, 597, 599, 603, 604, 607, 608, + 609, 610, 611, 621, 622, 625, 628, 632, 634, 636, + 638, 640, 642, 646, 648, 650, 652, 654, 656, 658, + 660, 664, 667, 671, 675, 677, 679, 681, 685, 687, + 689, 691, 695, 696, 699, 701, 703, 705, 709, 713, + 719, 720, 740, 741, 744, 745, 748, 751, 754, 757, + 758, 761, 764, 765, 768 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || 0 +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "END_OF_FILE", "error", "$undefined", "ERROR_TOK", "XKB_KEYMAP", + "XKB_KEYCODES", "XKB_TYPES", "XKB_SYMBOLS", "XKB_COMPATMAP", + "XKB_GEOMETRY", "XKB_SEMANTICS", "XKB_LAYOUT", "INCLUDE", "OVERRIDE", + "AUGMENT", "REPLACE", "ALTERNATE", "VIRTUAL_MODS", "TYPE", "INTERPRET", + "ACTION_TOK", "KEY", "ALIAS", "GROUP", "MODIFIER_MAP", "INDICATOR", + "SHAPE", "KEYS", "ROW", "SECTION", "OVERLAY", "TEXT", "OUTLINE", "SOLID", + "LOGO", "VIRTUAL", "EQUALS", "PLUS", "MINUS", "DIVIDE", "TIMES", + "OBRACE", "CBRACE", "OPAREN", "CPAREN", "OBRACKET", "CBRACKET", "DOT", + "COMMA", "SEMI", "EXCLAM", "INVERT", "STRING", "INTEGER", "FLOAT", + "IDENT", "KEYNAME", "PARTIAL", "DEFAULT", "HIDDEN", "ALPHANUMERIC_KEYS", + "MODIFIER_KEYS", "KEYPAD_KEYS", "FUNCTION_KEYS", "ALTERNATE_GROUP", + "$accept", "XkbFile", "XkbCompositeMap", "XkbCompositeType", + "XkbMapConfigList", "XkbMapConfig", "FileType", "OptFlags", "Flags", + "Flag", "DeclList", "Decl", "VarDecl", "KeyNameDecl", "KeyAliasDecl", + "VModDecl", "VModDefList", "VModDef", "InterpretDecl", "InterpretMatch", + "VarDeclList", "KeyTypeDecl", "SymbolsDecl", "SymbolsBody", + "SymbolsVarDecl", "ArrayInit", "GroupCompatDecl", "ModMapDecl", + "LedMapDecl", "LedNameDecl", "ShapeDecl", "SectionDecl", "SectionBody", + "SectionBodyItem", "RowBody", "RowBodyItem", "Keys", "Key", + "OverlayDecl", "OverlayKeyList", "OverlayKey", "OutlineList", + "OutlineInList", "CoordList", "Coord", "DoodadDecl", "DoodadType", + "FieldSpec", "Element", "OptMergeMode", "MergeMode", "OptExprList", + "ExprList", "Expr", "Term", "ActionList", "Action", "Lhs", "Terminal", + "OptKeySymList", "KeySymList", "KeySyms", "KeySym", "SignedNumber", + "Number", "Float", "Integer", "KeyCode", "Ident", "String", "OptMapName", + "MapName", YY_NULLPTR +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 255, 1, 2, 3, 4, 5, 6, + 7, 8, 10, 11, 12, 13, 14, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 60, 61, 62, 63, 64, 70, 71, 72, + 73, 74, 75, 76, 77 +}; +# endif + +#define YYPACT_NINF -182 + +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-182))) + +#define YYTABLE_NINF -180 + +#define yytable_value_is_error(Yytable_value) \ + 0 + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +static const yytype_int16 yypact[] = +{ + 176, -182, -182, -182, -182, -182, -182, -182, -182, -182, + 6, -182, -182, 271, 227, -182, -182, -182, -182, -182, + -182, -182, -182, -182, -182, -38, -38, -182, -182, -24, + -182, 33, 227, -182, 210, -182, 353, 44, 5, -182, + -182, -182, -182, -182, -182, 32, -182, 13, 41, -182, + -182, -48, 55, 11, -182, 79, 87, 58, -48, -2, + 55, -182, 55, 72, -182, -182, -182, 107, -48, -182, + 110, -182, -182, -182, -182, -182, -182, -182, -182, -182, + -182, -182, -182, -182, -182, -182, 55, -18, -182, 127, + 121, -182, 66, -182, 138, -182, 136, -182, -182, -182, + 144, 147, -182, 152, 180, 182, 178, 184, 187, 188, + 190, 58, 198, 201, 214, 367, 677, 367, -182, -48, + -182, 367, 663, 663, 367, 494, 200, 367, 367, 367, + 663, 68, 449, 223, -182, -182, 212, 663, -182, -182, + -182, -182, -182, -182, -182, -182, -182, 367, 367, 367, + 367, 367, -182, -182, 57, 157, -182, 224, -182, -182, + -182, -182, -182, 218, 91, -182, 333, -182, 509, 537, + 333, 552, -48, 1, -182, -182, 228, 40, 216, 143, + 70, 333, 150, 593, 247, -30, 97, -182, 105, -182, + 261, 55, 259, 55, -182, -182, 408, -182, -182, -182, + 367, -182, 608, -182, -182, -182, 287, -182, -182, 367, + 367, 367, 367, 367, -182, 367, 367, -182, 252, -182, + 253, 264, 24, 269, 272, 163, -182, 273, 270, -182, + -182, -182, 280, 494, 285, -182, -182, 283, 367, -182, + 284, 112, 8, -182, -182, 294, -182, 299, -36, 304, + 247, 326, 649, 279, 307, -182, 204, 316, -182, 322, + 320, 111, 111, -182, -182, 333, 211, -182, -182, 116, + 367, -182, 677, -182, 24, -182, -182, -182, 333, -182, + 333, -182, -182, -182, -30, -182, -182, -182, -182, 247, + 333, 334, -182, 466, -182, 318, -182, -182, -182, -182, + -182, -182, 339, -182, -182, -182, 343, 120, 14, 345, + -182, 361, 124, -182, -182, -182, -182, 367, -182, 131, + -182, -182, 344, 350, 318, 166, 352, 14, -182, -182, + -182, -182, -182, -182 +}; + + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 18, 4, 21, 22, 23, 24, 25, 26, 27, 28, + 0, 2, 3, 0, 17, 20, 1, 6, 12, 13, + 15, 14, 16, 7, 8, 183, 183, 19, 184, 0, + 182, 0, 18, 30, 18, 10, 0, 127, 0, 9, + 128, 130, 129, 131, 132, 0, 29, 0, 126, 5, + 11, 0, 117, 116, 115, 118, 0, 119, 120, 121, + 122, 123, 124, 125, 110, 111, 112, 0, 0, 179, + 0, 180, 31, 34, 35, 32, 33, 36, 37, 39, + 38, 40, 41, 42, 43, 44, 0, 154, 114, 0, + 113, 45, 0, 53, 54, 181, 0, 170, 177, 169, + 0, 58, 171, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, + 51, 0, 0, 0, 0, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 178, 0, 0, 117, 116, + 118, 119, 120, 121, 122, 124, 125, 0, 0, 0, + 0, 0, 176, 161, 154, 0, 142, 147, 149, 160, + 159, 113, 158, 155, 0, 52, 55, 60, 0, 0, + 57, 163, 0, 0, 64, 70, 0, 113, 0, 0, + 0, 136, 0, 0, 0, 0, 0, 101, 0, 106, + 0, 121, 123, 0, 84, 86, 0, 82, 87, 85, + 0, 49, 0, 144, 147, 143, 0, 145, 146, 134, + 0, 0, 0, 0, 156, 0, 0, 46, 0, 59, + 0, 170, 0, 169, 0, 0, 152, 0, 162, 167, + 166, 69, 0, 0, 0, 50, 73, 0, 0, 76, + 0, 0, 0, 175, 174, 0, 173, 0, 0, 0, + 0, 0, 0, 0, 0, 81, 0, 0, 150, 0, + 133, 138, 139, 137, 140, 141, 0, 61, 56, 0, + 134, 72, 0, 71, 0, 62, 63, 67, 66, 74, + 135, 75, 102, 172, 0, 78, 100, 79, 105, 0, + 104, 0, 91, 0, 89, 0, 80, 77, 108, 148, + 157, 168, 0, 151, 165, 164, 0, 0, 0, 0, + 88, 0, 0, 98, 153, 107, 103, 0, 94, 0, + 93, 83, 0, 0, 0, 0, 0, 0, 99, 96, + 97, 95, 90, 92 +}; + + /* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -182, -182, -182, -182, -182, 181, -182, 402, -182, 389, + -182, -182, -35, -182, -182, -182, -182, 288, -182, -182, + -50, -182, -182, -182, 173, 174, -182, -182, 362, -182, + -182, -182, -182, 215, -182, 119, -182, 86, -182, -182, + 90, -182, 167, -181, 185, 369, -182, -27, -182, -182, + -182, 154, -126, 83, 76, -182, 158, -31, -182, -182, + 221, 170, -52, 161, 205, -182, -44, -182, -47, -34, + 420, -182 +}; + + /* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 10, 11, 25, 34, 12, 26, 36, 14, 15, + 37, 46, 167, 73, 74, 75, 92, 93, 76, 100, + 168, 77, 78, 173, 174, 175, 79, 80, 195, 82, + 83, 84, 196, 197, 293, 294, 319, 320, 198, 312, + 313, 186, 187, 188, 189, 199, 86, 154, 88, 47, + 48, 259, 260, 181, 156, 225, 226, 157, 158, 227, + 228, 229, 230, 245, 246, 159, 160, 136, 161, 162, + 29, 30 +}; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ +static const yytype_int16 yytable[] = +{ + 90, 101, 180, 241, 94, 184, 16, 69, 242, 102, + 71, 106, 72, 105, 28, 107, 89, 32, 96, 69, + 87, 112, 71, 243, 244, 108, 109, 115, 110, 116, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 97, 61, 62, 232, 63, 64, 65, 66, 67, 233, + 95, 98, 114, 97, 49, 317, 40, 41, 42, 43, + 44, 243, 244, 68, 98, 222, 99, 133, 69, 70, + 318, 71, 94, 169, 33, 90, 90, 98, 177, 99, + 183, 50, -68, 90, 190, 90, 45, 202, -68, 163, + 90, 89, 89, 91, 176, 87, 87, 194, 87, 89, + 209, 89, 115, 87, 116, 87, 89, 95, 307, 184, + 87, 98, 237, 185, 119, 120, 204, 204, 238, 204, + 204, 90, 90, 69, -109, 231, 71, 102, 210, 211, + 212, 213, 111, 219, 219, 103, 90, 89, 89, 247, + 217, 87, 87, 104, 224, 248, 113, 249, 219, 90, + 212, 213, 89, 250, 282, 90, 87, 108, 301, 253, + 250, 194, 316, 117, 274, 89, 323, 219, 250, 87, + 118, 89, 324, 326, 121, 87, 1, 122, 102, 327, + 210, 211, 212, 213, 124, 123, 177, 210, 211, 212, + 213, 325, 236, 125, 210, 211, 212, 213, 155, 239, + 164, 190, 176, 214, 166, 90, 87, 170, 331, 271, + 179, 272, 182, 35, 238, 39, 126, 292, 127, 128, + 129, 89, 305, 203, 205, 87, 207, 208, 130, 131, + 102, 132, 206, 2, 3, 4, 5, 6, 7, 8, + 9, 210, 211, 212, 213, 224, 90, 134, 210, 211, + 212, 213, 38, 297, 135, 137, 178, 300, 292, 200, + 215, 201, 89, 216, 234, 235, 87, 2, 3, 4, + 5, 6, 7, 8, 9, 17, 18, 19, 20, 21, + 22, 23, 24, 256, 2, 3, 4, 5, 6, 7, + 8, 9, 185, 261, 262, 263, 264, 251, 265, 266, + 252, 267, 268, 138, 139, 54, 140, -124, 141, 142, + 143, 144, -179, 61, 145, 270, 146, 278, 274, 273, + 295, 280, 147, 148, 210, 211, 212, 213, 149, 275, + 171, 258, 279, 281, 290, 150, 151, 95, 98, 152, + 69, 153, 284, 71, 138, 139, 54, 140, 285, 141, + 142, 143, 144, 287, 61, 145, 296, 146, 18, 19, + 20, 21, 22, 147, 148, 298, 299, 289, 238, 149, + 210, 211, 212, 213, 311, 308, 150, 151, 95, 98, + 152, 69, 153, 314, 71, 138, 139, 54, 140, 315, + 141, 142, 143, 144, 321, 61, 145, 322, 146, 329, + 328, 332, 13, 27, 147, 148, 276, 165, 277, 81, + 149, 255, 310, 333, 330, 286, 85, 150, 151, 95, + 98, 152, 69, 153, 302, 71, 138, 139, 54, 140, + 303, 141, 142, 191, 144, 288, 192, 145, 193, 63, + 64, 65, 66, 269, 304, 306, 31, 283, 0, 0, + 254, 0, 0, 0, 0, 0, 0, 0, 68, 0, + 0, 0, 0, 69, 0, 0, 71, 138, 139, 54, + 140, 0, 141, 142, 191, 144, 0, 192, 145, 193, + 63, 64, 65, 66, 138, 139, 54, 140, 0, 141, + 142, 143, 144, 291, 61, 145, 0, 146, 0, 68, + 0, 0, 0, 0, 69, 0, 0, 71, 309, 0, + 0, 0, 138, 139, 54, 140, 68, 141, 142, 143, + 144, 69, 61, 145, 71, 146, 0, 138, 139, 54, + 140, 0, 141, 142, 143, 144, 0, 61, 145, 171, + 146, 0, 0, 0, 172, 0, 0, 0, 0, 69, + 0, 218, 71, 0, 0, 138, 139, 54, 140, 68, + 141, 142, 143, 144, 69, 61, 145, 71, 146, 0, + 138, 139, 54, 140, 0, 141, 142, 143, 144, 220, + 61, 221, 0, 146, 0, 0, 0, 68, 0, 0, + 0, 0, 69, 222, 0, 71, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 98, 0, 223, 0, 0, + 71, 138, 139, 54, 140, 0, 141, 142, 143, 144, + 0, 61, 145, 0, 146, 0, 138, 139, 54, 140, + 0, 141, 142, 143, 144, 240, 61, 145, 0, 146, + 0, 0, 0, 68, 0, 0, 0, 0, 69, 0, + 257, 71, 0, 0, 0, 0, 0, 0, 68, 0, + 0, 0, 0, 69, 0, 0, 71, 138, 139, 54, + 140, 0, 141, 142, 143, 144, 291, 61, 145, 0, + 146, 138, 139, 54, 140, 0, 141, 142, 143, 144, + 0, 61, 145, 0, 146, 138, 139, 54, 140, 68, + 141, 142, 143, 144, 69, 61, 145, 71, 146, 0, + 0, 0, 0, 68, 0, 0, 0, 0, 69, 0, + 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 69, 0, 0, 71 +}; + +static const yytype_int16 yycheck[] = +{ + 47, 53, 128, 184, 51, 41, 0, 55, 38, 53, + 58, 58, 47, 57, 52, 59, 47, 41, 52, 55, + 47, 68, 58, 53, 54, 59, 60, 45, 62, 47, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 29, 28, 29, 42, 31, 32, 33, 34, 35, 48, + 52, 53, 86, 29, 49, 41, 12, 13, 14, 15, + 16, 53, 54, 50, 53, 41, 55, 111, 55, 56, + 56, 58, 119, 123, 41, 122, 123, 53, 125, 55, + 130, 49, 42, 130, 131, 132, 42, 137, 48, 116, + 137, 122, 123, 52, 125, 122, 123, 132, 125, 130, + 43, 132, 45, 130, 47, 132, 137, 52, 289, 41, + 137, 53, 42, 45, 48, 49, 147, 148, 48, 150, + 151, 168, 169, 55, 52, 172, 58, 171, 37, 38, + 39, 40, 25, 168, 169, 56, 183, 168, 169, 42, + 49, 168, 169, 56, 171, 48, 36, 42, 183, 196, + 39, 40, 183, 48, 42, 202, 183, 191, 42, 193, + 48, 196, 42, 36, 48, 196, 42, 202, 48, 196, + 49, 202, 48, 42, 36, 202, 0, 41, 222, 48, + 37, 38, 39, 40, 37, 41, 233, 37, 38, 39, + 40, 317, 49, 41, 37, 38, 39, 40, 115, 49, + 117, 248, 233, 46, 121, 252, 233, 124, 42, 46, + 127, 48, 129, 32, 48, 34, 36, 252, 36, 41, + 36, 252, 274, 147, 148, 252, 150, 151, 41, 41, + 274, 41, 149, 57, 58, 59, 60, 61, 62, 63, + 64, 37, 38, 39, 40, 272, 293, 49, 37, 38, + 39, 40, 42, 49, 53, 41, 56, 46, 293, 36, + 36, 49, 293, 45, 36, 49, 293, 57, 58, 59, + 60, 61, 62, 63, 64, 4, 5, 6, 7, 8, + 9, 10, 11, 200, 57, 58, 59, 60, 61, 62, + 63, 64, 45, 210, 211, 212, 213, 36, 215, 216, + 41, 49, 49, 18, 19, 20, 21, 43, 23, 24, + 25, 26, 43, 28, 29, 43, 31, 234, 48, 46, + 41, 238, 37, 38, 37, 38, 39, 40, 43, 49, + 45, 44, 49, 49, 251, 50, 51, 52, 53, 54, + 55, 56, 48, 58, 18, 19, 20, 21, 49, 23, + 24, 25, 26, 49, 28, 29, 49, 31, 5, 6, + 7, 8, 9, 37, 38, 49, 44, 41, 48, 43, + 37, 38, 39, 40, 56, 41, 50, 51, 52, 53, + 54, 55, 56, 44, 58, 18, 19, 20, 21, 46, + 23, 24, 25, 26, 49, 28, 29, 36, 31, 49, + 56, 49, 0, 14, 37, 38, 233, 119, 234, 47, + 43, 196, 293, 327, 324, 248, 47, 50, 51, 52, + 53, 54, 55, 56, 270, 58, 18, 19, 20, 21, + 272, 23, 24, 25, 26, 250, 28, 29, 30, 31, + 32, 33, 34, 222, 274, 284, 26, 242, -1, -1, + 42, -1, -1, -1, -1, -1, -1, -1, 50, -1, + -1, -1, -1, 55, -1, -1, 58, 18, 19, 20, + 21, -1, 23, 24, 25, 26, -1, 28, 29, 30, + 31, 32, 33, 34, 18, 19, 20, 21, -1, 23, + 24, 25, 26, 27, 28, 29, -1, 31, -1, 50, + -1, -1, -1, -1, 55, -1, -1, 58, 42, -1, + -1, -1, 18, 19, 20, 21, 50, 23, 24, 25, + 26, 55, 28, 29, 58, 31, -1, 18, 19, 20, + 21, -1, 23, 24, 25, 26, -1, 28, 29, 45, + 31, -1, -1, -1, 50, -1, -1, -1, -1, 55, + -1, 42, 58, -1, -1, 18, 19, 20, 21, 50, + 23, 24, 25, 26, 55, 28, 29, 58, 31, -1, + 18, 19, 20, 21, -1, 23, 24, 25, 26, 42, + 28, 29, -1, 31, -1, -1, -1, 50, -1, -1, + -1, -1, 55, 41, -1, 58, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 53, -1, 55, -1, -1, + 58, 18, 19, 20, 21, -1, 23, 24, 25, 26, + -1, 28, 29, -1, 31, -1, 18, 19, 20, 21, + -1, 23, 24, 25, 26, 42, 28, 29, -1, 31, + -1, -1, -1, 50, -1, -1, -1, -1, 55, -1, + 42, 58, -1, -1, -1, -1, -1, -1, 50, -1, + -1, -1, -1, 55, -1, -1, 58, 18, 19, 20, + 21, -1, 23, 24, 25, 26, 27, 28, 29, -1, + 31, 18, 19, 20, 21, -1, 23, 24, 25, 26, + -1, 28, 29, -1, 31, 18, 19, 20, 21, 50, + 23, 24, 25, 26, 55, 28, 29, 58, 31, -1, + -1, -1, -1, 50, -1, -1, -1, -1, 55, -1, + -1, 58, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 55, -1, -1, 58 +}; + + /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 0, 57, 58, 59, 60, 61, 62, 63, 64, + 66, 67, 70, 72, 73, 74, 0, 4, 5, 6, + 7, 8, 9, 10, 11, 68, 71, 74, 52, 135, + 136, 135, 41, 41, 69, 70, 72, 75, 42, 70, + 12, 13, 14, 15, 16, 42, 76, 114, 115, 49, + 49, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 28, 29, 31, 32, 33, 34, 35, 50, 55, + 56, 58, 77, 78, 79, 80, 83, 86, 87, 91, + 92, 93, 94, 95, 96, 110, 111, 112, 113, 122, + 133, 52, 81, 82, 133, 52, 134, 29, 53, 55, + 84, 127, 131, 56, 56, 131, 133, 131, 134, 134, + 134, 25, 133, 36, 134, 45, 47, 36, 49, 48, + 49, 36, 41, 41, 37, 41, 36, 36, 41, 36, + 41, 41, 41, 131, 49, 53, 132, 41, 18, 19, + 21, 23, 24, 25, 26, 29, 31, 37, 38, 43, + 50, 51, 54, 56, 112, 118, 119, 122, 123, 130, + 131, 133, 134, 112, 118, 82, 118, 77, 85, 85, + 118, 45, 50, 88, 89, 90, 122, 133, 56, 118, + 117, 118, 118, 85, 41, 45, 106, 107, 108, 109, + 133, 25, 28, 30, 77, 93, 97, 98, 103, 110, + 36, 49, 85, 119, 122, 119, 118, 119, 119, 43, + 37, 38, 39, 40, 46, 36, 45, 49, 42, 77, + 42, 29, 41, 55, 112, 120, 121, 124, 125, 126, + 127, 133, 42, 48, 36, 49, 49, 42, 48, 49, + 42, 108, 38, 53, 54, 128, 129, 42, 48, 42, + 48, 36, 41, 134, 42, 98, 118, 42, 44, 116, + 117, 118, 118, 118, 118, 118, 118, 49, 49, 125, + 43, 46, 48, 46, 48, 49, 89, 90, 118, 49, + 118, 49, 42, 129, 48, 49, 107, 49, 109, 41, + 118, 27, 77, 99, 100, 41, 49, 49, 49, 44, + 46, 42, 116, 121, 126, 127, 128, 108, 41, 42, + 100, 56, 104, 105, 44, 46, 42, 41, 56, 101, + 102, 49, 36, 42, 48, 117, 42, 48, 56, 49, + 105, 42, 49, 102 +}; + + /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 65, 66, 66, 66, 67, 68, 68, 68, 69, + 69, 70, 71, 71, 71, 71, 71, 72, 72, 73, + 73, 74, 74, 74, 74, 74, 74, 74, 74, 75, + 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 77, 77, 77, 78, + 79, 80, 81, 81, 82, 82, 83, 84, 84, 85, + 85, 86, 87, 88, 88, 88, 89, 89, 89, 89, + 89, 90, 90, 91, 92, 93, 94, 94, 95, 95, + 96, 97, 97, 98, 98, 98, 98, 98, 99, 99, + 100, 100, 101, 101, 102, 102, 103, 104, 104, 105, + 106, 106, 107, 107, 107, 108, 108, 109, 110, 111, + 111, 111, 111, 112, 112, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 114, 114, 115, 115, + 115, 115, 115, 116, 116, 117, 117, 118, 118, 118, + 118, 118, 118, 119, 119, 119, 119, 119, 119, 119, + 119, 120, 120, 121, 122, 122, 122, 122, 123, 123, + 123, 123, 124, 124, 125, 125, 125, 125, 126, 127, + 127, 127, 128, 128, 129, 129, 130, 131, 132, 133, + 133, 134, 135, 135, 136 +}; + + /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 1, 1, 1, 7, 1, 1, 1, 2, + 1, 7, 1, 1, 1, 1, 1, 1, 0, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 4, 2, 3, 4, + 5, 3, 3, 1, 1, 3, 6, 3, 1, 2, + 1, 6, 6, 3, 1, 0, 3, 3, 1, 2, + 1, 3, 3, 5, 6, 6, 5, 6, 6, 6, + 6, 2, 1, 5, 1, 1, 1, 1, 2, 1, + 5, 1, 3, 1, 1, 3, 6, 3, 1, 3, + 3, 1, 3, 5, 3, 3, 1, 5, 6, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, + 1, 1, 1, 1, 0, 3, 1, 3, 3, 3, + 3, 3, 1, 2, 2, 2, 2, 1, 4, 1, + 3, 3, 1, 4, 1, 3, 4, 6, 1, 1, + 1, 1, 1, 0, 3, 3, 1, 1, 3, 1, + 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 1 +}; + + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (param, YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (0) + +/* Error token number */ +#define YYTERROR 1 +#define YYERRCODE 256 + + + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value, param); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) + + +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ + +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct parser_param *param) +{ + FILE *yyo = yyoutput; + YYUSE (yyo); + YYUSE (param); + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# endif + YYUSE (yytype); +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct parser_param *param) +{ + YYFPRINTF (yyoutput, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep, param); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +static void +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, struct parser_param *param) +{ + unsigned long int yylno = yyrline[yyrule]; + int yynrhs = yyr2[yyrule]; + int yyi; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) + , param); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule, param); \ +} while (0) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +static YYSIZE_T +yystrlen (const char *yystr) +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +static char * +yystpcpy (char *yydest, const char *yysrc) +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULLPTR; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + { + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } + } + + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } + + { + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } + + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + { + char *yyp = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; +} +#endif /* YYERROR_VERBOSE */ + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, struct parser_param *param) +{ + YYUSE (yyvaluep); + YYUSE (param); + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + switch (yytype) + { + case 52: /* STRING */ +#line 225 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { free(((*yyvaluep).str)); } +#line 1491 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 55: /* IDENT */ +#line 225 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { free(((*yyvaluep).str)); } +#line 1497 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 66: /* XkbFile */ +#line 224 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } +#line 1503 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 67: /* XkbCompositeMap */ +#line 224 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } +#line 1509 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 69: /* XkbMapConfigList */ +#line 224 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } +#line 1515 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 70: /* XkbMapConfig */ +#line 224 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } +#line 1521 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 75: /* DeclList */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).any)); } +#line 1527 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 76: /* Decl */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).any)); } +#line 1533 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 77: /* VarDecl */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).var)); } +#line 1539 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 78: /* KeyNameDecl */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).keyCode)); } +#line 1545 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 79: /* KeyAliasDecl */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).keyAlias)); } +#line 1551 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 80: /* VModDecl */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).vmod)); } +#line 1557 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 81: /* VModDefList */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).vmod)); } +#line 1563 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 82: /* VModDef */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).vmod)); } +#line 1569 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 83: /* InterpretDecl */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).interp)); } +#line 1575 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 84: /* InterpretMatch */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).interp)); } +#line 1581 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 85: /* VarDeclList */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).var)); } +#line 1587 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 86: /* KeyTypeDecl */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).keyType)); } +#line 1593 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 87: /* SymbolsDecl */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).syms)); } +#line 1599 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 88: /* SymbolsBody */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).var)); } +#line 1605 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 89: /* SymbolsVarDecl */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).var)); } +#line 1611 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 90: /* ArrayInit */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } +#line 1617 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 91: /* GroupCompatDecl */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).groupCompat)); } +#line 1623 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 92: /* ModMapDecl */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).modMask)); } +#line 1629 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 93: /* LedMapDecl */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).ledMap)); } +#line 1635 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 94: /* LedNameDecl */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).ledName)); } +#line 1641 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 108: /* CoordList */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } +#line 1647 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 109: /* Coord */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } +#line 1653 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 116: /* OptExprList */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } +#line 1659 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 117: /* ExprList */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } +#line 1665 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 118: /* Expr */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } +#line 1671 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 119: /* Term */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } +#line 1677 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 120: /* ActionList */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } +#line 1683 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 121: /* Action */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } +#line 1689 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 122: /* Lhs */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } +#line 1695 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 123: /* Terminal */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } +#line 1701 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 124: /* OptKeySymList */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } +#line 1707 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 125: /* KeySymList */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } +#line 1713 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 126: /* KeySyms */ +#line 219 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } +#line 1719 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 135: /* OptMapName */ +#line 225 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { free(((*yyvaluep).str)); } +#line 1725 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + case 136: /* MapName */ +#line 225 "src/xkbcomp/parser.y" /* yacc.c:1257 */ + { free(((*yyvaluep).str)); } +#line 1731 "src/xkbcomp/parser.c" /* yacc.c:1257 */ + break; + + + default: + break; + } + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + + + +/*----------. +| yyparse. | +`----------*/ + +int +yyparse (struct parser_param *param) +{ +/* The lookahead symbol. */ +int yychar; + + +/* The semantic value of the lookahead symbol. */ +/* Default value used for initialization, for pacifying older GCCs + or non-GCC compilers. */ +YY_INITIAL_VALUE (static YYSTYPE yyval_default;) +YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); + + /* Number of syntax errors so far. */ + int yynerrs; + + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + 'yyss': related to states. + 'yyvs': related to semantic values. + + Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; + yystacksize = YYINITDEPTH; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = yylex (&yylval, param_scanner); + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + '$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: +#line 242 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.file) = param->rtrn = (yyvsp[0].file); param->more_maps = true; } +#line 1999 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 3: +#line 244 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.file) = param->rtrn = (yyvsp[0].file); param->more_maps = true; YYACCEPT; } +#line 2005 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 4: +#line 246 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.file) = param->rtrn = NULL; param->more_maps = false; } +#line 2011 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 5: +#line 252 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.file) = XkbFileCreate((yyvsp[-5].file_type), (yyvsp[-4].str), (ParseCommon *) (yyvsp[-2].file), (yyvsp[-6].mapFlags)); } +#line 2017 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 6: +#line 255 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.file_type) = FILE_TYPE_KEYMAP; } +#line 2023 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 7: +#line 256 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.file_type) = FILE_TYPE_KEYMAP; } +#line 2029 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 8: +#line 257 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.file_type) = FILE_TYPE_KEYMAP; } +#line 2035 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 9: +#line 261 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { + if (!(yyvsp[0].file)) + (yyval.file) = (yyvsp[-1].file); + else + (yyval.file) = (XkbFile *) AppendStmt((ParseCommon *) (yyvsp[-1].file), + (ParseCommon *) (yyvsp[0].file)); + } +#line 2047 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 10: +#line 269 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.file) = (yyvsp[0].file); } +#line 2053 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 11: +#line 275 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { + if ((yyvsp[-5].file_type) == FILE_TYPE_GEOMETRY) { + free((yyvsp[-4].str)); + FreeStmt((yyvsp[-2].any)); + (yyval.file) = NULL; + } + else { + (yyval.file) = XkbFileCreate((yyvsp[-5].file_type), (yyvsp[-4].str), (yyvsp[-2].any), (yyvsp[-6].mapFlags)); + } + } +#line 2068 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 12: +#line 287 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.file_type) = FILE_TYPE_KEYCODES; } +#line 2074 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 13: +#line 288 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.file_type) = FILE_TYPE_TYPES; } +#line 2080 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 14: +#line 289 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.file_type) = FILE_TYPE_COMPAT; } +#line 2086 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 15: +#line 290 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.file_type) = FILE_TYPE_SYMBOLS; } +#line 2092 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 16: +#line 291 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.file_type) = FILE_TYPE_GEOMETRY; } +#line 2098 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 17: +#line 294 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.mapFlags) = (yyvsp[0].mapFlags); } +#line 2104 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 18: +#line 295 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.mapFlags) = 0; } +#line 2110 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 19: +#line 298 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.mapFlags) = ((yyvsp[-1].mapFlags) | (yyvsp[0].mapFlags)); } +#line 2116 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 20: +#line 299 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.mapFlags) = (yyvsp[0].mapFlags); } +#line 2122 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 21: +#line 302 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.mapFlags) = MAP_IS_PARTIAL; } +#line 2128 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 22: +#line 303 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.mapFlags) = MAP_IS_DEFAULT; } +#line 2134 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 23: +#line 304 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.mapFlags) = MAP_IS_HIDDEN; } +#line 2140 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 24: +#line 305 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.mapFlags) = MAP_HAS_ALPHANUMERIC; } +#line 2146 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 25: +#line 306 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.mapFlags) = MAP_HAS_MODIFIER; } +#line 2152 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 26: +#line 307 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.mapFlags) = MAP_HAS_KEYPAD; } +#line 2158 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 27: +#line 308 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.mapFlags) = MAP_HAS_FN; } +#line 2164 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 28: +#line 309 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.mapFlags) = MAP_IS_ALTGR; } +#line 2170 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 29: +#line 313 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.any) = AppendStmt((yyvsp[-1].any), (yyvsp[0].any)); } +#line 2176 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 30: +#line 314 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.any) = NULL; } +#line 2182 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 31: +#line 318 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { + (yyvsp[0].var)->merge = (yyvsp[-1].merge); + (yyval.any) = (ParseCommon *) (yyvsp[0].var); + } +#line 2191 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 32: +#line 323 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { + (yyvsp[0].vmod)->merge = (yyvsp[-1].merge); + (yyval.any) = (ParseCommon *) (yyvsp[0].vmod); + } +#line 2200 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 33: +#line 328 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { + (yyvsp[0].interp)->merge = (yyvsp[-1].merge); + (yyval.any) = (ParseCommon *) (yyvsp[0].interp); + } +#line 2209 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 34: +#line 333 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { + (yyvsp[0].keyCode)->merge = (yyvsp[-1].merge); + (yyval.any) = (ParseCommon *) (yyvsp[0].keyCode); + } +#line 2218 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 35: +#line 338 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { + (yyvsp[0].keyAlias)->merge = (yyvsp[-1].merge); + (yyval.any) = (ParseCommon *) (yyvsp[0].keyAlias); + } +#line 2227 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 36: +#line 343 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { + (yyvsp[0].keyType)->merge = (yyvsp[-1].merge); + (yyval.any) = (ParseCommon *) (yyvsp[0].keyType); + } +#line 2236 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 37: +#line 348 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { + (yyvsp[0].syms)->merge = (yyvsp[-1].merge); + (yyval.any) = (ParseCommon *) (yyvsp[0].syms); + } +#line 2245 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 38: +#line 353 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { + (yyvsp[0].modMask)->merge = (yyvsp[-1].merge); + (yyval.any) = (ParseCommon *) (yyvsp[0].modMask); + } +#line 2254 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 39: +#line 358 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { + (yyvsp[0].groupCompat)->merge = (yyvsp[-1].merge); + (yyval.any) = (ParseCommon *) (yyvsp[0].groupCompat); + } +#line 2263 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 40: +#line 363 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { + (yyvsp[0].ledMap)->merge = (yyvsp[-1].merge); + (yyval.any) = (ParseCommon *) (yyvsp[0].ledMap); + } +#line 2272 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 41: +#line 368 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { + (yyvsp[0].ledName)->merge = (yyvsp[-1].merge); + (yyval.any) = (ParseCommon *) (yyvsp[0].ledName); + } +#line 2281 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 42: +#line 372 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.any) = NULL; } +#line 2287 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 43: +#line 373 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.any) = NULL; } +#line 2293 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 44: +#line 374 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.any) = NULL; } +#line 2299 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 45: +#line 376 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { + (yyval.any) = (ParseCommon *) IncludeCreate(param->ctx, (yyvsp[0].str), (yyvsp[-1].merge)); + free((yyvsp[0].str)); + } +#line 2308 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 46: +#line 383 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.var) = VarCreate((yyvsp[-3].expr), (yyvsp[-1].expr)); } +#line 2314 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 47: +#line 385 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.var) = BoolVarCreate((yyvsp[-1].atom), true); } +#line 2320 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 48: +#line 387 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.var) = BoolVarCreate((yyvsp[-1].atom), false); } +#line 2326 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 49: +#line 391 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.keyCode) = KeycodeCreate((yyvsp[-3].atom), (yyvsp[-1].num)); } +#line 2332 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 50: +#line 395 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.keyAlias) = KeyAliasCreate((yyvsp[-3].atom), (yyvsp[-1].atom)); } +#line 2338 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 51: +#line 399 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.vmod) = (yyvsp[-1].vmod); } +#line 2344 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 52: +#line 403 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.vmod) = (VModDef *) AppendStmt((ParseCommon *) (yyvsp[-2].vmod), + (ParseCommon *) (yyvsp[0].vmod)); } +#line 2351 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 53: +#line 406 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.vmod) = (yyvsp[0].vmod); } +#line 2357 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 54: +#line 410 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.vmod) = VModCreate((yyvsp[0].atom), NULL); } +#line 2363 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 55: +#line 412 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.vmod) = VModCreate((yyvsp[-2].atom), (yyvsp[0].expr)); } +#line 2369 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 56: +#line 418 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyvsp[-4].interp)->def = (yyvsp[-2].var); (yyval.interp) = (yyvsp[-4].interp); } +#line 2375 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 57: +#line 422 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.interp) = InterpCreate((yyvsp[-2].keysym), (yyvsp[0].expr)); } +#line 2381 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 58: +#line 424 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.interp) = InterpCreate((yyvsp[0].keysym), NULL); } +#line 2387 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 59: +#line 428 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.var) = (VarDef *) AppendStmt((ParseCommon *) (yyvsp[-1].var), + (ParseCommon *) (yyvsp[0].var)); } +#line 2394 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 60: +#line 431 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.var) = (yyvsp[0].var); } +#line 2400 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 61: +#line 437 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.keyType) = KeyTypeCreate((yyvsp[-4].atom), (yyvsp[-2].var)); } +#line 2406 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 62: +#line 443 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.syms) = SymbolsCreate((yyvsp[-4].atom), (yyvsp[-2].var)); } +#line 2412 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 63: +#line 447 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.var) = (VarDef *) AppendStmt((ParseCommon *) (yyvsp[-2].var), + (ParseCommon *) (yyvsp[0].var)); } +#line 2419 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 64: +#line 450 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.var) = (yyvsp[0].var); } +#line 2425 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 65: +#line 451 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.var) = NULL; } +#line 2431 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 66: +#line 454 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.var) = VarCreate((yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2437 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 67: +#line 455 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.var) = VarCreate((yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2443 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 68: +#line 456 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.var) = BoolVarCreate((yyvsp[0].atom), true); } +#line 2449 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 69: +#line 457 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.var) = BoolVarCreate((yyvsp[0].atom), false); } +#line 2455 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 70: +#line 458 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.var) = VarCreate(NULL, (yyvsp[0].expr)); } +#line 2461 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 71: +#line 462 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = (yyvsp[-1].expr); } +#line 2467 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 72: +#line 464 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = ExprCreateUnary(EXPR_ACTION_LIST, EXPR_TYPE_ACTION, (yyvsp[-1].expr)); } +#line 2473 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 73: +#line 468 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.groupCompat) = GroupCompatCreate((yyvsp[-3].ival), (yyvsp[-1].expr)); } +#line 2479 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 74: +#line 472 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.modMask) = ModMapCreate((yyvsp[-4].atom), (yyvsp[-2].expr)); } +#line 2485 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 75: +#line 476 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.ledMap) = LedMapCreate((yyvsp[-4].atom), (yyvsp[-2].var)); } +#line 2491 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 76: +#line 480 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.ledName) = LedNameCreate((yyvsp[-3].ival), (yyvsp[-1].expr), false); } +#line 2497 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 77: +#line 482 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.ledName) = LedNameCreate((yyvsp[-3].ival), (yyvsp[-1].expr), true); } +#line 2503 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 78: +#line 486 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.geom) = NULL; } +#line 2509 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 79: +#line 488 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (void) (yyvsp[-2].expr); (yyval.geom) = NULL; } +#line 2515 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 80: +#line 492 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.geom) = NULL; } +#line 2521 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 81: +#line 495 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.geom) = NULL;} +#line 2527 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 82: +#line 496 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.geom) = NULL; } +#line 2533 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 83: +#line 500 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.geom) = NULL; } +#line 2539 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 84: +#line 502 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { FreeStmt((ParseCommon *) (yyvsp[0].var)); (yyval.geom) = NULL; } +#line 2545 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 85: +#line 504 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.geom) = NULL; } +#line 2551 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 86: +#line 506 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { FreeStmt((ParseCommon *) (yyvsp[0].ledMap)); (yyval.geom) = NULL; } +#line 2557 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 87: +#line 508 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.geom) = NULL; } +#line 2563 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 88: +#line 511 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.geom) = NULL;} +#line 2569 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 89: +#line 512 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.geom) = NULL; } +#line 2575 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 90: +#line 515 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.geom) = NULL; } +#line 2581 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 91: +#line 517 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { FreeStmt((ParseCommon *) (yyvsp[0].var)); (yyval.geom) = NULL; } +#line 2587 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 92: +#line 520 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.geom) = NULL; } +#line 2593 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 93: +#line 521 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.geom) = NULL; } +#line 2599 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 94: +#line 525 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.geom) = NULL; } +#line 2605 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 95: +#line 527 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { FreeStmt((ParseCommon *) (yyvsp[-1].expr)); (yyval.geom) = NULL; } +#line 2611 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 96: +#line 531 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.geom) = NULL; } +#line 2617 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 97: +#line 534 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.geom) = NULL; } +#line 2623 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 98: +#line 535 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.geom) = NULL; } +#line 2629 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 99: +#line 538 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.geom) = NULL; } +#line 2635 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 100: +#line 542 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.geom) = NULL;} +#line 2641 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 101: +#line 544 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.geom) = NULL; } +#line 2647 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 102: +#line 548 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (void) (yyvsp[-1].expr); (yyval.geom) = NULL; } +#line 2653 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 103: +#line 550 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (void) (yyvsp[-1].expr); (yyval.geom) = NULL; } +#line 2659 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 104: +#line 552 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { FreeStmt((ParseCommon *) (yyvsp[0].expr)); (yyval.geom) = NULL; } +#line 2665 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 105: +#line 556 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (void) (yyvsp[-2].expr); (void) (yyvsp[0].expr); (yyval.expr) = NULL; } +#line 2671 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 106: +#line 558 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (void) (yyvsp[0].expr); (yyval.expr) = NULL; } +#line 2677 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 107: +#line 562 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = NULL; } +#line 2683 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 108: +#line 566 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { FreeStmt((ParseCommon *) (yyvsp[-2].var)); (yyval.geom) = NULL; } +#line 2689 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 109: +#line 569 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.ival) = 0; } +#line 2695 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 110: +#line 570 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.ival) = 0; } +#line 2701 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 111: +#line 571 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.ival) = 0; } +#line 2707 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 112: +#line 572 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.ival) = 0; } +#line 2713 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 113: +#line 575 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.atom) = (yyvsp[0].atom); } +#line 2719 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 114: +#line 576 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.atom) = (yyvsp[0].atom); } +#line 2725 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 115: +#line 580 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "action"); } +#line 2731 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 116: +#line 582 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "interpret"); } +#line 2737 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 117: +#line 584 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "type"); } +#line 2743 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 118: +#line 586 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "key"); } +#line 2749 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 119: +#line 588 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "group"); } +#line 2755 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 120: +#line 590 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + {(yyval.atom) = xkb_atom_intern_literal(param->ctx, "modifier_map");} +#line 2761 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 121: +#line 592 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "indicator"); } +#line 2767 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 122: +#line 594 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.atom) = XKB_ATOM_NONE; } +#line 2773 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 123: +#line 596 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.atom) = XKB_ATOM_NONE; } +#line 2779 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 124: +#line 598 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.atom) = XKB_ATOM_NONE; } +#line 2785 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 125: +#line 600 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.atom) = XKB_ATOM_NONE; } +#line 2791 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 126: +#line 603 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.merge) = (yyvsp[0].merge); } +#line 2797 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 127: +#line 604 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.merge) = MERGE_DEFAULT; } +#line 2803 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 128: +#line 607 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.merge) = MERGE_DEFAULT; } +#line 2809 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 129: +#line 608 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.merge) = MERGE_AUGMENT; } +#line 2815 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 130: +#line 609 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.merge) = MERGE_OVERRIDE; } +#line 2821 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 131: +#line 610 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.merge) = MERGE_REPLACE; } +#line 2827 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 132: +#line 612 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { + /* + * This used to be MERGE_ALT_FORM. This functionality was + * unused and has been removed. + */ + (yyval.merge) = MERGE_DEFAULT; + } +#line 2839 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 133: +#line 621 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = (yyvsp[0].expr); } +#line 2845 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 134: +#line 622 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = NULL; } +#line 2851 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 135: +#line 626 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = (ExprDef *) AppendStmt((ParseCommon *) (yyvsp[-2].expr), + (ParseCommon *) (yyvsp[0].expr)); } +#line 2858 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 136: +#line 629 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = (yyvsp[0].expr); } +#line 2864 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 137: +#line 633 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = ExprCreateBinary(EXPR_DIVIDE, (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2870 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 138: +#line 635 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = ExprCreateBinary(EXPR_ADD, (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2876 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 139: +#line 637 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = ExprCreateBinary(EXPR_SUBTRACT, (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2882 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 140: +#line 639 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = ExprCreateBinary(EXPR_MULTIPLY, (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2888 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 141: +#line 641 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = ExprCreateBinary(EXPR_ASSIGN, (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2894 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 142: +#line 643 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = (yyvsp[0].expr); } +#line 2900 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 143: +#line 647 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = ExprCreateUnary(EXPR_NEGATE, (yyvsp[0].expr)->expr.value_type, (yyvsp[0].expr)); } +#line 2906 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 144: +#line 649 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = ExprCreateUnary(EXPR_UNARY_PLUS, (yyvsp[0].expr)->expr.value_type, (yyvsp[0].expr)); } +#line 2912 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 145: +#line 651 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = ExprCreateUnary(EXPR_NOT, EXPR_TYPE_BOOLEAN, (yyvsp[0].expr)); } +#line 2918 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 146: +#line 653 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = ExprCreateUnary(EXPR_INVERT, (yyvsp[0].expr)->expr.value_type, (yyvsp[0].expr)); } +#line 2924 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 147: +#line 655 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = (yyvsp[0].expr); } +#line 2930 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 148: +#line 657 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = ExprCreateAction((yyvsp[-3].atom), (yyvsp[-1].expr)); } +#line 2936 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 149: +#line 659 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = (yyvsp[0].expr); } +#line 2942 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 150: +#line 661 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = (yyvsp[-1].expr); } +#line 2948 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 151: +#line 665 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = (ExprDef *) AppendStmt((ParseCommon *) (yyvsp[-2].expr), + (ParseCommon *) (yyvsp[0].expr)); } +#line 2955 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 152: +#line 668 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = (yyvsp[0].expr); } +#line 2961 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 153: +#line 672 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = ExprCreateAction((yyvsp[-3].atom), (yyvsp[-1].expr)); } +#line 2967 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 154: +#line 676 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = ExprCreateIdent((yyvsp[0].atom)); } +#line 2973 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 155: +#line 678 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = ExprCreateFieldRef((yyvsp[-2].atom), (yyvsp[0].atom)); } +#line 2979 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 156: +#line 680 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = ExprCreateArrayRef(XKB_ATOM_NONE, (yyvsp[-3].atom), (yyvsp[-1].expr)); } +#line 2985 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 157: +#line 682 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = ExprCreateArrayRef((yyvsp[-5].atom), (yyvsp[-3].atom), (yyvsp[-1].expr)); } +#line 2991 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 158: +#line 686 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = ExprCreateString((yyvsp[0].atom)); } +#line 2997 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 159: +#line 688 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = ExprCreateInteger((yyvsp[0].ival)); } +#line 3003 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 160: +#line 690 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = NULL; } +#line 3009 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 161: +#line 692 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = ExprCreateKeyName((yyvsp[0].atom)); } +#line 3015 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 162: +#line 695 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = (yyvsp[0].expr); } +#line 3021 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 163: +#line 696 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = NULL; } +#line 3027 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 164: +#line 700 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = ExprAppendKeysymList((yyvsp[-2].expr), (yyvsp[0].keysym)); } +#line 3033 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 165: +#line 702 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = ExprAppendMultiKeysymList((yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 3039 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 166: +#line 704 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = ExprCreateKeysymList((yyvsp[0].keysym)); } +#line 3045 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 167: +#line 706 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = ExprCreateMultiKeysymList((yyvsp[0].expr)); } +#line 3051 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 168: +#line 710 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.expr) = (yyvsp[-1].expr); } +#line 3057 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 169: +#line 714 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { + if (!resolve_keysym((yyvsp[0].str), &(yyval.keysym))) + parser_warn(param, "unrecognized keysym \"%s\"", (yyvsp[0].str)); + free((yyvsp[0].str)); + } +#line 3067 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 170: +#line 719 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.keysym) = XKB_KEY_section; } +#line 3073 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 171: +#line 721 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { + if ((yyvsp[0].ival) < 0) { + parser_warn(param, "unrecognized keysym \"%d\"", (yyvsp[0].ival)); + (yyval.keysym) = XKB_KEY_NoSymbol; + } + else if ((yyvsp[0].ival) < 10) { /* XKB_KEY_0 .. XKB_KEY_9 */ + (yyval.keysym) = XKB_KEY_0 + (xkb_keysym_t) (yyvsp[0].ival); + } + else { + char buf[17]; + snprintf(buf, sizeof(buf), "0x%x", (yyvsp[0].ival)); + if (!resolve_keysym(buf, &(yyval.keysym))) { + parser_warn(param, "unrecognized keysym \"%s\"", buf); + (yyval.keysym) = XKB_KEY_NoSymbol; + } + } + } +#line 3095 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 172: +#line 740 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.ival) = -(yyvsp[0].ival); } +#line 3101 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 173: +#line 741 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.ival) = (yyvsp[0].ival); } +#line 3107 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 174: +#line 744 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.ival) = (yyvsp[0].num); } +#line 3113 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 175: +#line 745 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.ival) = (yyvsp[0].num); } +#line 3119 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 176: +#line 748 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.ival) = 0; } +#line 3125 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 177: +#line 751 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.ival) = (yyvsp[0].num); } +#line 3131 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 178: +#line 754 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.num) = (yyvsp[0].num); } +#line 3137 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 179: +#line 757 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.atom) = xkb_atom_steal(param->ctx, (yyvsp[0].str)); } +#line 3143 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 180: +#line 758 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "default"); } +#line 3149 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 181: +#line 761 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.atom) = xkb_atom_steal(param->ctx, (yyvsp[0].str)); } +#line 3155 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 182: +#line 764 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.str) = (yyvsp[0].str); } +#line 3161 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 183: +#line 765 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.str) = NULL; } +#line 3167 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + case 184: +#line 768 "src/xkbcomp/parser.y" /* yacc.c:1646 */ + { (yyval.str) = (yyvsp[0].str); } +#line 3173 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + break; + + +#line 3177 "src/xkbcomp/parser.c" /* yacc.c:1646 */ + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + /* Now 'shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*--------------------------------------. +| yyerrlab -- here on detecting error. | +`--------------------------------------*/ +yyerrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (param, YY_("syntax error")); +#else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) + { + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (param, yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; + } +# undef YYSYNTAX_ERROR +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval, param); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule whose action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (!yypact_value_is_default (yyn)) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp, param); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#if !defined yyoverflow || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (param, YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval, param); + } + /* Do not reclaim the symbols of the rule whose action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp, param); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + return yyresult; +} +#line 771 "src/xkbcomp/parser.y" /* yacc.c:1906 */ + + +XkbFile * +parse(struct xkb_context *ctx, struct scanner *scanner, const char *map) +{ + int ret; + XkbFile *first = NULL; + struct parser_param param = { + .scanner = scanner, + .ctx = ctx, + .rtrn = NULL, + }; + + /* + * If we got a specific map, we look for it exclusively and return + * immediately upon finding it. Otherwise, we need to get the + * default map. If we find a map marked as default, we return it + * immediately. If there are no maps marked as default, we return + * the first map in the file. + */ + + while ((ret = yyparse(¶m)) == 0 && param.more_maps) { + if (map) { + if (streq_not_null(map, param.rtrn->name)) + return param.rtrn; + else + FreeXkbFile(param.rtrn); + } + else { + if (param.rtrn->flags & MAP_IS_DEFAULT) { + FreeXkbFile(first); + return param.rtrn; + } + else if (!first) { + first = param.rtrn; + } + else { + FreeXkbFile(param.rtrn); + } + } + param.rtrn = NULL; + } + + if (ret != 0) { + FreeXkbFile(first); + return NULL; + } + + if (first) + log_vrb(ctx, 5, + "No map in include statement, but \"%s\" contains several; " + "Using first defined map, \"%s\"\n", + scanner->file_name, first->name); + + return first; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.h new file mode 100644 index 0000000..77afa91 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.h @@ -0,0 +1,219 @@ +/* A Bison parser, made by GNU Bison 3.0.2. */ + +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. + + 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 . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +#ifndef YY__XKBCOMMON_SRC_XKBCOMP_PARSER_H_INCLUDED +# define YY__XKBCOMMON_SRC_XKBCOMP_PARSER_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int _xkbcommon_debug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + END_OF_FILE = 0, + ERROR_TOK = 255, + XKB_KEYMAP = 1, + XKB_KEYCODES = 2, + XKB_TYPES = 3, + XKB_SYMBOLS = 4, + XKB_COMPATMAP = 5, + XKB_GEOMETRY = 6, + XKB_SEMANTICS = 7, + XKB_LAYOUT = 8, + INCLUDE = 10, + OVERRIDE = 11, + AUGMENT = 12, + REPLACE = 13, + ALTERNATE = 14, + VIRTUAL_MODS = 20, + TYPE = 21, + INTERPRET = 22, + ACTION_TOK = 23, + KEY = 24, + ALIAS = 25, + GROUP = 26, + MODIFIER_MAP = 27, + INDICATOR = 28, + SHAPE = 29, + KEYS = 30, + ROW = 31, + SECTION = 32, + OVERLAY = 33, + TEXT = 34, + OUTLINE = 35, + SOLID = 36, + LOGO = 37, + VIRTUAL = 38, + EQUALS = 40, + PLUS = 41, + MINUS = 42, + DIVIDE = 43, + TIMES = 44, + OBRACE = 45, + CBRACE = 46, + OPAREN = 47, + CPAREN = 48, + OBRACKET = 49, + CBRACKET = 50, + DOT = 51, + COMMA = 52, + SEMI = 53, + EXCLAM = 54, + INVERT = 55, + STRING = 60, + INTEGER = 61, + FLOAT = 62, + IDENT = 63, + KEYNAME = 64, + PARTIAL = 70, + DEFAULT = 71, + HIDDEN = 72, + ALPHANUMERIC_KEYS = 73, + MODIFIER_KEYS = 74, + KEYPAD_KEYS = 75, + FUNCTION_KEYS = 76, + ALTERNATE_GROUP = 77 + }; +#endif +/* Tokens. */ +#define END_OF_FILE 0 +#define ERROR_TOK 255 +#define XKB_KEYMAP 1 +#define XKB_KEYCODES 2 +#define XKB_TYPES 3 +#define XKB_SYMBOLS 4 +#define XKB_COMPATMAP 5 +#define XKB_GEOMETRY 6 +#define XKB_SEMANTICS 7 +#define XKB_LAYOUT 8 +#define INCLUDE 10 +#define OVERRIDE 11 +#define AUGMENT 12 +#define REPLACE 13 +#define ALTERNATE 14 +#define VIRTUAL_MODS 20 +#define TYPE 21 +#define INTERPRET 22 +#define ACTION_TOK 23 +#define KEY 24 +#define ALIAS 25 +#define GROUP 26 +#define MODIFIER_MAP 27 +#define INDICATOR 28 +#define SHAPE 29 +#define KEYS 30 +#define ROW 31 +#define SECTION 32 +#define OVERLAY 33 +#define TEXT 34 +#define OUTLINE 35 +#define SOLID 36 +#define LOGO 37 +#define VIRTUAL 38 +#define EQUALS 40 +#define PLUS 41 +#define MINUS 42 +#define DIVIDE 43 +#define TIMES 44 +#define OBRACE 45 +#define CBRACE 46 +#define OPAREN 47 +#define CPAREN 48 +#define OBRACKET 49 +#define CBRACKET 50 +#define DOT 51 +#define COMMA 52 +#define SEMI 53 +#define EXCLAM 54 +#define INVERT 55 +#define STRING 60 +#define INTEGER 61 +#define FLOAT 62 +#define IDENT 63 +#define KEYNAME 64 +#define PARTIAL 70 +#define DEFAULT 71 +#define HIDDEN 72 +#define ALPHANUMERIC_KEYS 73 +#define MODIFIER_KEYS 74 +#define KEYPAD_KEYS 75 +#define FUNCTION_KEYS 76 +#define ALTERNATE_GROUP 77 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 162 "src/xkbcomp/parser.y" /* yacc.c:1909 */ + + int ival; + int64_t num; + enum xkb_file_type file_type; + char *str; + xkb_atom_t atom; + enum merge_mode merge; + enum xkb_map_flags mapFlags; + xkb_keysym_t keysym; + ParseCommon *any; + ExprDef *expr; + VarDef *var; + VModDef *vmod; + InterpDef *interp; + KeyTypeDef *keyType; + SymbolsDef *syms; + ModMapDef *modMask; + GroupCompatDef *groupCompat; + LedMapDef *ledMap; + LedNameDef *ledName; + KeycodeDef *keyCode; + KeyAliasDef *keyAlias; + void *geom; + XkbFile *file; + +#line 210 "src/xkbcomp/parser.h" /* yacc.c:1909 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + + +int _xkbcommon_parse (struct parser_param *param); + +#endif /* !YY__XKBCOMMON_SRC_XKBCOMP_PARSER_H_INCLUDED */ diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.y b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.y new file mode 100644 index 0000000..7ff6f92 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/parser.y @@ -0,0 +1,826 @@ +/************************************************************ + Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. + + Permission to use, copy, modify, and distribute this + software and its documentation for any purpose and without + fee is hereby granted, provided that the above copyright + notice appear in all copies and that both that copyright + notice and this permission notice appear in supporting + documentation, and that the name of Silicon Graphics not be + used in advertising or publicity pertaining to distribution + of the software without specific prior written permission. + Silicon Graphics makes no representation about the suitability + of this software for any purpose. It is provided "as is" + without any express or implied warranty. + + SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + THE USE OR PERFORMANCE OF THIS SOFTWARE. + + ********************************************************/ + +/* + * The parser should work with reasonably recent versions of either + * bison or byacc. So if you make changes, try to make sure it works + * in both! + */ + +%{ +#include "xkbcomp-priv.h" +#include "ast-build.h" +#include "parser-priv.h" +#include "scanner-utils.h" + +struct parser_param { + struct xkb_context *ctx; + struct scanner *scanner; + XkbFile *rtrn; + bool more_maps; +}; + +#define parser_err(param, fmt, ...) \ + scanner_err((param)->scanner, fmt, ##__VA_ARGS__) + +#define parser_warn(param, fmt, ...) \ + scanner_warn((param)->scanner, fmt, ##__VA_ARGS__) + +static void +_xkbcommon_error(struct parser_param *param, const char *msg) +{ + parser_err(param, "%s", msg); +} + +static bool +resolve_keysym(const char *name, xkb_keysym_t *sym_rtrn) +{ + xkb_keysym_t sym; + + if (!name || istreq(name, "any") || istreq(name, "nosymbol")) { + *sym_rtrn = XKB_KEY_NoSymbol; + return true; + } + + if (istreq(name, "none") || istreq(name, "voidsymbol")) { + *sym_rtrn = XKB_KEY_VoidSymbol; + return true; + } + + sym = xkb_keysym_from_name(name, XKB_KEYSYM_NO_FLAGS); + if (sym != XKB_KEY_NoSymbol) { + *sym_rtrn = sym; + return true; + } + + return false; +} + +#define param_scanner param->scanner +%} + +%pure-parser +%lex-param { struct scanner *param_scanner } +%parse-param { struct parser_param *param } + +%token + END_OF_FILE 0 + ERROR_TOK 255 + XKB_KEYMAP 1 + XKB_KEYCODES 2 + XKB_TYPES 3 + XKB_SYMBOLS 4 + XKB_COMPATMAP 5 + XKB_GEOMETRY 6 + XKB_SEMANTICS 7 + XKB_LAYOUT 8 + INCLUDE 10 + OVERRIDE 11 + AUGMENT 12 + REPLACE 13 + ALTERNATE 14 + VIRTUAL_MODS 20 + TYPE 21 + INTERPRET 22 + ACTION_TOK 23 + KEY 24 + ALIAS 25 + GROUP 26 + MODIFIER_MAP 27 + INDICATOR 28 + SHAPE 29 + KEYS 30 + ROW 31 + SECTION 32 + OVERLAY 33 + TEXT 34 + OUTLINE 35 + SOLID 36 + LOGO 37 + VIRTUAL 38 + EQUALS 40 + PLUS 41 + MINUS 42 + DIVIDE 43 + TIMES 44 + OBRACE 45 + CBRACE 46 + OPAREN 47 + CPAREN 48 + OBRACKET 49 + CBRACKET 50 + DOT 51 + COMMA 52 + SEMI 53 + EXCLAM 54 + INVERT 55 + STRING 60 + INTEGER 61 + FLOAT 62 + IDENT 63 + KEYNAME 64 + PARTIAL 70 + DEFAULT 71 + HIDDEN 72 + ALPHANUMERIC_KEYS 73 + MODIFIER_KEYS 74 + KEYPAD_KEYS 75 + FUNCTION_KEYS 76 + ALTERNATE_GROUP 77 + +%right EQUALS +%left PLUS MINUS +%left TIMES DIVIDE +%left EXCLAM INVERT +%left OPAREN + +%start XkbFile + +%union { + int ival; + int64_t num; + enum xkb_file_type file_type; + char *str; + xkb_atom_t atom; + enum merge_mode merge; + enum xkb_map_flags mapFlags; + xkb_keysym_t keysym; + ParseCommon *any; + ExprDef *expr; + VarDef *var; + VModDef *vmod; + InterpDef *interp; + KeyTypeDef *keyType; + SymbolsDef *syms; + ModMapDef *modMask; + GroupCompatDef *groupCompat; + LedMapDef *ledMap; + LedNameDef *ledName; + KeycodeDef *keyCode; + KeyAliasDef *keyAlias; + void *geom; + XkbFile *file; +} + +%type INTEGER FLOAT +%type IDENT STRING +%type KEYNAME +%type KeyCode +%type Number Integer Float SignedNumber DoodadType +%type MergeMode OptMergeMode +%type XkbCompositeType FileType +%type Flag Flags OptFlags +%type MapName OptMapName +%type FieldSpec Ident Element String +%type KeySym +%type DeclList Decl +%type OptExprList ExprList Expr Term Lhs Terminal ArrayInit KeySyms +%type OptKeySymList KeySymList Action ActionList Coord CoordList +%type VarDecl VarDeclList SymbolsBody SymbolsVarDecl +%type VModDecl VModDefList VModDef +%type InterpretDecl InterpretMatch +%type KeyTypeDecl +%type SymbolsDecl +%type ModMapDecl +%type GroupCompatDecl +%type LedMapDecl +%type LedNameDecl +%type KeyNameDecl +%type KeyAliasDecl +%type ShapeDecl SectionDecl SectionBody SectionBodyItem RowBody RowBodyItem +%type Keys Key OverlayDecl OverlayKeyList OverlayKey OutlineList OutlineInList +%type DoodadDecl +%type XkbFile XkbMapConfigList XkbMapConfig +%type XkbCompositeMap + +%destructor { FreeStmt((ParseCommon *) $$); } + + +/* The destructor also runs on the start symbol when the parser *succeeds*. + * The `if` here catches this case. */ +%destructor { if (!param->rtrn) FreeXkbFile($$); } +%destructor { free($$); } + +%% + +/* + * An actual file may contain more than one map. However, if we do things + * in the normal yacc way, i.e. aggregate all of the maps into a list and + * let the caller find the map it wants, we end up scanning and parsing a + * lot of unneeded maps (in the end we always just need one). + * Instead of doing that, we make yyparse return one map at a time, and + * then call it repeatedly until we find the map we need. Once we find it, + * we don't need to parse everything that follows in the file. + * This does mean that if we e.g. always use the first map, the file may + * contain complete garbage after that. But it's worth it. + */ + +XkbFile : XkbCompositeMap + { $$ = param->rtrn = $1; param->more_maps = true; } + | XkbMapConfig + { $$ = param->rtrn = $1; param->more_maps = true; YYACCEPT; } + | END_OF_FILE + { $$ = param->rtrn = NULL; param->more_maps = false; } + ; + +XkbCompositeMap : OptFlags XkbCompositeType OptMapName OBRACE + XkbMapConfigList + CBRACE SEMI + { $$ = XkbFileCreate($2, $3, (ParseCommon *) $5, $1); } + ; + +XkbCompositeType: XKB_KEYMAP { $$ = FILE_TYPE_KEYMAP; } + | XKB_SEMANTICS { $$ = FILE_TYPE_KEYMAP; } + | XKB_LAYOUT { $$ = FILE_TYPE_KEYMAP; } + ; + +XkbMapConfigList : XkbMapConfigList XkbMapConfig + { + if (!$2) + $$ = $1; + else + $$ = (XkbFile *) AppendStmt((ParseCommon *) $1, + (ParseCommon *) $2); + } + | XkbMapConfig + { $$ = $1; } + ; + +XkbMapConfig : OptFlags FileType OptMapName OBRACE + DeclList + CBRACE SEMI + { + if ($2 == FILE_TYPE_GEOMETRY) { + free($3); + FreeStmt($5); + $$ = NULL; + } + else { + $$ = XkbFileCreate($2, $3, $5, $1); + } + } + ; + +FileType : XKB_KEYCODES { $$ = FILE_TYPE_KEYCODES; } + | XKB_TYPES { $$ = FILE_TYPE_TYPES; } + | XKB_COMPATMAP { $$ = FILE_TYPE_COMPAT; } + | XKB_SYMBOLS { $$ = FILE_TYPE_SYMBOLS; } + | XKB_GEOMETRY { $$ = FILE_TYPE_GEOMETRY; } + ; + +OptFlags : Flags { $$ = $1; } + | { $$ = 0; } + ; + +Flags : Flags Flag { $$ = ($1 | $2); } + | Flag { $$ = $1; } + ; + +Flag : PARTIAL { $$ = MAP_IS_PARTIAL; } + | DEFAULT { $$ = MAP_IS_DEFAULT; } + | HIDDEN { $$ = MAP_IS_HIDDEN; } + | ALPHANUMERIC_KEYS { $$ = MAP_HAS_ALPHANUMERIC; } + | MODIFIER_KEYS { $$ = MAP_HAS_MODIFIER; } + | KEYPAD_KEYS { $$ = MAP_HAS_KEYPAD; } + | FUNCTION_KEYS { $$ = MAP_HAS_FN; } + | ALTERNATE_GROUP { $$ = MAP_IS_ALTGR; } + ; + +DeclList : DeclList Decl + { $$ = AppendStmt($1, $2); } + | { $$ = NULL; } + ; + +Decl : OptMergeMode VarDecl + { + $2->merge = $1; + $$ = (ParseCommon *) $2; + } + | OptMergeMode VModDecl + { + $2->merge = $1; + $$ = (ParseCommon *) $2; + } + | OptMergeMode InterpretDecl + { + $2->merge = $1; + $$ = (ParseCommon *) $2; + } + | OptMergeMode KeyNameDecl + { + $2->merge = $1; + $$ = (ParseCommon *) $2; + } + | OptMergeMode KeyAliasDecl + { + $2->merge = $1; + $$ = (ParseCommon *) $2; + } + | OptMergeMode KeyTypeDecl + { + $2->merge = $1; + $$ = (ParseCommon *) $2; + } + | OptMergeMode SymbolsDecl + { + $2->merge = $1; + $$ = (ParseCommon *) $2; + } + | OptMergeMode ModMapDecl + { + $2->merge = $1; + $$ = (ParseCommon *) $2; + } + | OptMergeMode GroupCompatDecl + { + $2->merge = $1; + $$ = (ParseCommon *) $2; + } + | OptMergeMode LedMapDecl + { + $2->merge = $1; + $$ = (ParseCommon *) $2; + } + | OptMergeMode LedNameDecl + { + $2->merge = $1; + $$ = (ParseCommon *) $2; + } + | OptMergeMode ShapeDecl { $$ = NULL; } + | OptMergeMode SectionDecl { $$ = NULL; } + | OptMergeMode DoodadDecl { $$ = NULL; } + | MergeMode STRING + { + $$ = (ParseCommon *) IncludeCreate(param->ctx, $2, $1); + free($2); + } + ; + +VarDecl : Lhs EQUALS Expr SEMI + { $$ = VarCreate($1, $3); } + | Ident SEMI + { $$ = BoolVarCreate($1, true); } + | EXCLAM Ident SEMI + { $$ = BoolVarCreate($2, false); } + ; + +KeyNameDecl : KEYNAME EQUALS KeyCode SEMI + { $$ = KeycodeCreate($1, $3); } + ; + +KeyAliasDecl : ALIAS KEYNAME EQUALS KEYNAME SEMI + { $$ = KeyAliasCreate($2, $4); } + ; + +VModDecl : VIRTUAL_MODS VModDefList SEMI + { $$ = $2; } + ; + +VModDefList : VModDefList COMMA VModDef + { $$ = (VModDef *) AppendStmt((ParseCommon *) $1, + (ParseCommon *) $3); } + | VModDef + { $$ = $1; } + ; + +VModDef : Ident + { $$ = VModCreate($1, NULL); } + | Ident EQUALS Expr + { $$ = VModCreate($1, $3); } + ; + +InterpretDecl : INTERPRET InterpretMatch OBRACE + VarDeclList + CBRACE SEMI + { $2->def = $4; $$ = $2; } + ; + +InterpretMatch : KeySym PLUS Expr + { $$ = InterpCreate($1, $3); } + | KeySym + { $$ = InterpCreate($1, NULL); } + ; + +VarDeclList : VarDeclList VarDecl + { $$ = (VarDef *) AppendStmt((ParseCommon *) $1, + (ParseCommon *) $2); } + | VarDecl + { $$ = $1; } + ; + +KeyTypeDecl : TYPE String OBRACE + VarDeclList + CBRACE SEMI + { $$ = KeyTypeCreate($2, $4); } + ; + +SymbolsDecl : KEY KEYNAME OBRACE + SymbolsBody + CBRACE SEMI + { $$ = SymbolsCreate($2, $4); } + ; + +SymbolsBody : SymbolsBody COMMA SymbolsVarDecl + { $$ = (VarDef *) AppendStmt((ParseCommon *) $1, + (ParseCommon *) $3); } + | SymbolsVarDecl + { $$ = $1; } + | { $$ = NULL; } + ; + +SymbolsVarDecl : Lhs EQUALS Expr { $$ = VarCreate($1, $3); } + | Lhs EQUALS ArrayInit { $$ = VarCreate($1, $3); } + | Ident { $$ = BoolVarCreate($1, true); } + | EXCLAM Ident { $$ = BoolVarCreate($2, false); } + | ArrayInit { $$ = VarCreate(NULL, $1); } + ; + +ArrayInit : OBRACKET OptKeySymList CBRACKET + { $$ = $2; } + | OBRACKET ActionList CBRACKET + { $$ = ExprCreateUnary(EXPR_ACTION_LIST, EXPR_TYPE_ACTION, $2); } + ; + +GroupCompatDecl : GROUP Integer EQUALS Expr SEMI + { $$ = GroupCompatCreate($2, $4); } + ; + +ModMapDecl : MODIFIER_MAP Ident OBRACE ExprList CBRACE SEMI + { $$ = ModMapCreate($2, $4); } + ; + +LedMapDecl: INDICATOR String OBRACE VarDeclList CBRACE SEMI + { $$ = LedMapCreate($2, $4); } + ; + +LedNameDecl: INDICATOR Integer EQUALS Expr SEMI + { $$ = LedNameCreate($2, $4, false); } + | VIRTUAL INDICATOR Integer EQUALS Expr SEMI + { $$ = LedNameCreate($3, $5, true); } + ; + +ShapeDecl : SHAPE String OBRACE OutlineList CBRACE SEMI + { $$ = NULL; } + | SHAPE String OBRACE CoordList CBRACE SEMI + { (void) $4; $$ = NULL; } + ; + +SectionDecl : SECTION String OBRACE SectionBody CBRACE SEMI + { $$ = NULL; } + ; + +SectionBody : SectionBody SectionBodyItem { $$ = NULL;} + | SectionBodyItem { $$ = NULL; } + ; + +SectionBodyItem : ROW OBRACE RowBody CBRACE SEMI + { $$ = NULL; } + | VarDecl + { FreeStmt((ParseCommon *) $1); $$ = NULL; } + | DoodadDecl + { $$ = NULL; } + | LedMapDecl + { FreeStmt((ParseCommon *) $1); $$ = NULL; } + | OverlayDecl + { $$ = NULL; } + ; + +RowBody : RowBody RowBodyItem { $$ = NULL;} + | RowBodyItem { $$ = NULL; } + ; + +RowBodyItem : KEYS OBRACE Keys CBRACE SEMI { $$ = NULL; } + | VarDecl + { FreeStmt((ParseCommon *) $1); $$ = NULL; } + ; + +Keys : Keys COMMA Key { $$ = NULL; } + | Key { $$ = NULL; } + ; + +Key : KEYNAME + { $$ = NULL; } + | OBRACE ExprList CBRACE + { FreeStmt((ParseCommon *) $2); $$ = NULL; } + ; + +OverlayDecl : OVERLAY String OBRACE OverlayKeyList CBRACE SEMI + { $$ = NULL; } + ; + +OverlayKeyList : OverlayKeyList COMMA OverlayKey { $$ = NULL; } + | OverlayKey { $$ = NULL; } + ; + +OverlayKey : KEYNAME EQUALS KEYNAME { $$ = NULL; } + ; + +OutlineList : OutlineList COMMA OutlineInList + { $$ = NULL;} + | OutlineInList + { $$ = NULL; } + ; + +OutlineInList : OBRACE CoordList CBRACE + { (void) $2; $$ = NULL; } + | Ident EQUALS OBRACE CoordList CBRACE + { (void) $4; $$ = NULL; } + | Ident EQUALS Expr + { FreeStmt((ParseCommon *) $3); $$ = NULL; } + ; + +CoordList : CoordList COMMA Coord + { (void) $1; (void) $3; $$ = NULL; } + | Coord + { (void) $1; $$ = NULL; } + ; + +Coord : OBRACKET SignedNumber COMMA SignedNumber CBRACKET + { $$ = NULL; } + ; + +DoodadDecl : DoodadType String OBRACE VarDeclList CBRACE SEMI + { FreeStmt((ParseCommon *) $4); $$ = NULL; } + ; + +DoodadType : TEXT { $$ = 0; } + | OUTLINE { $$ = 0; } + | SOLID { $$ = 0; } + | LOGO { $$ = 0; } + ; + +FieldSpec : Ident { $$ = $1; } + | Element { $$ = $1; } + ; + +Element : ACTION_TOK + { $$ = xkb_atom_intern_literal(param->ctx, "action"); } + | INTERPRET + { $$ = xkb_atom_intern_literal(param->ctx, "interpret"); } + | TYPE + { $$ = xkb_atom_intern_literal(param->ctx, "type"); } + | KEY + { $$ = xkb_atom_intern_literal(param->ctx, "key"); } + | GROUP + { $$ = xkb_atom_intern_literal(param->ctx, "group"); } + | MODIFIER_MAP + {$$ = xkb_atom_intern_literal(param->ctx, "modifier_map");} + | INDICATOR + { $$ = xkb_atom_intern_literal(param->ctx, "indicator"); } + | SHAPE + { $$ = XKB_ATOM_NONE; } + | ROW + { $$ = XKB_ATOM_NONE; } + | SECTION + { $$ = XKB_ATOM_NONE; } + | TEXT + { $$ = XKB_ATOM_NONE; } + ; + +OptMergeMode : MergeMode { $$ = $1; } + | { $$ = MERGE_DEFAULT; } + ; + +MergeMode : INCLUDE { $$ = MERGE_DEFAULT; } + | AUGMENT { $$ = MERGE_AUGMENT; } + | OVERRIDE { $$ = MERGE_OVERRIDE; } + | REPLACE { $$ = MERGE_REPLACE; } + | ALTERNATE + { + /* + * This used to be MERGE_ALT_FORM. This functionality was + * unused and has been removed. + */ + $$ = MERGE_DEFAULT; + } + ; + +OptExprList : ExprList { $$ = $1; } + | { $$ = NULL; } + ; + +ExprList : ExprList COMMA Expr + { $$ = (ExprDef *) AppendStmt((ParseCommon *) $1, + (ParseCommon *) $3); } + | Expr + { $$ = $1; } + ; + +Expr : Expr DIVIDE Expr + { $$ = ExprCreateBinary(EXPR_DIVIDE, $1, $3); } + | Expr PLUS Expr + { $$ = ExprCreateBinary(EXPR_ADD, $1, $3); } + | Expr MINUS Expr + { $$ = ExprCreateBinary(EXPR_SUBTRACT, $1, $3); } + | Expr TIMES Expr + { $$ = ExprCreateBinary(EXPR_MULTIPLY, $1, $3); } + | Lhs EQUALS Expr + { $$ = ExprCreateBinary(EXPR_ASSIGN, $1, $3); } + | Term + { $$ = $1; } + ; + +Term : MINUS Term + { $$ = ExprCreateUnary(EXPR_NEGATE, $2->expr.value_type, $2); } + | PLUS Term + { $$ = ExprCreateUnary(EXPR_UNARY_PLUS, $2->expr.value_type, $2); } + | EXCLAM Term + { $$ = ExprCreateUnary(EXPR_NOT, EXPR_TYPE_BOOLEAN, $2); } + | INVERT Term + { $$ = ExprCreateUnary(EXPR_INVERT, $2->expr.value_type, $2); } + | Lhs + { $$ = $1; } + | FieldSpec OPAREN OptExprList CPAREN %prec OPAREN + { $$ = ExprCreateAction($1, $3); } + | Terminal + { $$ = $1; } + | OPAREN Expr CPAREN + { $$ = $2; } + ; + +ActionList : ActionList COMMA Action + { $$ = (ExprDef *) AppendStmt((ParseCommon *) $1, + (ParseCommon *) $3); } + | Action + { $$ = $1; } + ; + +Action : FieldSpec OPAREN OptExprList CPAREN + { $$ = ExprCreateAction($1, $3); } + ; + +Lhs : FieldSpec + { $$ = ExprCreateIdent($1); } + | FieldSpec DOT FieldSpec + { $$ = ExprCreateFieldRef($1, $3); } + | FieldSpec OBRACKET Expr CBRACKET + { $$ = ExprCreateArrayRef(XKB_ATOM_NONE, $1, $3); } + | FieldSpec DOT FieldSpec OBRACKET Expr CBRACKET + { $$ = ExprCreateArrayRef($1, $3, $5); } + ; + +Terminal : String + { $$ = ExprCreateString($1); } + | Integer + { $$ = ExprCreateInteger($1); } + | Float + { $$ = NULL; } + | KEYNAME + { $$ = ExprCreateKeyName($1); } + ; + +OptKeySymList : KeySymList { $$ = $1; } + | { $$ = NULL; } + ; + +KeySymList : KeySymList COMMA KeySym + { $$ = ExprAppendKeysymList($1, $3); } + | KeySymList COMMA KeySyms + { $$ = ExprAppendMultiKeysymList($1, $3); } + | KeySym + { $$ = ExprCreateKeysymList($1); } + | KeySyms + { $$ = ExprCreateMultiKeysymList($1); } + ; + +KeySyms : OBRACE KeySymList CBRACE + { $$ = $2; } + ; + +KeySym : IDENT + { + if (!resolve_keysym($1, &$$)) + parser_warn(param, "unrecognized keysym \"%s\"", $1); + free($1); + } + | SECTION { $$ = XKB_KEY_section; } + | Integer + { + if ($1 < 0) { + parser_warn(param, "unrecognized keysym \"%d\"", $1); + $$ = XKB_KEY_NoSymbol; + } + else if ($1 < 10) { /* XKB_KEY_0 .. XKB_KEY_9 */ + $$ = XKB_KEY_0 + (xkb_keysym_t) $1; + } + else { + char buf[17]; + snprintf(buf, sizeof(buf), "0x%x", $1); + if (!resolve_keysym(buf, &$$)) { + parser_warn(param, "unrecognized keysym \"%s\"", buf); + $$ = XKB_KEY_NoSymbol; + } + } + } + ; + +SignedNumber : MINUS Number { $$ = -$2; } + | Number { $$ = $1; } + ; + +Number : FLOAT { $$ = $1; } + | INTEGER { $$ = $1; } + ; + +Float : FLOAT { $$ = 0; } + ; + +Integer : INTEGER { $$ = $1; } + ; + +KeyCode : INTEGER { $$ = $1; } + ; + +Ident : IDENT { $$ = xkb_atom_steal(param->ctx, $1); } + | DEFAULT { $$ = xkb_atom_intern_literal(param->ctx, "default"); } + ; + +String : STRING { $$ = xkb_atom_steal(param->ctx, $1); } + ; + +OptMapName : MapName { $$ = $1; } + | { $$ = NULL; } + ; + +MapName : STRING { $$ = $1; } + ; + +%% + +XkbFile * +parse(struct xkb_context *ctx, struct scanner *scanner, const char *map) +{ + int ret; + XkbFile *first = NULL; + struct parser_param param = { + .scanner = scanner, + .ctx = ctx, + .rtrn = NULL, + }; + + /* + * If we got a specific map, we look for it exclusively and return + * immediately upon finding it. Otherwise, we need to get the + * default map. If we find a map marked as default, we return it + * immediately. If there are no maps marked as default, we return + * the first map in the file. + */ + + while ((ret = yyparse(¶m)) == 0 && param.more_maps) { + if (map) { + if (streq_not_null(map, param.rtrn->name)) + return param.rtrn; + else + FreeXkbFile(param.rtrn); + } + else { + if (param.rtrn->flags & MAP_IS_DEFAULT) { + FreeXkbFile(first); + return param.rtrn; + } + else if (!first) { + first = param.rtrn; + } + else { + FreeXkbFile(param.rtrn); + } + } + param.rtrn = NULL; + } + + if (ret != 0) { + FreeXkbFile(first); + return NULL; + } + + if (first) + log_vrb(ctx, 5, + "No map in include statement, but \"%s\" contains several; " + "Using first defined map, \"%s\"\n", + scanner->file_name, first->name); + + return first; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c new file mode 100644 index 0000000..94ac547 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.c @@ -0,0 +1,1037 @@ +/************************************************************ + * Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +/* + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "xkbcomp-priv.h" +#include "rules.h" +#include "include.h" +#include "scanner-utils.h" + +/* Scanner / Lexer */ + +/* Values returned with some tokens, like yylval. */ +union lvalue { + struct sval string; +}; + +enum rules_token { + TOK_END_OF_FILE = 0, + TOK_END_OF_LINE, + TOK_IDENTIFIER, + TOK_GROUP_NAME, + TOK_BANG, + TOK_EQUALS, + TOK_STAR, + TOK_ERROR +}; + +static inline bool +is_ident(char ch) +{ + return is_graph(ch) && ch != '\\'; +} + +static enum rules_token +lex(struct scanner *s, union lvalue *val) +{ +skip_more_whitespace_and_comments: + /* Skip spaces. */ + while (chr(s, ' ') || chr(s, '\t')); + + /* Skip comments. */ + if (lit(s, "//")) { + skip_to_eol(s); + } + + /* New line. */ + if (eol(s)) { + while (eol(s)) next(s); + return TOK_END_OF_LINE; + } + + /* Escaped line continuation. */ + if (chr(s, '\\')) { + if (!eol(s)) { + scanner_err(s, "illegal new line escape; must appear at end of line"); + return TOK_ERROR; + } + next(s); + goto skip_more_whitespace_and_comments; + } + + /* See if we're done. */ + if (eof(s)) return TOK_END_OF_FILE; + + /* New token. */ + s->token_line = s->line; + s->token_column = s->column; + + /* Operators and punctuation. */ + if (chr(s, '!')) return TOK_BANG; + if (chr(s, '=')) return TOK_EQUALS; + if (chr(s, '*')) return TOK_STAR; + + /* Group name. */ + if (chr(s, '$')) { + val->string.start = s->s + s->pos; + val->string.len = 0; + while (is_ident(peek(s))) { + next(s); + val->string.len++; + } + if (val->string.len == 0) { + scanner_err(s, "unexpected character after \'$\'; expected name"); + return TOK_ERROR; + } + return TOK_GROUP_NAME; + } + + /* Identifier. */ + if (is_ident(peek(s))) { + val->string.start = s->s + s->pos; + val->string.len = 0; + while (is_ident(peek(s))) { + next(s); + val->string.len++; + } + return TOK_IDENTIFIER; + } + + scanner_err(s, "unrecognized token"); + return TOK_ERROR; +} + +/***====================================================================***/ + +enum rules_mlvo { + MLVO_MODEL, + MLVO_LAYOUT, + MLVO_VARIANT, + MLVO_OPTION, + _MLVO_NUM_ENTRIES +}; + +#define SVAL_LIT(literal) { literal, sizeof(literal) - 1 } + +static const struct sval rules_mlvo_svals[_MLVO_NUM_ENTRIES] = { + [MLVO_MODEL] = SVAL_LIT("model"), + [MLVO_LAYOUT] = SVAL_LIT("layout"), + [MLVO_VARIANT] = SVAL_LIT("variant"), + [MLVO_OPTION] = SVAL_LIT("option"), +}; + +enum rules_kccgst { + KCCGST_KEYCODES, + KCCGST_TYPES, + KCCGST_COMPAT, + KCCGST_SYMBOLS, + KCCGST_GEOMETRY, + _KCCGST_NUM_ENTRIES +}; + +static const struct sval rules_kccgst_svals[_KCCGST_NUM_ENTRIES] = { + [KCCGST_KEYCODES] = SVAL_LIT("keycodes"), + [KCCGST_TYPES] = SVAL_LIT("types"), + [KCCGST_COMPAT] = SVAL_LIT("compat"), + [KCCGST_SYMBOLS] = SVAL_LIT("symbols"), + [KCCGST_GEOMETRY] = SVAL_LIT("geometry"), +}; + +/* We use this to keep score whether an mlvo was matched or not; if not, + * we warn the user that his preference was ignored. */ +struct matched_sval { + struct sval sval; + bool matched; +}; +typedef darray(struct matched_sval) darray_matched_sval; + +/* + * A broken-down version of xkb_rule_names (without the rules, + * obviously). + */ +struct rule_names { + struct matched_sval model; + darray_matched_sval layouts; + darray_matched_sval variants; + darray_matched_sval options; +}; + +struct group { + struct sval name; + darray_sval elements; +}; + +struct mapping { + int mlvo_at_pos[_MLVO_NUM_ENTRIES]; + unsigned int num_mlvo; + unsigned int defined_mlvo_mask; + xkb_layout_index_t layout_idx, variant_idx; + int kccgst_at_pos[_KCCGST_NUM_ENTRIES]; + unsigned int num_kccgst; + unsigned int defined_kccgst_mask; + bool skip; +}; + +enum mlvo_match_type { + MLVO_MATCH_NORMAL = 0, + MLVO_MATCH_WILDCARD, + MLVO_MATCH_GROUP, +}; + +struct rule { + struct sval mlvo_value_at_pos[_MLVO_NUM_ENTRIES]; + enum mlvo_match_type match_type_at_pos[_MLVO_NUM_ENTRIES]; + unsigned int num_mlvo_values; + struct sval kccgst_value_at_pos[_KCCGST_NUM_ENTRIES]; + unsigned int num_kccgst_values; + bool skip; +}; + +/* + * This is the main object used to match a given RMLVO against a rules + * file and aggragate the results in a KcCGST. It goes through a simple + * matching state machine, with tokens as transitions (see + * matcher_match()). + */ +struct matcher { + struct xkb_context *ctx; + /* Input.*/ + struct rule_names rmlvo; + union lvalue val; + struct scanner scanner; + darray(struct group) groups; + /* Current mapping. */ + struct mapping mapping; + /* Current rule. */ + struct rule rule; + /* Output. */ + darray_char kccgst[_KCCGST_NUM_ENTRIES]; +}; + +static struct sval +strip_spaces(struct sval v) +{ + while (v.len > 0 && is_space(v.start[0])) { v.len--; v.start++; } + while (v.len > 0 && is_space(v.start[v.len - 1])) v.len--; + return v; +} + +static darray_matched_sval +split_comma_separated_mlvo(const char *s) +{ + darray_matched_sval arr = darray_new(); + + /* + * Make sure the array returned by this function always includes at + * least one value, e.g. "" -> { "" } and "," -> { "", "" }. + */ + + if (!s) { + struct matched_sval val = { .sval = { NULL, 0 } }; + darray_append(arr, val); + return arr; + } + + while (true) { + struct matched_sval val = { .sval = { s, 0 } }; + while (*s != '\0' && *s != ',') { s++; val.sval.len++; } + val.sval = strip_spaces(val.sval); + darray_append(arr, val); + if (*s == '\0') break; + if (*s == ',') s++; + } + + return arr; +} + +static struct matcher * +matcher_new(struct xkb_context *ctx, + const struct xkb_rule_names *rmlvo) +{ + struct matcher *m = calloc(1, sizeof(*m)); + if (!m) + return NULL; + + m->ctx = ctx; + m->rmlvo.model.sval.start = rmlvo->model; + m->rmlvo.model.sval.len = strlen_safe(rmlvo->model); + m->rmlvo.layouts = split_comma_separated_mlvo(rmlvo->layout); + m->rmlvo.variants = split_comma_separated_mlvo(rmlvo->variant); + m->rmlvo.options = split_comma_separated_mlvo(rmlvo->options); + + return m; +} + +static void +matcher_free(struct matcher *m) +{ + struct group *group; + if (!m) + return; + darray_free(m->rmlvo.layouts); + darray_free(m->rmlvo.variants); + darray_free(m->rmlvo.options); + darray_foreach(group, m->groups) + darray_free(group->elements); + for (int i = 0; i < _KCCGST_NUM_ENTRIES; i++) + darray_free(m->kccgst[i]); + darray_free(m->groups); + free(m); +} + +#define matcher_err(matcher, fmt, ...) \ + scanner_err(&(matcher)->scanner, fmt, ## __VA_ARGS__) + +static void +matcher_group_start_new(struct matcher *m, struct sval name) +{ + struct group group = { .name = name, .elements = darray_new() }; + darray_append(m->groups, group); +} + +static void +matcher_group_add_element(struct matcher *m, struct sval element) +{ + darray_append(darray_item(m->groups, darray_size(m->groups) - 1).elements, + element); +} + +static void +matcher_mapping_start_new(struct matcher *m) +{ + for (unsigned i = 0; i < _MLVO_NUM_ENTRIES; i++) + m->mapping.mlvo_at_pos[i] = -1; + for (unsigned i = 0; i < _KCCGST_NUM_ENTRIES; i++) + m->mapping.kccgst_at_pos[i] = -1; + m->mapping.layout_idx = m->mapping.variant_idx = XKB_LAYOUT_INVALID; + m->mapping.num_mlvo = m->mapping.num_kccgst = 0; + m->mapping.defined_mlvo_mask = 0; + m->mapping.defined_kccgst_mask = 0; + m->mapping.skip = false; +} + +static int +extract_layout_index(const char *s, size_t max_len, xkb_layout_index_t *out) +{ + /* This function is pretty stupid, but works for now. */ + *out = XKB_LAYOUT_INVALID; + if (max_len < 3) + return -1; + if (s[0] != '[' || !is_digit(s[1]) || s[2] != ']') + return -1; + if (s[1] - '0' < 1 || s[1] - '0' > XKB_MAX_GROUPS) + return -1; + /* To zero-based index. */ + *out = s[1] - '0' - 1; + return 3; +} + +static void +matcher_mapping_set_mlvo(struct matcher *m, struct sval ident) +{ + enum rules_mlvo mlvo; + struct sval mlvo_sval; + + for (mlvo = 0; mlvo < _MLVO_NUM_ENTRIES; mlvo++) { + mlvo_sval = rules_mlvo_svals[mlvo]; + + if (svaleq_prefix(mlvo_sval, ident)) + break; + } + + /* Not found. */ + if (mlvo >= _MLVO_NUM_ENTRIES) { + matcher_err(m, "invalid mapping: %.*s is not a valid value here; ignoring rule set", + ident.len, ident.start); + m->mapping.skip = true; + return; + } + + if (m->mapping.defined_mlvo_mask & (1u << mlvo)) { + matcher_err(m, "invalid mapping: %.*s appears twice on the same line; ignoring rule set", + mlvo_sval.len, mlvo_sval.start); + m->mapping.skip = true; + return; + } + + /* If there are leftovers still, it must be an index. */ + if (mlvo_sval.len < ident.len) { + xkb_layout_index_t idx; + int consumed = extract_layout_index(ident.start + mlvo_sval.len, + ident.len - mlvo_sval.len, &idx); + if ((int) (ident.len - mlvo_sval.len) != consumed) { + matcher_err(m, "invalid mapping: \"%.*s\" may only be followed by a valid group index; ignoring rule set", + mlvo_sval.len, mlvo_sval.start); + m->mapping.skip = true; + return; + } + + if (mlvo == MLVO_LAYOUT) { + m->mapping.layout_idx = idx; + } + else if (mlvo == MLVO_VARIANT) { + m->mapping.variant_idx = idx; + } + else { + matcher_err(m, "invalid mapping: \"%.*s\" cannot be followed by a group index; ignoring rule set", + mlvo_sval.len, mlvo_sval.start); + m->mapping.skip = true; + return; + } + } + + m->mapping.mlvo_at_pos[m->mapping.num_mlvo] = mlvo; + m->mapping.defined_mlvo_mask |= 1u << mlvo; + m->mapping.num_mlvo++; +} + +static void +matcher_mapping_set_kccgst(struct matcher *m, struct sval ident) +{ + enum rules_kccgst kccgst; + struct sval kccgst_sval; + + for (kccgst = 0; kccgst < _KCCGST_NUM_ENTRIES; kccgst++) { + kccgst_sval = rules_kccgst_svals[kccgst]; + + if (svaleq(rules_kccgst_svals[kccgst], ident)) + break; + } + + /* Not found. */ + if (kccgst >= _KCCGST_NUM_ENTRIES) { + matcher_err(m, "invalid mapping: %.*s is not a valid value here; ignoring rule set", + ident.len, ident.start); + m->mapping.skip = true; + return; + } + + if (m->mapping.defined_kccgst_mask & (1u << kccgst)) { + matcher_err(m, "invalid mapping: %.*s appears twice on the same line; ignoring rule set", + kccgst_sval.len, kccgst_sval.start); + m->mapping.skip = true; + return; + } + + m->mapping.kccgst_at_pos[m->mapping.num_kccgst] = kccgst; + m->mapping.defined_kccgst_mask |= 1u << kccgst; + m->mapping.num_kccgst++; +} + +static void +matcher_mapping_verify(struct matcher *m) +{ + if (m->mapping.num_mlvo == 0) { + matcher_err(m, "invalid mapping: must have at least one value on the left hand side; ignoring rule set"); + goto skip; + } + + if (m->mapping.num_kccgst == 0) { + matcher_err(m, "invalid mapping: must have at least one value on the right hand side; ignoring rule set"); + goto skip; + } + + /* + * This following is very stupid, but this is how it works. + * See the "Notes" section in the overview above. + */ + + if (m->mapping.defined_mlvo_mask & (1u << MLVO_LAYOUT)) { + if (m->mapping.layout_idx == XKB_LAYOUT_INVALID) { + if (darray_size(m->rmlvo.layouts) > 1) + goto skip; + } + else { + if (darray_size(m->rmlvo.layouts) == 1 || + m->mapping.layout_idx >= darray_size(m->rmlvo.layouts)) + goto skip; + } + } + + if (m->mapping.defined_mlvo_mask & (1u << MLVO_VARIANT)) { + if (m->mapping.variant_idx == XKB_LAYOUT_INVALID) { + if (darray_size(m->rmlvo.variants) > 1) + goto skip; + } + else { + if (darray_size(m->rmlvo.variants) == 1 || + m->mapping.variant_idx >= darray_size(m->rmlvo.variants)) + goto skip; + } + } + + return; + +skip: + m->mapping.skip = true; +} + +static void +matcher_rule_start_new(struct matcher *m) +{ + memset(&m->rule, 0, sizeof(m->rule)); + m->rule.skip = m->mapping.skip; +} + +static void +matcher_rule_set_mlvo_common(struct matcher *m, struct sval ident, + enum mlvo_match_type match_type) +{ + if (m->rule.num_mlvo_values + 1 > m->mapping.num_mlvo) { + matcher_err(m, "invalid rule: has more values than the mapping line; ignoring rule"); + m->rule.skip = true; + return; + } + m->rule.match_type_at_pos[m->rule.num_mlvo_values] = match_type; + m->rule.mlvo_value_at_pos[m->rule.num_mlvo_values] = ident; + m->rule.num_mlvo_values++; +} + +static void +matcher_rule_set_mlvo_wildcard(struct matcher *m) +{ + struct sval dummy = { NULL, 0 }; + matcher_rule_set_mlvo_common(m, dummy, MLVO_MATCH_WILDCARD); +} + +static void +matcher_rule_set_mlvo_group(struct matcher *m, struct sval ident) +{ + matcher_rule_set_mlvo_common(m, ident, MLVO_MATCH_GROUP); +} + +static void +matcher_rule_set_mlvo(struct matcher *m, struct sval ident) +{ + matcher_rule_set_mlvo_common(m, ident, MLVO_MATCH_NORMAL); +} + +static void +matcher_rule_set_kccgst(struct matcher *m, struct sval ident) +{ + if (m->rule.num_kccgst_values + 1 > m->mapping.num_kccgst) { + matcher_err(m, "invalid rule: has more values than the mapping line; ignoring rule"); + m->rule.skip = true; + return; + } + m->rule.kccgst_value_at_pos[m->rule.num_kccgst_values] = ident; + m->rule.num_kccgst_values++; +} + +static bool +match_group(struct matcher *m, struct sval group_name, struct sval to) +{ + struct group *group; + struct sval *element; + bool found = false; + + darray_foreach(group, m->groups) { + if (svaleq(group->name, group_name)) { + found = true; + break; + } + } + + if (!found) { + /* + * rules/evdev intentionally uses some undeclared group names + * in rules (e.g. commented group definitions which may be + * uncommented if needed). So we continue silently. + */ + return false; + } + + darray_foreach(element, group->elements) + if (svaleq(to, *element)) + return true; + + return false; +} + +static bool +match_value(struct matcher *m, struct sval val, struct sval to, + enum mlvo_match_type match_type) +{ + if (match_type == MLVO_MATCH_WILDCARD) + return true; + if (match_type == MLVO_MATCH_GROUP) + return match_group(m, val, to); + return svaleq(val, to); +} + +static bool +match_value_and_mark(struct matcher *m, struct sval val, + struct matched_sval *to, enum mlvo_match_type match_type) +{ + bool matched = match_value(m, val, to->sval, match_type); + if (matched) + to->matched = true; + return matched; +} + +/* + * This function performs %-expansion on @value (see overview above), + * and appends the result to @to. + */ +static bool +append_expanded_kccgst_value(struct matcher *m, darray_char *to, + struct sval value) +{ + const char *s = value.start; + darray_char expanded = darray_new(); + char ch; + bool expanded_plus, to_plus; + + /* + * Some ugly hand-lexing here, but going through the scanner is more + * trouble than it's worth, and the format is ugly on its own merit. + */ + for (unsigned i = 0; i < value.len; ) { + enum rules_mlvo mlv; + xkb_layout_index_t idx; + char pfx, sfx; + struct matched_sval *expanded_value; + + /* Check if that's a start of an expansion. */ + if (s[i] != '%') { + /* Just a normal character. */ + darray_appends_nullterminate(expanded, &s[i++], 1); + continue; + } + if (++i >= value.len) goto error; + + pfx = sfx = 0; + + /* Check for prefix. */ + if (s[i] == '(' || s[i] == '+' || s[i] == '|' || + s[i] == '_' || s[i] == '-') { + pfx = s[i]; + if (s[i] == '(') sfx = ')'; + if (++i >= value.len) goto error; + } + + /* Mandatory model/layout/variant specifier. */ + switch (s[i++]) { + case 'm': mlv = MLVO_MODEL; break; + case 'l': mlv = MLVO_LAYOUT; break; + case 'v': mlv = MLVO_VARIANT; break; + default: goto error; + } + + /* Check for index. */ + idx = XKB_LAYOUT_INVALID; + if (i < value.len && s[i] == '[') { + int consumed; + + if (mlv != MLVO_LAYOUT && mlv != MLVO_VARIANT) { + matcher_err(m, "invalid index in %%-expansion; may only index layout or variant"); + goto error; + } + + consumed = extract_layout_index(s + i, value.len - i, &idx); + if (consumed == -1) goto error; + i += consumed; + } + + /* Check for suffix, if there supposed to be one. */ + if (sfx != 0) { + if (i >= value.len) goto error; + if (s[i++] != sfx) goto error; + } + + /* Get the expanded value. */ + expanded_value = NULL; + + if (mlv == MLVO_LAYOUT) { + if (idx != XKB_LAYOUT_INVALID && + idx < darray_size(m->rmlvo.layouts) && + darray_size(m->rmlvo.layouts) > 1) + expanded_value = &darray_item(m->rmlvo.layouts, idx); + else if (idx == XKB_LAYOUT_INVALID && + darray_size(m->rmlvo.layouts) == 1) + expanded_value = &darray_item(m->rmlvo.layouts, 0); + } + else if (mlv == MLVO_VARIANT) { + if (idx != XKB_LAYOUT_INVALID && + idx < darray_size(m->rmlvo.variants) && + darray_size(m->rmlvo.variants) > 1) + expanded_value = &darray_item(m->rmlvo.variants, idx); + else if (idx == XKB_LAYOUT_INVALID && + darray_size(m->rmlvo.variants) == 1) + expanded_value = &darray_item(m->rmlvo.variants, 0); + } + else if (mlv == MLVO_MODEL) { + expanded_value = &m->rmlvo.model; + } + + /* If we didn't get one, skip silently. */ + if (!expanded_value || expanded_value->sval.len == 0) + continue; + + if (pfx != 0) + darray_appends_nullterminate(expanded, &pfx, 1); + darray_appends_nullterminate(expanded, + expanded_value->sval.start, + expanded_value->sval.len); + if (sfx != 0) + darray_appends_nullterminate(expanded, &sfx, 1); + expanded_value->matched = true; + } + + /* + * Appending bar to foo -> foo (not an error if this happens) + * Appending +bar to foo -> foo+bar + * Appending bar to +foo -> bar+foo + * Appending +bar to +foo -> +foo+bar + */ + + ch = (darray_empty(expanded) ? '\0' : darray_item(expanded, 0)); + expanded_plus = (ch == '+' || ch == '|'); + ch = (darray_empty(*to) ? '\0' : darray_item(*to, 0)); + to_plus = (ch == '+' || ch == '|'); + + if (expanded_plus || darray_empty(*to)) + darray_appends_nullterminate(*to, expanded.item, expanded.size); + else if (to_plus) + darray_prepends_nullterminate(*to, expanded.item, expanded.size); + + darray_free(expanded); + return true; + +error: + darray_free(expanded); + matcher_err(m, "invalid %%-expansion in value; not used"); + return false; +} + +static void +matcher_rule_verify(struct matcher *m) +{ + if (m->rule.num_mlvo_values != m->mapping.num_mlvo || + m->rule.num_kccgst_values != m->mapping.num_kccgst) { + matcher_err(m, "invalid rule: must have same number of values as mapping line; ignoring rule"); + m->rule.skip = true; + } +} + +static void +matcher_rule_apply_if_matches(struct matcher *m) +{ + for (unsigned i = 0; i < m->mapping.num_mlvo; i++) { + enum rules_mlvo mlvo = m->mapping.mlvo_at_pos[i]; + struct sval value = m->rule.mlvo_value_at_pos[i]; + enum mlvo_match_type match_type = m->rule.match_type_at_pos[i]; + struct matched_sval *to; + bool matched = false; + + if (mlvo == MLVO_MODEL) { + to = &m->rmlvo.model; + matched = match_value_and_mark(m, value, to, match_type); + } + else if (mlvo == MLVO_LAYOUT) { + xkb_layout_index_t idx = m->mapping.layout_idx; + idx = (idx == XKB_LAYOUT_INVALID ? 0 : idx); + to = &darray_item(m->rmlvo.layouts, idx); + matched = match_value_and_mark(m, value, to, match_type); + } + else if (mlvo == MLVO_VARIANT) { + xkb_layout_index_t idx = m->mapping.layout_idx; + idx = (idx == XKB_LAYOUT_INVALID ? 0 : idx); + to = &darray_item(m->rmlvo.variants, idx); + matched = match_value_and_mark(m, value, to, match_type); + } + else if (mlvo == MLVO_OPTION) { + darray_foreach(to, m->rmlvo.options) { + matched = match_value_and_mark(m, value, to, match_type); + if (matched) + break; + } + } + + if (!matched) + return; + } + + for (unsigned i = 0; i < m->mapping.num_kccgst; i++) { + enum rules_kccgst kccgst = m->mapping.kccgst_at_pos[i]; + struct sval value = m->rule.kccgst_value_at_pos[i]; + append_expanded_kccgst_value(m, &m->kccgst[kccgst], value); + } + + /* + * If a rule matches in a rule set, the rest of the set should be + * skipped. However, rule sets matching against options may contain + * several legitimate rules, so they are processed entirely. + */ + if (!(m->mapping.defined_mlvo_mask & (1 << MLVO_OPTION))) + m->mapping.skip = true; +} + +static enum rules_token +gettok(struct matcher *m) +{ + return lex(&m->scanner, &m->val); +} + +static bool +matcher_match(struct matcher *m, const char *string, size_t len, + const char *file_name, struct xkb_component_names *out) +{ + enum rules_token tok; + struct matched_sval *mval; + + if (!m) + return false; + + scanner_init(&m->scanner, m->ctx, string, len, file_name, NULL); + +initial: + switch (tok = gettok(m)) { + case TOK_BANG: + goto bang; + case TOK_END_OF_LINE: + goto initial; + case TOK_END_OF_FILE: + goto finish; + default: + goto unexpected; + } + +bang: + switch (tok = gettok(m)) { + case TOK_GROUP_NAME: + matcher_group_start_new(m, m->val.string); + goto group_name; + case TOK_IDENTIFIER: + matcher_mapping_start_new(m); + matcher_mapping_set_mlvo(m, m->val.string); + goto mapping_mlvo; + default: + goto unexpected; + } + +group_name: + switch (tok = gettok(m)) { + case TOK_EQUALS: + goto group_element; + default: + goto unexpected; + } + +group_element: + switch (tok = gettok(m)) { + case TOK_IDENTIFIER: + matcher_group_add_element(m, m->val.string); + goto group_element; + case TOK_END_OF_LINE: + goto initial; + default: + goto unexpected; + } + +mapping_mlvo: + switch (tok = gettok(m)) { + case TOK_IDENTIFIER: + if (!m->mapping.skip) + matcher_mapping_set_mlvo(m, m->val.string); + goto mapping_mlvo; + case TOK_EQUALS: + goto mapping_kccgst; + default: + goto unexpected; + } + +mapping_kccgst: + switch (tok = gettok(m)) { + case TOK_IDENTIFIER: + if (!m->mapping.skip) + matcher_mapping_set_kccgst(m, m->val.string); + goto mapping_kccgst; + case TOK_END_OF_LINE: + if (!m->mapping.skip) + matcher_mapping_verify(m); + goto rule_mlvo_first; + default: + goto unexpected; + } + +rule_mlvo_first: + switch (tok = gettok(m)) { + case TOK_BANG: + goto bang; + case TOK_END_OF_LINE: + goto rule_mlvo_first; + case TOK_END_OF_FILE: + goto finish; + default: + matcher_rule_start_new(m); + goto rule_mlvo_no_tok; + } + +rule_mlvo: + tok = gettok(m); +rule_mlvo_no_tok: + switch (tok) { + case TOK_IDENTIFIER: + if (!m->rule.skip) + matcher_rule_set_mlvo(m, m->val.string); + goto rule_mlvo; + case TOK_STAR: + if (!m->rule.skip) + matcher_rule_set_mlvo_wildcard(m); + goto rule_mlvo; + case TOK_GROUP_NAME: + if (!m->rule.skip) + matcher_rule_set_mlvo_group(m, m->val.string); + goto rule_mlvo; + case TOK_EQUALS: + goto rule_kccgst; + default: + goto unexpected; + } + +rule_kccgst: + switch (tok = gettok(m)) { + case TOK_IDENTIFIER: + if (!m->rule.skip) + matcher_rule_set_kccgst(m, m->val.string); + goto rule_kccgst; + case TOK_END_OF_LINE: + if (!m->rule.skip) + matcher_rule_verify(m); + if (!m->rule.skip) + matcher_rule_apply_if_matches(m); + goto rule_mlvo_first; + default: + goto unexpected; + } + +unexpected: + switch (tok) { + case TOK_ERROR: + goto error; + default: + goto state_error; + } + +finish: + if (darray_empty(m->kccgst[KCCGST_KEYCODES]) || + darray_empty(m->kccgst[KCCGST_TYPES]) || + darray_empty(m->kccgst[KCCGST_COMPAT]) || + /* darray_empty(m->kccgst[KCCGST_GEOMETRY]) || */ + darray_empty(m->kccgst[KCCGST_SYMBOLS])) + goto error; + + darray_steal(m->kccgst[KCCGST_KEYCODES], &out->keycodes, NULL); + darray_steal(m->kccgst[KCCGST_TYPES], &out->types, NULL); + darray_steal(m->kccgst[KCCGST_COMPAT], &out->compat, NULL); + darray_steal(m->kccgst[KCCGST_SYMBOLS], &out->symbols, NULL); + darray_free(m->kccgst[KCCGST_GEOMETRY]); + + + mval = &m->rmlvo.model; + if (!mval->matched && mval->sval.len > 0) + log_err(m->ctx, "Unrecognized RMLVO model \"%.*s\" was ignored\n", + mval->sval.len, mval->sval.start); + darray_foreach(mval, m->rmlvo.layouts) + if (!mval->matched && mval->sval.len > 0) + log_err(m->ctx, "Unrecognized RMLVO layout \"%.*s\" was ignored\n", + mval->sval.len, mval->sval.start); + darray_foreach(mval, m->rmlvo.variants) + if (!mval->matched && mval->sval.len > 0) + log_err(m->ctx, "Unrecognized RMLVO variant \"%.*s\" was ignored\n", + mval->sval.len, mval->sval.start); + darray_foreach(mval, m->rmlvo.options) + if (!mval->matched && mval->sval.len > 0) + log_err(m->ctx, "Unrecognized RMLVO option \"%.*s\" was ignored\n", + mval->sval.len, mval->sval.start); + + return true; + +state_error: + matcher_err(m, "unexpected token"); +error: + return false; +} + +bool +xkb_components_from_rules(struct xkb_context *ctx, + const struct xkb_rule_names *rmlvo, + struct xkb_component_names *out) +{ + bool ret = false; + FILE *file; + char *path; + const char *string; + size_t size; + struct matcher *matcher; + + file = FindFileInXkbPath(ctx, rmlvo->rules, FILE_TYPE_RULES, &path); + if (!file) + goto err_out; + + ret = map_file(file, &string, &size); + if (!ret) { + log_err(ctx, "Couldn't read rules file \"%s\": %s\n", + path, strerror(errno)); + goto err_file; + } + + matcher = matcher_new(ctx, rmlvo); + ret = matcher_match(matcher, string, size, path, out); + if (!ret) + log_err(ctx, "No components returned from XKB rules \"%s\"\n", path); + matcher_free(matcher); + + unmap_file(string, size); +err_file: + free(path); + fclose(file); +err_out: + return ret; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.h new file mode 100644 index 0000000..5381b15 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/rules.h @@ -0,0 +1,32 @@ +/* + * Copyright © 2009 Dan Nicholson + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef XKBCOMP_RULES_H +#define XKBCOMP_RULES_H + +bool +xkb_components_from_rules(struct xkb_context *ctx, + const struct xkb_rule_names *rmlvo, + struct xkb_component_names *out); + +#endif diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c new file mode 100644 index 0000000..ba8f4e9 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/scanner.c @@ -0,0 +1,208 @@ +/* + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "xkbcomp-priv.h" +#include "parser-priv.h" +#include "scanner-utils.h" + +static bool +number(struct scanner *s, int64_t *out, int *out_tok) +{ + bool is_float = false, is_hex = false; + const char *start = s->s + s->pos; + char *end; + + if (lit(s, "0x")) { + while (is_xdigit(peek(s))) next(s); + is_hex = true; + } + else { + while (is_digit(peek(s))) next(s); + is_float = chr(s, '.'); + while (is_digit(peek(s))) next(s); + } + if (s->s + s->pos == start) + return false; + + errno = 0; + if (is_hex) + *out = strtoul(start, &end, 16); + else if (is_float) + *out = strtod(start, &end); + else + *out = strtoul(start, &end, 10); + if (errno != 0 || s->s + s->pos != end) + *out_tok = ERROR_TOK; + else + *out_tok = (is_float ? FLOAT : INTEGER); + return true; +} + +int +_xkbcommon_lex(YYSTYPE *yylval, struct scanner *s) +{ + int tok; + +skip_more_whitespace_and_comments: + /* Skip spaces. */ + while (is_space(peek(s))) next(s); + + /* Skip comments. */ + if (lit(s, "//") || chr(s, '#')) { + skip_to_eol(s); + goto skip_more_whitespace_and_comments; + } + + /* See if we're done. */ + if (eof(s)) return END_OF_FILE; + + /* New token. */ + s->token_line = s->line; + s->token_column = s->column; + s->buf_pos = 0; + + /* String literal. */ + if (chr(s, '\"')) { + while (!eof(s) && !eol(s) && peek(s) != '\"') { + if (chr(s, '\\')) { + uint8_t o; + if (chr(s, '\\')) buf_append(s, '\\'); + else if (chr(s, 'n')) buf_append(s, '\n'); + else if (chr(s, 't')) buf_append(s, '\t'); + else if (chr(s, 'r')) buf_append(s, '\r'); + else if (chr(s, 'b')) buf_append(s, '\b'); + else if (chr(s, 'f')) buf_append(s, '\f'); + else if (chr(s, 'v')) buf_append(s, '\v'); + else if (chr(s, 'e')) buf_append(s, '\033'); + else if (oct(s, &o)) buf_append(s, (char) o); + else { + scanner_warn(s, "unknown escape sequence in string literal"); + /* Ignore. */ + } + } else { + buf_append(s, next(s)); + } + } + if (!buf_append(s, '\0') || !chr(s, '\"')) { + scanner_err(s, "unterminated string literal"); + return ERROR_TOK; + } + yylval->str = strdup(s->buf); + if (!yylval->str) + return ERROR_TOK; + return STRING; + } + + /* Key name literal. */ + if (chr(s, '<')) { + while (is_graph(peek(s)) && peek(s) != '>') + buf_append(s, next(s)); + if (!buf_append(s, '\0') || !chr(s, '>')) { + scanner_err(s, "unterminated key name literal"); + return ERROR_TOK; + } + /* Empty key name literals are allowed. */ + yylval->atom = xkb_atom_intern(s->ctx, s->buf, s->buf_pos - 1); + return KEYNAME; + } + + /* Operators and punctuation. */ + if (chr(s, ';')) return SEMI; + if (chr(s, '{')) return OBRACE; + if (chr(s, '}')) return CBRACE; + if (chr(s, '=')) return EQUALS; + if (chr(s, '[')) return OBRACKET; + if (chr(s, ']')) return CBRACKET; + if (chr(s, '(')) return OPAREN; + if (chr(s, ')')) return CPAREN; + if (chr(s, '.')) return DOT; + if (chr(s, ',')) return COMMA; + if (chr(s, '+')) return PLUS; + if (chr(s, '-')) return MINUS; + if (chr(s, '*')) return TIMES; + if (chr(s, '/')) return DIVIDE; + if (chr(s, '!')) return EXCLAM; + if (chr(s, '~')) return INVERT; + + /* Identifier. */ + if (is_alpha(peek(s)) || peek(s) == '_') { + s->buf_pos = 0; + while (is_alnum(peek(s)) || peek(s) == '_') + buf_append(s, next(s)); + if (!buf_append(s, '\0')) { + scanner_err(s, "identifier too long"); + return ERROR_TOK; + } + + /* Keyword. */ + tok = keyword_to_token(s->buf, s->buf_pos - 1); + if (tok != -1) return tok; + + yylval->str = strdup(s->buf); + if (!yylval->str) + return ERROR_TOK; + return IDENT; + } + + /* Number literal (hexadecimal / decimal / float). */ + if (number(s, &yylval->num, &tok)) { + if (tok == ERROR_TOK) { + scanner_err(s, "malformed number literal"); + return ERROR_TOK; + } + return tok; + } + + scanner_err(s, "unrecognized token"); + return ERROR_TOK; +} + +XkbFile * +XkbParseString(struct xkb_context *ctx, const char *string, size_t len, + const char *file_name, const char *map) +{ + struct scanner scanner; + scanner_init(&scanner, ctx, string, len, file_name, NULL); + return parse(ctx, &scanner, map); +} + +XkbFile * +XkbParseFile(struct xkb_context *ctx, FILE *file, + const char *file_name, const char *map) +{ + bool ok; + XkbFile *xkb_file; + const char *string; + size_t size; + + ok = map_file(file, &string, &size); + if (!ok) { + log_err(ctx, "Couldn't read XKB file %s: %s\n", + file_name, strerror(errno)); + return NULL; + } + + xkb_file = XkbParseString(ctx, string, size, file_name, map); + unmap_file(string, size); + return xkb_file; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c new file mode 100644 index 0000000..bff7fb3 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/symbols.c @@ -0,0 +1,1608 @@ +/************************************************************ + * Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +/* + * Copyright © 2012 Intel Corporation + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Daniel Stone + * Ran Benita + */ + +#include "xkbcomp-priv.h" +#include "text.h" +#include "expr.h" +#include "action.h" +#include "vmod.h" +#include "include.h" +#include "keysym.h" + +enum key_repeat { + KEY_REPEAT_UNDEFINED = 0, + KEY_REPEAT_YES = 1, + KEY_REPEAT_NO = 2, +}; + +enum group_field { + GROUP_FIELD_SYMS = (1 << 0), + GROUP_FIELD_ACTS = (1 << 1), + GROUP_FIELD_TYPE = (1 << 2), +}; + +enum key_field { + KEY_FIELD_REPEAT = (1 << 0), + KEY_FIELD_DEFAULT_TYPE = (1 << 1), + KEY_FIELD_GROUPINFO = (1 << 2), + KEY_FIELD_VMODMAP = (1 << 3), +}; + +typedef struct { + enum group_field defined; + darray(struct xkb_level) levels; + xkb_atom_t type; +} GroupInfo; + +typedef struct { + enum key_field defined; + enum merge_mode merge; + + xkb_atom_t name; + + darray(GroupInfo) groups; + + enum key_repeat repeat; + xkb_mod_mask_t vmodmap; + xkb_atom_t default_type; + + enum xkb_range_exceed_type out_of_range_group_action; + xkb_layout_index_t out_of_range_group_number; +} KeyInfo; + +static void +ClearLevelInfo(struct xkb_level *leveli) +{ + if (leveli->num_syms > 1) + free(leveli->u.syms); +} + +static void +InitGroupInfo(GroupInfo *groupi) +{ + memset(groupi, 0, sizeof(*groupi)); +} + +static void +ClearGroupInfo(GroupInfo *groupi) +{ + struct xkb_level *leveli; + darray_foreach(leveli, groupi->levels) + ClearLevelInfo(leveli); + darray_free(groupi->levels); +} + +static void +CopyGroupInfo(GroupInfo *to, const GroupInfo *from) +{ + to->defined = from->defined; + to->type = from->type; + darray_init(to->levels); + darray_copy(to->levels, from->levels); + for (xkb_level_index_t j = 0; j < darray_size(to->levels); j++) + if (darray_item(from->levels, j).num_syms > 1) + darray_item(to->levels, j).u.syms = + memdup(darray_item(from->levels, j).u.syms, + darray_item(from->levels, j).num_syms, + sizeof(xkb_keysym_t)); +} + +static void +InitKeyInfo(struct xkb_context *ctx, KeyInfo *keyi) +{ + memset(keyi, 0, sizeof(*keyi)); + keyi->merge = MERGE_OVERRIDE; + keyi->name = xkb_atom_intern_literal(ctx, "*"); + keyi->out_of_range_group_action = RANGE_WRAP; +} + +static void +ClearKeyInfo(KeyInfo *keyi) +{ + GroupInfo *groupi; + darray_foreach(groupi, keyi->groups) + ClearGroupInfo(groupi); + darray_free(keyi->groups); +} + +/***====================================================================***/ + +typedef struct { + enum merge_mode merge; + bool haveSymbol; + xkb_mod_index_t modifier; + union { + xkb_atom_t keyName; + xkb_keysym_t keySym; + } u; +} ModMapEntry; + +typedef struct { + char *name; /* e.g. pc+us+inet(evdev) */ + int errorCount; + enum merge_mode merge; + xkb_layout_index_t explicit_group; + darray(KeyInfo) keys; + KeyInfo default_key; + ActionsInfo *actions; + darray(xkb_atom_t) group_names; + darray(ModMapEntry) modmaps; + struct xkb_mod_set mods; + + struct xkb_context *ctx; + /* Needed for AddKeySymbols. */ + const struct xkb_keymap *keymap; +} SymbolsInfo; + +static void +InitSymbolsInfo(SymbolsInfo *info, const struct xkb_keymap *keymap, + ActionsInfo *actions, const struct xkb_mod_set *mods) +{ + memset(info, 0, sizeof(*info)); + info->ctx = keymap->ctx; + info->keymap = keymap; + info->merge = MERGE_OVERRIDE; + InitKeyInfo(keymap->ctx, &info->default_key); + info->actions = actions; + info->mods = *mods; + info->explicit_group = XKB_LAYOUT_INVALID; +} + +static void +ClearSymbolsInfo(SymbolsInfo *info) +{ + KeyInfo *keyi; + free(info->name); + darray_foreach(keyi, info->keys) + ClearKeyInfo(keyi); + darray_free(info->keys); + darray_free(info->group_names); + darray_free(info->modmaps); + ClearKeyInfo(&info->default_key); +} + +static const char * +KeyInfoText(SymbolsInfo *info, KeyInfo *keyi) +{ + return KeyNameText(info->ctx, keyi->name); +} + +static bool +LevelsSameSyms(const struct xkb_level *a, const struct xkb_level *b) +{ + if (a->num_syms != b->num_syms) + return false; + if (a->num_syms <= 1) + return a->u.sym == b->u.sym; + else + return memcmp(a->u.syms, b->u.syms, + sizeof(*a->u.syms) * a->num_syms) == 0; + +} + +static bool +MergeGroups(SymbolsInfo *info, GroupInfo *into, GroupInfo *from, bool clobber, + bool report, xkb_layout_index_t group, xkb_atom_t key_name) +{ + xkb_level_index_t i, levels_in_both; + struct xkb_level *level; + + /* First find the type of the merged group. */ + if (into->type != from->type) { + if (from->type == XKB_ATOM_NONE) { + } + else if (into->type == XKB_ATOM_NONE) { + into->type = from->type; + } + else { + xkb_atom_t use = (clobber ? from->type : into->type); + xkb_atom_t ignore = (clobber ? into->type : from->type); + + if (report) + log_warn(info->ctx, + "Multiple definitions for group %d type of key %s; " + "Using %s, ignoring %s\n", + group + 1, KeyNameText(info->ctx, key_name), + xkb_atom_text(info->ctx, use), + xkb_atom_text(info->ctx, ignore)); + + into->type = use; + } + } + into->defined |= (from->defined & GROUP_FIELD_TYPE); + + /* Now look at the levels. */ + + if (darray_empty(from->levels)) { + InitGroupInfo(from); + return true; + } + + if (darray_empty(into->levels)) { + from->type = into->type; + *into = *from; + InitGroupInfo(from); + return true; + } + + /* Merge the actions and syms. */ + levels_in_both = MIN(darray_size(into->levels), darray_size(from->levels)); + for (i = 0; i < levels_in_both; i++) { + struct xkb_level *intoLevel = &darray_item(into->levels, i); + struct xkb_level *fromLevel = &darray_item(from->levels, i); + + if (fromLevel->action.type == ACTION_TYPE_NONE) { + } + else if (intoLevel->action.type == ACTION_TYPE_NONE) { + intoLevel->action = fromLevel->action; + } + else { + union xkb_action *use, *ignore; + use = (clobber ? &fromLevel->action : &intoLevel->action); + ignore = (clobber ? &intoLevel->action : &fromLevel->action); + + if (report) + log_warn(info->ctx, + "Multiple actions for level %d/group %u on key %s; " + "Using %s, ignoring %s\n", + i + 1, group + 1, KeyNameText(info->ctx, key_name), + ActionTypeText(use->type), + ActionTypeText(ignore->type)); + + intoLevel->action = *use; + } + + if (fromLevel->num_syms == 0) { + } + else if (intoLevel->num_syms == 0) { + intoLevel->num_syms = fromLevel->num_syms; + if (fromLevel->num_syms > 1) + intoLevel->u.syms = fromLevel->u.syms; + else + intoLevel->u.sym = fromLevel->u.sym; + fromLevel->num_syms = 0; + } + else if (!LevelsSameSyms(fromLevel, intoLevel)) { + if (report) + log_warn(info->ctx, + "Multiple symbols for level %d/group %u on key %s; " + "Using %s, ignoring %s\n", + i + 1, group + 1, KeyNameText(info->ctx, key_name), + (clobber ? "from" : "to"), + (clobber ? "to" : "from")); + + if (clobber) { + ClearLevelInfo(intoLevel); + intoLevel->num_syms = fromLevel->num_syms; + if (fromLevel->num_syms > 1) + intoLevel->u.syms = fromLevel->u.syms; + else + intoLevel->u.sym = fromLevel->u.sym; + fromLevel->num_syms = 0; + } + } + } + /* If @from has extra levels, get them as well. */ + darray_foreach_from(level, from->levels, levels_in_both) { + darray_append(into->levels, *level); + level->num_syms = 0; + } + into->defined |= (from->defined & GROUP_FIELD_ACTS); + into->defined |= (from->defined & GROUP_FIELD_SYMS); + + return true; +} + +static bool +UseNewKeyField(enum key_field field, enum key_field old, enum key_field new, + bool clobber, bool report, enum key_field *collide) +{ + if (!(old & field)) + return (new & field); + + if (new & field) { + if (report) + *collide |= field; + + if (clobber) + return true; + } + + return false; +} + +static bool +MergeKeys(SymbolsInfo *info, KeyInfo *into, KeyInfo *from, bool same_file) +{ + xkb_layout_index_t i; + xkb_layout_index_t groups_in_both; + enum key_field collide = 0; + const int verbosity = xkb_context_get_log_verbosity(info->ctx); + const bool clobber = (from->merge != MERGE_AUGMENT); + const bool report = (same_file && verbosity > 0) || verbosity > 9; + + if (from->merge == MERGE_REPLACE) { + ClearKeyInfo(into); + *into = *from; + InitKeyInfo(info->ctx, from); + return true; + } + + groups_in_both = MIN(darray_size(into->groups), darray_size(from->groups)); + for (i = 0; i < groups_in_both; i++) + MergeGroups(info, + &darray_item(into->groups, i), + &darray_item(from->groups, i), + clobber, report, i, into->name); + /* If @from has extra groups, just move them to @into. */ + for (i = groups_in_both; i < darray_size(from->groups); i++) { + darray_append(into->groups, darray_item(from->groups, i)); + InitGroupInfo(&darray_item(from->groups, i)); + } + + if (UseNewKeyField(KEY_FIELD_VMODMAP, into->defined, from->defined, + clobber, report, &collide)) { + into->vmodmap = from->vmodmap; + into->defined |= KEY_FIELD_VMODMAP; + } + if (UseNewKeyField(KEY_FIELD_REPEAT, into->defined, from->defined, + clobber, report, &collide)) { + into->repeat = from->repeat; + into->defined |= KEY_FIELD_REPEAT; + } + if (UseNewKeyField(KEY_FIELD_DEFAULT_TYPE, into->defined, from->defined, + clobber, report, &collide)) { + into->default_type = from->default_type; + into->defined |= KEY_FIELD_DEFAULT_TYPE; + } + if (UseNewKeyField(KEY_FIELD_GROUPINFO, into->defined, from->defined, + clobber, report, &collide)) { + into->out_of_range_group_action = from->out_of_range_group_action; + into->out_of_range_group_number = from->out_of_range_group_number; + into->defined |= KEY_FIELD_GROUPINFO; + } + + if (collide) + log_warn(info->ctx, + "Symbol map for key %s redefined; " + "Using %s definition for conflicting fields\n", + KeyNameText(info->ctx, into->name), + (clobber ? "first" : "last")); + + ClearKeyInfo(from); + InitKeyInfo(info->ctx, from); + return true; +} + +/* TODO: Make it so this function doesn't need the entire keymap. */ +static bool +AddKeySymbols(SymbolsInfo *info, KeyInfo *keyi, bool same_file) +{ + xkb_atom_t real_name; + KeyInfo *iter; + + /* + * Don't keep aliases in the keys array; this guarantees that + * searching for keys to merge with by straight comparison (see the + * following loop) is enough, and we won't get multiple KeyInfo's + * for the same key because of aliases. + */ + real_name = XkbResolveKeyAlias(info->keymap, keyi->name); + if (real_name != XKB_ATOM_NONE) + keyi->name = real_name; + + darray_foreach(iter, info->keys) + if (iter->name == keyi->name) + return MergeKeys(info, iter, keyi, same_file); + + darray_append(info->keys, *keyi); + InitKeyInfo(info->ctx, keyi); + return true; +} + +static bool +AddModMapEntry(SymbolsInfo *info, ModMapEntry *new) +{ + ModMapEntry *old; + bool clobber = (new->merge != MERGE_AUGMENT); + + darray_foreach(old, info->modmaps) { + xkb_mod_index_t use, ignore; + + if ((new->haveSymbol != old->haveSymbol) || + (new->haveSymbol && new->u.keySym != old->u.keySym) || + (!new->haveSymbol && new->u.keyName != old->u.keyName)) + continue; + + if (new->modifier == old->modifier) + return true; + + use = (clobber ? new->modifier : old->modifier); + ignore = (clobber ? old->modifier : new->modifier); + + if (new->haveSymbol) + log_err(info->ctx, + "Symbol \"%s\" added to modifier map for multiple modifiers; " + "Using %s, ignoring %s\n", + KeysymText(info->ctx, new->u.keySym), + ModIndexText(info->ctx, &info->mods, use), + ModIndexText(info->ctx, &info->mods, ignore)); + else + log_err(info->ctx, + "Key \"%s\" added to modifier map for multiple modifiers; " + "Using %s, ignoring %s\n", + KeyNameText(info->ctx, new->u.keyName), + ModIndexText(info->ctx, &info->mods, use), + ModIndexText(info->ctx, &info->mods, ignore)); + + old->modifier = use; + return true; + } + + darray_append(info->modmaps, *new); + return true; +} + +/***====================================================================***/ + +static void +MergeIncludedSymbols(SymbolsInfo *into, SymbolsInfo *from, + enum merge_mode merge) +{ + KeyInfo *keyi; + ModMapEntry *mm; + xkb_atom_t *group_name; + xkb_layout_index_t group_names_in_both; + + if (from->errorCount > 0) { + into->errorCount += from->errorCount; + return; + } + + into->mods = from->mods; + + if (into->name == NULL) { + into->name = from->name; + from->name = NULL; + } + + group_names_in_both = MIN(darray_size(into->group_names), + darray_size(from->group_names)); + for (xkb_layout_index_t i = 0; i < group_names_in_both; i++) { + if (!darray_item(from->group_names, i)) + continue; + + if (merge == MERGE_AUGMENT && darray_item(into->group_names, i)) + continue; + + darray_item(into->group_names, i) = darray_item(from->group_names, i); + } + /* If @from has more, get them as well. */ + darray_foreach_from(group_name, from->group_names, group_names_in_both) + darray_append(into->group_names, *group_name); + + if (darray_empty(into->keys)) { + into->keys = from->keys; + darray_init(from->keys); + } + else { + darray_foreach(keyi, from->keys) { + keyi->merge = (merge == MERGE_DEFAULT ? keyi->merge : merge); + if (!AddKeySymbols(into, keyi, false)) + into->errorCount++; + } + } + + if (darray_empty(into->modmaps)) { + into->modmaps = from->modmaps; + darray_init(from->modmaps); + } + else { + darray_foreach(mm, from->modmaps) { + mm->merge = (merge == MERGE_DEFAULT ? mm->merge : merge); + if (!AddModMapEntry(into, mm)) + into->errorCount++; + } + } +} + +static void +HandleSymbolsFile(SymbolsInfo *info, XkbFile *file, enum merge_mode merge); + +static bool +HandleIncludeSymbols(SymbolsInfo *info, IncludeStmt *include) +{ + SymbolsInfo included; + + InitSymbolsInfo(&included, info->keymap, info->actions, &info->mods); + included.name = include->stmt; + include->stmt = NULL; + + for (IncludeStmt *stmt = include; stmt; stmt = stmt->next_incl) { + SymbolsInfo next_incl; + XkbFile *file; + + file = ProcessIncludeFile(info->ctx, stmt, FILE_TYPE_SYMBOLS); + if (!file) { + info->errorCount += 10; + ClearSymbolsInfo(&included); + return false; + } + + InitSymbolsInfo(&next_incl, info->keymap, info->actions, + &included.mods); + if (stmt->modifier) { + next_incl.explicit_group = atoi(stmt->modifier) - 1; + if (next_incl.explicit_group >= XKB_MAX_GROUPS) { + log_err(info->ctx, + "Cannot set explicit group to %d - must be between 1..%d; " + "Ignoring group number\n", + next_incl.explicit_group + 1, XKB_MAX_GROUPS); + next_incl.explicit_group = info->explicit_group; + } + } + else { + next_incl.explicit_group = info->explicit_group; + } + + HandleSymbolsFile(&next_incl, file, MERGE_OVERRIDE); + + MergeIncludedSymbols(&included, &next_incl, stmt->merge); + + ClearSymbolsInfo(&next_incl); + FreeXkbFile(file); + } + + MergeIncludedSymbols(info, &included, include->merge); + ClearSymbolsInfo(&included); + + return (info->errorCount == 0); +} + +#define SYMBOLS 1 +#define ACTIONS 2 + +static bool +GetGroupIndex(SymbolsInfo *info, KeyInfo *keyi, ExprDef *arrayNdx, + unsigned what, xkb_layout_index_t *ndx_rtrn) +{ + const char *name = (what == SYMBOLS ? "symbols" : "actions"); + + if (arrayNdx == NULL) { + xkb_layout_index_t i; + GroupInfo *groupi; + enum group_field field = (what == SYMBOLS ? + GROUP_FIELD_SYMS : GROUP_FIELD_ACTS); + + darray_enumerate(i, groupi, keyi->groups) { + if (!(groupi->defined & field)) { + *ndx_rtrn = i; + return true; + } + } + + if (i >= XKB_MAX_GROUPS) { + log_err(info->ctx, + "Too many groups of %s for key %s (max %u); " + "Ignoring %s defined for extra groups\n", + name, KeyInfoText(info, keyi), XKB_MAX_GROUPS, name); + return false; + } + + darray_resize0(keyi->groups, darray_size(keyi->groups) + 1); + *ndx_rtrn = darray_size(keyi->groups) - 1; + return true; + } + + if (!ExprResolveGroup(info->ctx, arrayNdx, ndx_rtrn)) { + log_err(info->ctx, + "Illegal group index for %s of key %s\n" + "Definition with non-integer array index ignored\n", + name, KeyInfoText(info, keyi)); + return false; + } + + (*ndx_rtrn)--; + if (*ndx_rtrn >= darray_size(keyi->groups)) + darray_resize0(keyi->groups, *ndx_rtrn + 1); + + return true; +} + +static bool +AddSymbolsToKey(SymbolsInfo *info, KeyInfo *keyi, ExprDef *arrayNdx, + ExprDef *value) +{ + xkb_layout_index_t ndx; + GroupInfo *groupi; + xkb_level_index_t nLevels; + + if (!GetGroupIndex(info, keyi, arrayNdx, SYMBOLS, &ndx)) + return false; + + groupi = &darray_item(keyi->groups, ndx); + + if (value == NULL) { + groupi->defined |= GROUP_FIELD_SYMS; + return true; + } + + if (value->expr.op != EXPR_KEYSYM_LIST) { + log_err(info->ctx, + "Expected a list of symbols, found %s; " + "Ignoring symbols for group %u of %s\n", + expr_op_type_to_string(value->expr.op), ndx + 1, + KeyInfoText(info, keyi)); + return false; + } + + if (groupi->defined & GROUP_FIELD_SYMS) { + log_err(info->ctx, + "Symbols for key %s, group %u already defined; " + "Ignoring duplicate definition\n", + KeyInfoText(info, keyi), ndx + 1); + return false; + } + + nLevels = darray_size(value->keysym_list.symsMapIndex); + if (darray_size(groupi->levels) < nLevels) + darray_resize0(groupi->levels, nLevels); + + groupi->defined |= GROUP_FIELD_SYMS; + + for (xkb_level_index_t i = 0; i < nLevels; i++) { + unsigned int sym_index; + struct xkb_level *leveli = &darray_item(groupi->levels, i); + + sym_index = darray_item(value->keysym_list.symsMapIndex, i); + leveli->num_syms = darray_item(value->keysym_list.symsNumEntries, i); + if (leveli->num_syms > 1) + leveli->u.syms = calloc(leveli->num_syms, sizeof(*leveli->u.syms)); + + for (unsigned j = 0; j < leveli->num_syms; j++) { + xkb_keysym_t keysym = darray_item(value->keysym_list.syms, + sym_index + j); + + if (leveli->num_syms == 1) { + if (keysym == XKB_KEY_NoSymbol) + leveli->num_syms = 0; + else + leveli->u.sym = keysym; + } + else if (leveli->num_syms > 1) { + leveli->u.syms[j] = keysym; + } + } + } + + return true; +} + +static bool +AddActionsToKey(SymbolsInfo *info, KeyInfo *keyi, ExprDef *arrayNdx, + ExprDef *value) +{ + xkb_layout_index_t ndx; + GroupInfo *groupi; + unsigned int nActs; + ExprDef *act; + + if (!GetGroupIndex(info, keyi, arrayNdx, ACTIONS, &ndx)) + return false; + + groupi = &darray_item(keyi->groups, ndx); + + if (value == NULL) { + groupi->defined |= GROUP_FIELD_ACTS; + return true; + } + + if (value->expr.op != EXPR_ACTION_LIST) { + log_wsgo(info->ctx, + "Bad expression type (%d) for action list value; " + "Ignoring actions for group %u of %s\n", + value->expr.op, ndx, KeyInfoText(info, keyi)); + return false; + } + + if (groupi->defined & GROUP_FIELD_ACTS) { + log_wsgo(info->ctx, + "Actions for key %s, group %u already defined\n", + KeyInfoText(info, keyi), ndx); + return false; + } + + nActs = 0; + for (act = value->unary.child; act; act = (ExprDef *) act->common.next) + nActs++; + + if (darray_size(groupi->levels) < nActs) + darray_resize0(groupi->levels, nActs); + + groupi->defined |= GROUP_FIELD_ACTS; + + act = value->unary.child; + for (unsigned i = 0; i < nActs; i++) { + union xkb_action *toAct = &darray_item(groupi->levels, i).action; + + if (!HandleActionDef(info->ctx, info->actions, &info->mods, act, toAct)) + log_err(info->ctx, + "Illegal action definition for %s; " + "Action for group %u/level %u ignored\n", + KeyInfoText(info, keyi), ndx + 1, i + 1); + + act = (ExprDef *) act->common.next; + } + + return true; +} + +static const LookupEntry repeatEntries[] = { + { "true", KEY_REPEAT_YES }, + { "yes", KEY_REPEAT_YES }, + { "on", KEY_REPEAT_YES }, + { "false", KEY_REPEAT_NO }, + { "no", KEY_REPEAT_NO }, + { "off", KEY_REPEAT_NO }, + { "default", KEY_REPEAT_UNDEFINED }, + { NULL, 0 } +}; + +static bool +SetSymbolsField(SymbolsInfo *info, KeyInfo *keyi, const char *field, + ExprDef *arrayNdx, ExprDef *value) +{ + if (istreq(field, "type")) { + xkb_layout_index_t ndx; + xkb_atom_t val; + + if (!ExprResolveString(info->ctx, value, &val)) { + log_err(info->ctx, + "The type field of a key symbol map must be a string; " + "Ignoring illegal type definition\n"); + return false; + } + + if (!arrayNdx) { + keyi->default_type = val; + keyi->defined |= KEY_FIELD_DEFAULT_TYPE; + } + else if (!ExprResolveGroup(info->ctx, arrayNdx, &ndx)) { + log_err(info->ctx, + "Illegal group index for type of key %s; " + "Definition with non-integer array index ignored\n", + KeyInfoText(info, keyi)); + return false; + } + else { + ndx--; + if (ndx >= darray_size(keyi->groups)) + darray_resize0(keyi->groups, ndx + 1); + darray_item(keyi->groups, ndx).type = val; + darray_item(keyi->groups, ndx).defined |= GROUP_FIELD_TYPE; + } + } + else if (istreq(field, "symbols")) { + return AddSymbolsToKey(info, keyi, arrayNdx, value); + } + else if (istreq(field, "actions")) { + return AddActionsToKey(info, keyi, arrayNdx, value); + } + else if (istreq(field, "vmods") || + istreq(field, "virtualmods") || + istreq(field, "virtualmodifiers")) { + xkb_mod_mask_t mask; + + if (!ExprResolveModMask(info->ctx, value, MOD_VIRT, &info->mods, + &mask)) { + log_err(info->ctx, + "Expected a virtual modifier mask, found %s; " + "Ignoring virtual modifiers definition for key %s\n", + expr_op_type_to_string(value->expr.op), + KeyInfoText(info, keyi)); + return false; + } + + keyi->vmodmap = mask; + keyi->defined |= KEY_FIELD_VMODMAP; + } + else if (istreq(field, "locking") || + istreq(field, "lock") || + istreq(field, "locks")) { + log_vrb(info->ctx, 1, + "Key behaviors not supported; " + "Ignoring locking specification for key %s\n", + KeyInfoText(info, keyi)); + } + else if (istreq(field, "radiogroup") || + istreq(field, "permanentradiogroup") || + istreq(field, "allownone")) { + log_vrb(info->ctx, 1, + "Radio groups not supported; " + "Ignoring radio group specification for key %s\n", + KeyInfoText(info, keyi)); + } + else if (istreq_prefix("overlay", field) || + istreq_prefix("permanentoverlay", field)) { + log_vrb(info->ctx, 1, + "Overlays not supported; " + "Ignoring overlay specification for key %s\n", + KeyInfoText(info, keyi)); + } + else if (istreq(field, "repeating") || + istreq(field, "repeats") || + istreq(field, "repeat")) { + unsigned int val; + + if (!ExprResolveEnum(info->ctx, value, &val, repeatEntries)) { + log_err(info->ctx, + "Illegal repeat setting for %s; " + "Non-boolean repeat setting ignored\n", + KeyInfoText(info, keyi)); + return false; + } + + keyi->repeat = val; + keyi->defined |= KEY_FIELD_REPEAT; + } + else if (istreq(field, "groupswrap") || + istreq(field, "wrapgroups")) { + bool set; + + if (!ExprResolveBoolean(info->ctx, value, &set)) { + log_err(info->ctx, + "Illegal groupsWrap setting for %s; " + "Non-boolean value ignored\n", + KeyInfoText(info, keyi)); + return false; + } + + keyi->out_of_range_group_action = (set ? RANGE_WRAP : RANGE_SATURATE); + keyi->defined |= KEY_FIELD_GROUPINFO; + } + else if (istreq(field, "groupsclamp") || + istreq(field, "clampgroups")) { + bool set; + + if (!ExprResolveBoolean(info->ctx, value, &set)) { + log_err(info->ctx, + "Illegal groupsClamp setting for %s; " + "Non-boolean value ignored\n", + KeyInfoText(info, keyi)); + return false; + } + + keyi->out_of_range_group_action = (set ? RANGE_SATURATE : RANGE_WRAP); + keyi->defined |= KEY_FIELD_GROUPINFO; + } + else if (istreq(field, "groupsredirect") || + istreq(field, "redirectgroups")) { + xkb_layout_index_t grp; + + if (!ExprResolveGroup(info->ctx, value, &grp)) { + log_err(info->ctx, + "Illegal group index for redirect of key %s; " + "Definition with non-integer group ignored\n", + KeyInfoText(info, keyi)); + return false; + } + + keyi->out_of_range_group_action = RANGE_REDIRECT; + keyi->out_of_range_group_number = grp - 1; + keyi->defined |= KEY_FIELD_GROUPINFO; + } + else { + log_err(info->ctx, + "Unknown field %s in a symbol interpretation; " + "Definition ignored\n", + field); + return false; + } + + return true; +} + +static bool +SetGroupName(SymbolsInfo *info, ExprDef *arrayNdx, ExprDef *value) +{ + xkb_layout_index_t group, group_to_use; + xkb_atom_t name; + + if (!arrayNdx) { + log_vrb(info->ctx, 1, + "You must specify an index when specifying a group name; " + "Group name definition without array subscript ignored\n"); + return false; + } + + if (!ExprResolveGroup(info->ctx, arrayNdx, &group)) { + log_err(info->ctx, + "Illegal index in group name definition; " + "Definition with non-integer array index ignored\n"); + return false; + } + + if (!ExprResolveString(info->ctx, value, &name)) { + log_err(info->ctx, + "Group name must be a string; " + "Illegal name for group %d ignored\n", group); + return false; + } + + if (info->explicit_group == XKB_LAYOUT_INVALID) { + group_to_use = group - 1; + } + else if (group - 1 == 0) { + group_to_use = info->explicit_group; + } + else { + log_warn(info->ctx, + "An explicit group was specified for the '%s' map, " + "but it provides a name for a group other than Group1 (%d); " + "Ignoring group name '%s'\n", + info->name, group, + xkb_atom_text(info->ctx, name)); + return false; + } + + if (group_to_use >= darray_size(info->group_names)) + darray_resize0(info->group_names, group_to_use + 1); + darray_item(info->group_names, group_to_use) = name; + + return true; +} + +static bool +HandleGlobalVar(SymbolsInfo *info, VarDef *stmt) +{ + const char *elem, *field; + ExprDef *arrayNdx; + bool ret; + + if (!ExprResolveLhs(info->ctx, stmt->name, &elem, &field, &arrayNdx)) + return false; + + if (elem && istreq(elem, "key")) { + ret = SetSymbolsField(info, &info->default_key, field, arrayNdx, + stmt->value); + } + else if (!elem && (istreq(field, "name") || + istreq(field, "groupname"))) { + ret = SetGroupName(info, arrayNdx, stmt->value); + } + else if (!elem && (istreq(field, "groupswrap") || + istreq(field, "wrapgroups"))) { + log_err(info->ctx, + "Global \"groupswrap\" not supported; Ignored\n"); + ret = true; + } + else if (!elem && (istreq(field, "groupsclamp") || + istreq(field, "clampgroups"))) { + log_err(info->ctx, + "Global \"groupsclamp\" not supported; Ignored\n"); + ret = true; + } + else if (!elem && (istreq(field, "groupsredirect") || + istreq(field, "redirectgroups"))) { + log_err(info->ctx, + "Global \"groupsredirect\" not supported; Ignored\n"); + ret = true; + } + else if (!elem && istreq(field, "allownone")) { + log_err(info->ctx, + "Radio groups not supported; " + "Ignoring \"allownone\" specification\n"); + ret = true; + } + else { + ret = SetActionField(info->ctx, info->actions, &info->mods, + elem, field, arrayNdx, stmt->value); + } + + return ret; +} + +static bool +HandleSymbolsBody(SymbolsInfo *info, VarDef *def, KeyInfo *keyi) +{ + bool ok = true; + const char *elem, *field; + ExprDef *arrayNdx; + + for (; def; def = (VarDef *) def->common.next) { + if (def->name && def->name->expr.op == EXPR_FIELD_REF) { + log_err(info->ctx, + "Cannot set a global default value from within a key statement; " + "Move statements to the global file scope\n"); + continue; + } + + if (!def->name) { + if (!def->value || def->value->expr.op == EXPR_KEYSYM_LIST) + field = "symbols"; + else + field = "actions"; + arrayNdx = NULL; + } + else { + ok = ExprResolveLhs(info->ctx, def->name, &elem, &field, + &arrayNdx); + } + + if (ok) + ok = SetSymbolsField(info, keyi, field, arrayNdx, def->value); + } + + return ok; +} + +static bool +SetExplicitGroup(SymbolsInfo *info, KeyInfo *keyi) +{ + xkb_layout_index_t i; + GroupInfo *groupi; + bool warn = false; + + if (info->explicit_group == XKB_LAYOUT_INVALID) + return true; + + darray_enumerate_from(i, groupi, keyi->groups, 1) { + if (groupi->defined) { + warn = true; + ClearGroupInfo(groupi); + InitGroupInfo(groupi); + } + } + + if (warn) + log_warn(info->ctx, + "For the map %s an explicit group specified, " + "but key %s has more than one group defined; " + "All groups except first one will be ignored\n", + info->name, KeyInfoText(info, keyi)); + + darray_resize0(keyi->groups, info->explicit_group + 1); + if (info->explicit_group > 0) { + darray_item(keyi->groups, info->explicit_group) = + darray_item(keyi->groups, 0); + InitGroupInfo(&darray_item(keyi->groups, 0)); + } + + return true; +} + +static bool +HandleSymbolsDef(SymbolsInfo *info, SymbolsDef *stmt) +{ + KeyInfo keyi; + + keyi = info->default_key; + darray_init(keyi.groups); + darray_copy(keyi.groups, info->default_key.groups); + for (xkb_layout_index_t i = 0; i < darray_size(keyi.groups); i++) + CopyGroupInfo(&darray_item(keyi.groups, i), + &darray_item(info->default_key.groups, i)); + keyi.merge = stmt->merge; + keyi.name = stmt->keyName; + + if (!HandleSymbolsBody(info, stmt->symbols, &keyi)) { + info->errorCount++; + return false; + } + + if (!SetExplicitGroup(info, &keyi)) { + info->errorCount++; + return false; + } + + if (!AddKeySymbols(info, &keyi, true)) { + info->errorCount++; + return false; + } + + return true; +} + +static bool +HandleModMapDef(SymbolsInfo *info, ModMapDef *def) +{ + ModMapEntry tmp; + xkb_mod_index_t ndx; + bool ok; + struct xkb_context *ctx = info->ctx; + + ndx = XkbModNameToIndex(&info->mods, def->modifier, MOD_REAL); + if (ndx == XKB_MOD_INVALID) { + log_err(info->ctx, + "Illegal modifier map definition; " + "Ignoring map for non-modifier \"%s\"\n", + xkb_atom_text(ctx, def->modifier)); + return false; + } + + ok = true; + tmp.modifier = ndx; + tmp.merge = def->merge; + + for (ExprDef *key = def->keys; key; key = (ExprDef *) key->common.next) { + xkb_keysym_t sym; + + if (key->expr.op == EXPR_VALUE && + key->expr.value_type == EXPR_TYPE_KEYNAME) { + tmp.haveSymbol = false; + tmp.u.keyName = key->key_name.key_name; + } + else if (ExprResolveKeySym(ctx, key, &sym)) { + tmp.haveSymbol = true; + tmp.u.keySym = sym; + } + else { + log_err(info->ctx, + "Modmap entries may contain only key names or keysyms; " + "Illegal definition for %s modifier ignored\n", + ModIndexText(info->ctx, &info->mods, tmp.modifier)); + continue; + } + + ok = AddModMapEntry(info, &tmp) && ok; + } + return ok; +} + +static void +HandleSymbolsFile(SymbolsInfo *info, XkbFile *file, enum merge_mode merge) +{ + bool ok; + + free(info->name); + info->name = strdup_safe(file->name); + + for (ParseCommon *stmt = file->defs; stmt; stmt = stmt->next) { + switch (stmt->type) { + case STMT_INCLUDE: + ok = HandleIncludeSymbols(info, (IncludeStmt *) stmt); + break; + case STMT_SYMBOLS: + ok = HandleSymbolsDef(info, (SymbolsDef *) stmt); + break; + case STMT_VAR: + ok = HandleGlobalVar(info, (VarDef *) stmt); + break; + case STMT_VMOD: + ok = HandleVModDef(info->ctx, &info->mods, (VModDef *) stmt, merge); + break; + case STMT_MODMAP: + ok = HandleModMapDef(info, (ModMapDef *) stmt); + break; + default: + log_err(info->ctx, + "Symbols files may not include other types; " + "Ignoring %s\n", stmt_type_to_string(stmt->type)); + ok = false; + break; + } + + if (!ok) + info->errorCount++; + + if (info->errorCount > 10) { + log_err(info->ctx, "Abandoning symbols file \"%s\"\n", + file->topName); + break; + } + } +} + +/** + * Given a keysym @sym, return a key which generates it, or NULL. + * This is used for example in a modifier map definition, such as: + * modifier_map Lock { Caps_Lock }; + * where we want to add the Lock modifier to the modmap of the key + * which matches the keysym Caps_Lock. + * Since there can be many keys which generates the keysym, the key + * is chosen first by lowest group in which the keysym appears, than + * by lowest level and than by lowest key code. + */ +static struct xkb_key * +FindKeyForSymbol(struct xkb_keymap *keymap, xkb_keysym_t sym) +{ + struct xkb_key *key; + xkb_layout_index_t group; + xkb_level_index_t level; + bool got_one_group, got_one_level; + + group = 0; + do { + got_one_group = false; + level = 0; + do { + got_one_level = false; + xkb_keys_foreach(key, keymap) { + if (group < key->num_groups && + level < XkbKeyNumLevels(key, group)) { + got_one_group = got_one_level = true; + if (key->groups[group].levels[level].num_syms == 1 && + key->groups[group].levels[level].u.sym == sym) + return key; + } + } + level++; + } while (got_one_level); + group++; + } while (got_one_group); + + return NULL; +} + +/* + * Find an appropriate type for a group and return its name. + * + * Simple recipe: + * - ONE_LEVEL for width 0/1 + * - ALPHABETIC for 2 shift levels, with lower/upercase keysyms + * - KEYPAD for keypad keys. + * - TWO_LEVEL for other 2 shift level keys. + * and the same for four level keys. + * + * FIXME: Decide how to handle multiple-syms-per-level, and do it. + */ +static xkb_atom_t +FindAutomaticType(struct xkb_context *ctx, GroupInfo *groupi) +{ + xkb_keysym_t sym0, sym1, sym2, sym3; + xkb_level_index_t width = darray_size(groupi->levels); + +#define GET_SYM(level) \ + (darray_item(groupi->levels, level).num_syms == 0 ? \ + XKB_KEY_NoSymbol : \ + darray_item(groupi->levels, level).num_syms == 1 ? \ + darray_item(groupi->levels, level).u.sym : \ + /* num_syms > 1 */ \ + darray_item(groupi->levels, level).u.syms[0]) + + if (width == 1 || width <= 0) + return xkb_atom_intern_literal(ctx, "ONE_LEVEL"); + + sym0 = GET_SYM(0); + sym1 = GET_SYM(1); + + if (width == 2) { + if (xkb_keysym_is_lower(sym0) && xkb_keysym_is_upper(sym1)) + return xkb_atom_intern_literal(ctx, "ALPHABETIC"); + + if (xkb_keysym_is_keypad(sym0) || xkb_keysym_is_keypad(sym1)) + return xkb_atom_intern_literal(ctx, "KEYPAD"); + + return xkb_atom_intern_literal(ctx, "TWO_LEVEL"); + } + + if (width <= 4) { + if (xkb_keysym_is_lower(sym0) && xkb_keysym_is_upper(sym1)) { + sym2 = GET_SYM(2); + sym3 = (width == 4 ? GET_SYM(3) : XKB_KEY_NoSymbol); + + if (xkb_keysym_is_lower(sym2) && xkb_keysym_is_upper(sym3)) + return xkb_atom_intern_literal(ctx, "FOUR_LEVEL_ALPHABETIC"); + + return xkb_atom_intern_literal(ctx, "FOUR_LEVEL_SEMIALPHABETIC"); + } + + if (xkb_keysym_is_keypad(sym0) || xkb_keysym_is_keypad(sym1)) + return xkb_atom_intern_literal(ctx, "FOUR_LEVEL_KEYPAD"); + + return xkb_atom_intern_literal(ctx, "FOUR_LEVEL"); + } + + return XKB_ATOM_NONE; + +#undef GET_SYM +} + +static const struct xkb_key_type * +FindTypeForGroup(struct xkb_keymap *keymap, KeyInfo *keyi, + xkb_layout_index_t group, bool *explicit_type) +{ + unsigned int i; + GroupInfo *groupi = &darray_item(keyi->groups, group); + xkb_atom_t type_name = groupi->type; + + *explicit_type = true; + + if (type_name == XKB_ATOM_NONE) { + if (keyi->default_type != XKB_ATOM_NONE) { + type_name = keyi->default_type; + } + else { + type_name = FindAutomaticType(keymap->ctx, groupi); + if (type_name != XKB_ATOM_NONE) + *explicit_type = false; + } + } + + if (type_name == XKB_ATOM_NONE) { + log_warn(keymap->ctx, + "Couldn't find an automatic type for key '%s' group %d with %lu levels; " + "Using the default type\n", + KeyNameText(keymap->ctx, keyi->name), group + 1, + (unsigned long) darray_size(groupi->levels)); + goto use_default; + } + + for (i = 0; i < keymap->num_types; i++) + if (keymap->types[i].name == type_name) + break; + + if (i >= keymap->num_types) { + log_warn(keymap->ctx, + "The type \"%s\" for key '%s' group %d was not previously defined; " + "Using the default type\n", + xkb_atom_text(keymap->ctx, type_name), + KeyNameText(keymap->ctx, keyi->name), group + 1); + goto use_default; + } + + return &keymap->types[i]; + +use_default: + /* + * Index 0 is guaranteed to contain something, usually + * ONE_LEVEL or at least some default one-level type. + */ + return &keymap->types[0]; +} + +static bool +CopySymbolsDefToKeymap(struct xkb_keymap *keymap, SymbolsInfo *info, + KeyInfo *keyi) +{ + struct xkb_key *key; + GroupInfo *groupi; + const GroupInfo *group0; + xkb_layout_index_t i; + + /* + * The name is guaranteed to be real and not an alias (see + * AddKeySymbols), so 'false' is safe here. + */ + key = XkbKeyByName(keymap, keyi->name, false); + if (!key) { + log_vrb(info->ctx, 5, + "Key %s not found in keycodes; Symbols ignored\n", + KeyInfoText(info, keyi)); + return false; + } + + /* Find the range of groups we need. */ + key->num_groups = 0; + darray_enumerate(i, groupi, keyi->groups) + if (groupi->defined) + key->num_groups = i + 1; + + if (key->num_groups <= 0) + return false; /* WSGO */ + + darray_resize(keyi->groups, key->num_groups); + + /* + * If there are empty groups between non-empty ones, fill them with data + * from the first group. + * We can make a wrong assumption here. But leaving gaps is worse. + */ + group0 = &darray_item(keyi->groups, 0); + darray_foreach_from(groupi, keyi->groups, 1) { + if (groupi->defined) + continue; + + CopyGroupInfo(groupi, group0); + } + + key->groups = calloc(key->num_groups, sizeof(*key->groups)); + + /* Find and assign the groups' types in the keymap. */ + darray_enumerate(i, groupi, keyi->groups) { + const struct xkb_key_type *type; + bool explicit_type; + + type = FindTypeForGroup(keymap, keyi, i, &explicit_type); + + /* Always have as many levels as the type specifies. */ + if (type->num_levels < darray_size(groupi->levels)) { + struct xkb_level *leveli; + + log_vrb(info->ctx, 1, + "Type \"%s\" has %d levels, but %s has %d levels; " + "Ignoring extra symbols\n", + xkb_atom_text(keymap->ctx, type->name), type->num_levels, + KeyInfoText(info, keyi), + (int) darray_size(groupi->levels)); + + darray_foreach_from(leveli, groupi->levels, type->num_levels) + ClearLevelInfo(leveli); + } + darray_resize0(groupi->levels, type->num_levels); + + key->groups[i].explicit_type = explicit_type; + key->groups[i].type = type; + } + + /* Copy levels. */ + darray_enumerate(i, groupi, keyi->groups) + darray_steal(groupi->levels, &key->groups[i].levels, NULL); + + key->out_of_range_group_number = keyi->out_of_range_group_number; + key->out_of_range_group_action = keyi->out_of_range_group_action; + + if (keyi->defined & KEY_FIELD_VMODMAP) { + key->vmodmap = keyi->vmodmap; + key->explicit |= EXPLICIT_VMODMAP; + } + + if (keyi->repeat != KEY_REPEAT_UNDEFINED) { + key->repeats = (keyi->repeat == KEY_REPEAT_YES); + key->explicit |= EXPLICIT_REPEAT; + } + + darray_foreach(groupi, keyi->groups) { + if (groupi->defined & GROUP_FIELD_ACTS) { + key->explicit |= EXPLICIT_INTERP; + break; + } + } + + return true; +} + +static bool +CopyModMapDefToKeymap(struct xkb_keymap *keymap, SymbolsInfo *info, + ModMapEntry *entry) +{ + struct xkb_key *key; + + if (!entry->haveSymbol) { + key = XkbKeyByName(keymap, entry->u.keyName, true); + if (!key) { + log_vrb(info->ctx, 5, + "Key %s not found in keycodes; " + "Modifier map entry for %s not updated\n", + KeyNameText(info->ctx, entry->u.keyName), + ModIndexText(info->ctx, &info->mods, entry->modifier)); + return false; + } + } + else { + key = FindKeyForSymbol(keymap, entry->u.keySym); + if (!key) { + log_vrb(info->ctx, 5, + "Key \"%s\" not found in symbol map; " + "Modifier map entry for %s not updated\n", + KeysymText(info->ctx, entry->u.keySym), + ModIndexText(info->ctx, &info->mods, entry->modifier)); + return false; + } + } + + key->modmap |= (1u << entry->modifier); + return true; +} + +static bool +CopySymbolsToKeymap(struct xkb_keymap *keymap, SymbolsInfo *info) +{ + KeyInfo *keyi; + ModMapEntry *mm; + + keymap->symbols_section_name = strdup_safe(info->name); + XkbEscapeMapName(keymap->symbols_section_name); + + keymap->mods = info->mods; + + darray_steal(info->group_names, + &keymap->group_names, &keymap->num_group_names); + + darray_foreach(keyi, info->keys) + if (!CopySymbolsDefToKeymap(keymap, info, keyi)) + info->errorCount++; + + if (xkb_context_get_log_verbosity(keymap->ctx) > 3) { + struct xkb_key *key; + + xkb_keys_foreach(key, keymap) { + if (key->name == XKB_ATOM_NONE) + continue; + + if (key->num_groups < 1) + log_info(info->ctx, + "No symbols defined for %s\n", + KeyNameText(info->ctx, key->name)); + } + } + + darray_foreach(mm, info->modmaps) + if (!CopyModMapDefToKeymap(keymap, info, mm)) + info->errorCount++; + + /* XXX: If we don't ignore errorCount, things break. */ + return true; +} + +bool +CompileSymbols(XkbFile *file, struct xkb_keymap *keymap, + enum merge_mode merge) +{ + SymbolsInfo info; + ActionsInfo *actions; + + actions = NewActionsInfo(); + if (!actions) + return false; + + InitSymbolsInfo(&info, keymap, actions, &keymap->mods); + info.default_key.merge = merge; + + HandleSymbolsFile(&info, file, merge); + + if (info.errorCount != 0) + goto err_info; + + if (!CopySymbolsToKeymap(keymap, &info)) + goto err_info; + + ClearSymbolsInfo(&info); + FreeActionsInfo(actions); + return true; + +err_info: + FreeActionsInfo(actions); + ClearSymbolsInfo(&info); + return false; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c new file mode 100644 index 0000000..ec20adc --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/types.c @@ -0,0 +1,743 @@ +/************************************************************ + * Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +#include "xkbcomp-priv.h" +#include "text.h" +#include "vmod.h" +#include "expr.h" +#include "include.h" + +enum type_field { + TYPE_FIELD_MASK = (1 << 0), + TYPE_FIELD_MAP = (1 << 1), + TYPE_FIELD_PRESERVE = (1 << 2), + TYPE_FIELD_LEVEL_NAME = (1 << 3), +}; + +typedef struct { + enum type_field defined; + enum merge_mode merge; + + xkb_atom_t name; + xkb_mod_mask_t mods; + xkb_level_index_t num_levels; + darray(struct xkb_key_type_entry) entries; + darray(xkb_atom_t) level_names; +} KeyTypeInfo; + +typedef struct { + char *name; + int errorCount; + + darray(KeyTypeInfo) types; + struct xkb_mod_set mods; + + struct xkb_context *ctx; +} KeyTypesInfo; + +/***====================================================================***/ + +static inline const char * +MapEntryTxt(KeyTypesInfo *info, struct xkb_key_type_entry *entry) +{ + return ModMaskText(info->ctx, &info->mods, entry->mods.mods); +} + +static inline const char * +TypeTxt(KeyTypesInfo *info, KeyTypeInfo *type) +{ + return xkb_atom_text(info->ctx, type->name); +} + +static inline const char * +TypeMaskTxt(KeyTypesInfo *info, KeyTypeInfo *type) +{ + return ModMaskText(info->ctx, &info->mods, type->mods); +} + +static inline bool +ReportTypeShouldBeArray(KeyTypesInfo *info, KeyTypeInfo *type, + const char *field) +{ + return ReportShouldBeArray(info->ctx, "key type", field, + TypeTxt(info, type)); +} + +static inline bool +ReportTypeBadType(KeyTypesInfo *info, KeyTypeInfo *type, + const char *field, const char *wanted) +{ + return ReportBadType(info->ctx, "key type", field, + TypeTxt(info, type), wanted); +} + +/***====================================================================***/ + +static void +InitKeyTypesInfo(KeyTypesInfo *info, struct xkb_context *ctx, + const struct xkb_mod_set *mods) +{ + memset(info, 0, sizeof(*info)); + info->ctx = ctx; + info->mods = *mods; +} + +static void +ClearKeyTypeInfo(KeyTypeInfo *type) +{ + darray_free(type->entries); + darray_free(type->level_names); +} + +static void +ClearKeyTypesInfo(KeyTypesInfo *info) +{ + free(info->name); + darray_free(info->types); +} + +static KeyTypeInfo * +FindMatchingKeyType(KeyTypesInfo *info, xkb_atom_t name) +{ + KeyTypeInfo *old; + + darray_foreach(old, info->types) + if (old->name == name) + return old; + + return NULL; +} + +static bool +AddKeyType(KeyTypesInfo *info, KeyTypeInfo *new, bool same_file) +{ + KeyTypeInfo *old; + const int verbosity = xkb_context_get_log_verbosity(info->ctx); + + old = FindMatchingKeyType(info, new->name); + if (old) { + if (new->merge == MERGE_REPLACE || new->merge == MERGE_OVERRIDE) { + if ((same_file && verbosity > 0) || verbosity > 9) { + log_warn(info->ctx, + "Multiple definitions of the %s key type; " + "Earlier definition ignored\n", + xkb_atom_text(info->ctx, new->name)); + } + + ClearKeyTypeInfo(old); + *old = *new; + darray_init(new->entries); + darray_init(new->level_names); + return true; + } + + if (same_file) + log_vrb(info->ctx, 4, + "Multiple definitions of the %s key type; " + "Later definition ignored\n", + xkb_atom_text(info->ctx, new->name)); + + ClearKeyTypeInfo(new); + return true; + } + + darray_append(info->types, *new); + return true; +} + +/***====================================================================***/ + +static void +MergeIncludedKeyTypes(KeyTypesInfo *into, KeyTypesInfo *from, + enum merge_mode merge) +{ + KeyTypeInfo *type; + + if (from->errorCount > 0) { + into->errorCount += from->errorCount; + return; + } + + into->mods = from->mods; + + if (into->name == NULL) { + into->name = from->name; + from->name = NULL; + } + + if (darray_empty(into->types)) { + into->types = from->types; + darray_init(from->types); + } + else { + darray_foreach(type, from->types) { + type->merge = (merge == MERGE_DEFAULT ? type->merge : merge); + if (!AddKeyType(into, type, false)) + into->errorCount++; + } + } +} + +static void +HandleKeyTypesFile(KeyTypesInfo *info, XkbFile *file, enum merge_mode merge); + +static bool +HandleIncludeKeyTypes(KeyTypesInfo *info, IncludeStmt *include) +{ + KeyTypesInfo included; + + InitKeyTypesInfo(&included, info->ctx, &info->mods); + included.name = include->stmt; + include->stmt = NULL; + + for (IncludeStmt *stmt = include; stmt; stmt = stmt->next_incl) { + KeyTypesInfo next_incl; + XkbFile *file; + + file = ProcessIncludeFile(info->ctx, stmt, FILE_TYPE_TYPES); + if (!file) { + info->errorCount += 10; + ClearKeyTypesInfo(&included); + return false; + } + + InitKeyTypesInfo(&next_incl, info->ctx, &included.mods); + + HandleKeyTypesFile(&next_incl, file, stmt->merge); + + MergeIncludedKeyTypes(&included, &next_incl, stmt->merge); + + ClearKeyTypesInfo(&next_incl); + FreeXkbFile(file); + } + + MergeIncludedKeyTypes(info, &included, include->merge); + ClearKeyTypesInfo(&included); + + return (info->errorCount == 0); +} + +/***====================================================================***/ + +static bool +SetModifiers(KeyTypesInfo *info, KeyTypeInfo *type, ExprDef *arrayNdx, + ExprDef *value) +{ + xkb_mod_mask_t mods; + + if (arrayNdx) + log_warn(info->ctx, + "The modifiers field of a key type is not an array; " + "Illegal array subscript ignored\n"); + + if (!ExprResolveModMask(info->ctx, value, MOD_BOTH, &info->mods, &mods)) { + log_err(info->ctx, + "Key type mask field must be a modifier mask; " + "Key type definition ignored\n"); + return false; + } + + if (type->defined & TYPE_FIELD_MASK) { + log_warn(info->ctx, + "Multiple modifier mask definitions for key type %s; " + "Using %s, ignoring %s\n", + xkb_atom_text(info->ctx, type->name), + TypeMaskTxt(info, type), + ModMaskText(info->ctx, &info->mods, mods)); + return false; + } + + type->mods = mods; + return true; +} + +/***====================================================================***/ + +static struct xkb_key_type_entry * +FindMatchingMapEntry(KeyTypeInfo *type, xkb_mod_mask_t mods) +{ + struct xkb_key_type_entry *entry; + + darray_foreach(entry, type->entries) + if (entry->mods.mods == mods) + return entry; + + return NULL; +} + +static bool +AddMapEntry(KeyTypesInfo *info, KeyTypeInfo *type, + struct xkb_key_type_entry *new, bool clobber, bool report) +{ + struct xkb_key_type_entry *old; + + old = FindMatchingMapEntry(type, new->mods.mods); + if (old) { + if (report && old->level != new->level) { + log_warn(info->ctx, + "Multiple map entries for %s in %s; " + "Using %d, ignoring %d\n", + MapEntryTxt(info, new), TypeTxt(info, type), + (clobber ? new->level : old->level) + 1, + (clobber ? old->level : new->level) + 1); + } + else { + log_vrb(info->ctx, 10, + "Multiple occurrences of map[%s]= %d in %s; Ignored\n", + MapEntryTxt(info, new), new->level + 1, + TypeTxt(info, type)); + return true; + } + + if (clobber) { + if (new->level >= type->num_levels) + type->num_levels = new->level + 1; + old->level = new->level; + } + + return true; + } + + if (new->level >= type->num_levels) + type->num_levels = new->level + 1; + + darray_append(type->entries, *new); + return true; +} + +static bool +SetMapEntry(KeyTypesInfo *info, KeyTypeInfo *type, ExprDef *arrayNdx, + ExprDef *value) +{ + struct xkb_key_type_entry entry; + + if (arrayNdx == NULL) + return ReportTypeShouldBeArray(info, type, "map entry"); + + if (!ExprResolveModMask(info->ctx, arrayNdx, MOD_BOTH, &info->mods, + &entry.mods.mods)) + return ReportTypeBadType(info, type, "map entry", "modifier mask"); + + if (entry.mods.mods & (~type->mods)) { + log_vrb(info->ctx, 1, + "Map entry for unused modifiers in %s; " + "Using %s instead of %s\n", + TypeTxt(info, type), + ModMaskText(info->ctx, &info->mods, + entry.mods.mods & type->mods), + MapEntryTxt(info, &entry)); + entry.mods.mods &= type->mods; + } + + if (!ExprResolveLevel(info->ctx, value, &entry.level)) { + log_err(info->ctx, + "Level specifications in a key type must be integer; " + "Ignoring malformed level specification\n"); + return false; + } + + entry.preserve.mods = 0; + + return AddMapEntry(info, type, &entry, true, true); +} + +/***====================================================================***/ + +static bool +AddPreserve(KeyTypesInfo *info, KeyTypeInfo *type, + xkb_mod_mask_t mods, xkb_mod_mask_t preserve_mods) +{ + struct xkb_key_type_entry *entry; + struct xkb_key_type_entry new; + + darray_foreach(entry, type->entries) { + if (entry->mods.mods != mods) + continue; + + /* Map exists without previous preserve (or "None"); override. */ + if (entry->preserve.mods == 0) { + entry->preserve.mods = preserve_mods; + return true; + } + + /* Map exists with same preserve; do nothing. */ + if (entry->preserve.mods == preserve_mods) { + log_vrb(info->ctx, 10, + "Identical definitions for preserve[%s] in %s; " + "Ignored\n", + ModMaskText(info->ctx, &info->mods, mods), + TypeTxt(info, type)); + return true; + } + + /* Map exists with different preserve; latter wins. */ + log_vrb(info->ctx, 1, + "Multiple definitions for preserve[%s] in %s; " + "Using %s, ignoring %s\n", + ModMaskText(info->ctx, &info->mods, mods), + TypeTxt(info, type), + ModMaskText(info->ctx, &info->mods, preserve_mods), + ModMaskText(info->ctx, &info->mods, entry->preserve.mods)); + + entry->preserve.mods = preserve_mods; + return true; + } + + /* + * Map does not exist, i.e. preserve[] came before map[]. + * Create a map with the specified mask mapping to Level1. The level + * may be overridden later with an explicit map[] statement. + */ + new.level = 0; + new.mods.mods = mods; + new.preserve.mods = preserve_mods; + darray_append(type->entries, new); + return true; +} + +static bool +SetPreserve(KeyTypesInfo *info, KeyTypeInfo *type, ExprDef *arrayNdx, + ExprDef *value) +{ + xkb_mod_mask_t mods, preserve_mods; + + if (arrayNdx == NULL) + return ReportTypeShouldBeArray(info, type, "preserve entry"); + + if (!ExprResolveModMask(info->ctx, arrayNdx, MOD_BOTH, &info->mods, &mods)) + return ReportTypeBadType(info, type, "preserve entry", + "modifier mask"); + + if (mods & ~type->mods) { + const char *before, *after; + + before = ModMaskText(info->ctx, &info->mods, mods); + mods &= type->mods; + after = ModMaskText(info->ctx, &info->mods, mods); + + log_vrb(info->ctx, 1, + "Preserve for modifiers not used by the %s type; " + "Index %s converted to %s\n", + TypeTxt(info, type), before, after); + } + + if (!ExprResolveModMask(info->ctx, value, MOD_BOTH, &info->mods, + &preserve_mods)) { + log_err(info->ctx, + "Preserve value in a key type is not a modifier mask; " + "Ignoring preserve[%s] in type %s\n", + ModMaskText(info->ctx, &info->mods, mods), + TypeTxt(info, type)); + return false; + } + + if (preserve_mods & ~mods) { + const char *before, *after; + + before = ModMaskText(info->ctx, &info->mods, preserve_mods); + preserve_mods &= mods; + after = ModMaskText(info->ctx, &info->mods, preserve_mods); + + log_vrb(info->ctx, 1, + "Illegal value for preserve[%s] in type %s; " + "Converted %s to %s\n", + ModMaskText(info->ctx, &info->mods, mods), + TypeTxt(info, type), before, after); + } + + return AddPreserve(info, type, mods, preserve_mods); +} + +/***====================================================================***/ + +static bool +AddLevelName(KeyTypesInfo *info, KeyTypeInfo *type, + xkb_level_index_t level, xkb_atom_t name, bool clobber) +{ + /* New name. */ + if (level >= darray_size(type->level_names)) { + darray_resize0(type->level_names, level + 1); + goto finish; + } + + /* Same level, same name. */ + if (darray_item(type->level_names, level) == name) { + log_vrb(info->ctx, 10, + "Duplicate names for level %d of key type %s; Ignored\n", + level + 1, TypeTxt(info, type)); + return true; + } + + /* Same level, different name. */ + if (darray_item(type->level_names, level) != XKB_ATOM_NONE) { + const char *old, *new; + old = xkb_atom_text(info->ctx, + darray_item(type->level_names, level)); + new = xkb_atom_text(info->ctx, name); + log_vrb(info->ctx, 1, + "Multiple names for level %d of key type %s; " + "Using %s, ignoring %s\n", + level + 1, TypeTxt(info, type), + (clobber ? new : old), (clobber ? old : new)); + + if (!clobber) + return true; + } + + /* XXX: What about different level, same name? */ + +finish: + darray_item(type->level_names, level) = name; + return true; +} + +static bool +SetLevelName(KeyTypesInfo *info, KeyTypeInfo *type, ExprDef *arrayNdx, + ExprDef *value) +{ + xkb_level_index_t level; + xkb_atom_t level_name; + + if (arrayNdx == NULL) + return ReportTypeShouldBeArray(info, type, "level name"); + + if (!ExprResolveLevel(info->ctx, arrayNdx, &level)) + return ReportTypeBadType(info, type, "level name", "integer"); + + if (!ExprResolveString(info->ctx, value, &level_name)) { + log_err(info->ctx, + "Non-string name for level %d in key type %s; " + "Ignoring illegal level name definition\n", + level + 1, xkb_atom_text(info->ctx, type->name)); + return false; + } + + return AddLevelName(info, type, level, level_name, true); +} + +/***====================================================================***/ + +static bool +SetKeyTypeField(KeyTypesInfo *info, KeyTypeInfo *type, + const char *field, ExprDef *arrayNdx, ExprDef *value) +{ + bool ok = false; + enum type_field type_field = 0; + + if (istreq(field, "modifiers")) { + type_field = TYPE_FIELD_MASK; + ok = SetModifiers(info, type, arrayNdx, value); + } + else if (istreq(field, "map")) { + type_field = TYPE_FIELD_MAP; + ok = SetMapEntry(info, type, arrayNdx, value); + } + else if (istreq(field, "preserve")) { + type_field = TYPE_FIELD_PRESERVE; + ok = SetPreserve(info, type, arrayNdx, value); + } + else if (istreq(field, "levelname") || istreq(field, "level_name")) { + type_field = TYPE_FIELD_LEVEL_NAME; + ok = SetLevelName(info, type, arrayNdx, value); + } else { + log_err(info->ctx, + "Unknown field %s in key type %s; Definition ignored\n", + field, TypeTxt(info, type)); + } + + type->defined |= type_field; + return ok; +} + +static bool +HandleKeyTypeBody(KeyTypesInfo *info, VarDef *def, KeyTypeInfo *type) +{ + bool ok = true; + const char *elem, *field; + ExprDef *arrayNdx; + + for (; def; def = (VarDef *) def->common.next) { + ok = ExprResolveLhs(info->ctx, def->name, &elem, &field, + &arrayNdx); + if (!ok) + continue; + + if (elem && istreq(elem, "type")) { + log_err(info->ctx, + "Support for changing the default type has been removed; " + "Statement ignored\n"); + continue; + } + + ok = SetKeyTypeField(info, type, field, arrayNdx, def->value); + } + + return ok; +} + +static bool +HandleKeyTypeDef(KeyTypesInfo *info, KeyTypeDef *def, enum merge_mode merge) +{ + KeyTypeInfo type = { + .defined = 0, + .merge = (def->merge == MERGE_DEFAULT ? merge : def->merge), + .name = def->name, + .mods = 0, + .num_levels = 1, + .entries = darray_new(), + .level_names = darray_new(), + }; + + if (!HandleKeyTypeBody(info, def->body, &type)) { + info->errorCount++; + return false; + } + + if (!AddKeyType(info, &type, true)) { + info->errorCount++; + return false; + } + + return true; +} + +static void +HandleKeyTypesFile(KeyTypesInfo *info, XkbFile *file, enum merge_mode merge) +{ + bool ok; + + free(info->name); + info->name = strdup_safe(file->name); + + for (ParseCommon *stmt = file->defs; stmt; stmt = stmt->next) { + switch (stmt->type) { + case STMT_INCLUDE: + ok = HandleIncludeKeyTypes(info, (IncludeStmt *) stmt); + break; + case STMT_TYPE: + ok = HandleKeyTypeDef(info, (KeyTypeDef *) stmt, merge); + break; + case STMT_VAR: + log_err(info->ctx, + "Support for changing the default type has been removed; " + "Statement ignored\n"); + ok = true; + break; + case STMT_VMOD: + ok = HandleVModDef(info->ctx, &info->mods, (VModDef *) stmt, merge); + break; + default: + log_err(info->ctx, + "Key type files may not include other declarations; " + "Ignoring %s\n", stmt_type_to_string(stmt->type)); + ok = false; + break; + } + + if (!ok) + info->errorCount++; + + if (info->errorCount > 10) { + log_err(info->ctx, + "Abandoning keytypes file \"%s\"\n", file->topName); + break; + } + } +} + +/***====================================================================***/ + +static bool +CopyKeyTypesToKeymap(struct xkb_keymap *keymap, KeyTypesInfo *info) +{ + unsigned num_types; + struct xkb_key_type *types; + + num_types = darray_empty(info->types) ? 1 : darray_size(info->types); + types = calloc(num_types, sizeof(*types)); + if (!types) + return false; + + /* + * If no types were specified, a default unnamed one-level type is + * used for all keys. + */ + if (darray_empty(info->types)) { + struct xkb_key_type *type = &types[0]; + + type->mods.mods = 0; + type->num_levels = 1; + type->entries = NULL; + type->num_entries = 0; + type->name = xkb_atom_intern_literal(keymap->ctx, "default"); + type->level_names = NULL; + } + else { + for (unsigned i = 0; i < num_types; i++) { + KeyTypeInfo *def = &darray_item(info->types, i); + struct xkb_key_type *type = &types[i]; + + type->name = def->name; + type->mods.mods = def->mods; + darray_steal(def->level_names, + &type->level_names, &type->num_levels); + darray_steal(def->entries, + &type->entries, &type->num_entries); + } + } + + keymap->types_section_name = strdup_safe(info->name); + XkbEscapeMapName(keymap->types_section_name); + keymap->num_types = num_types; + keymap->types = types; + keymap->mods = info->mods; + return true; +} + +/***====================================================================***/ + +bool +CompileKeyTypes(XkbFile *file, struct xkb_keymap *keymap, + enum merge_mode merge) +{ + KeyTypesInfo info; + + InitKeyTypesInfo(&info, keymap->ctx, &keymap->mods); + + HandleKeyTypesFile(&info, file, merge); + if (info.errorCount != 0) + goto err_info; + + if (!CopyKeyTypesToKeymap(keymap, &info)) + goto err_info; + + ClearKeyTypesInfo(&info); + return true; + +err_info: + ClearKeyTypesInfo(&info); + return false; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c new file mode 100644 index 0000000..a0b029a --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.c @@ -0,0 +1,105 @@ +/************************************************************ + * Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +#include "xkbcomp-priv.h" +#include "text.h" +#include "expr.h" +#include "vmod.h" + +bool +HandleVModDef(struct xkb_context *ctx, struct xkb_mod_set *mods, + VModDef *stmt, enum merge_mode merge) +{ + xkb_mod_index_t i; + struct xkb_mod *mod; + xkb_mod_mask_t mapping; + + merge = (merge == MERGE_DEFAULT ? stmt->merge : merge); + + if (stmt->value) { + /* + * This is a statement such as 'virtualModifiers NumLock = Mod1'; + * it sets the vmod-to-real-mod[s] mapping directly instead of going + * through modifier_map or some such. + */ + if (!ExprResolveModMask(ctx, stmt->value, MOD_REAL, mods, &mapping)) { + log_err(ctx, + "Declaration of %s ignored\n", + xkb_atom_text(ctx, stmt->name)); + return false; + } + } + else { + mapping = 0; + } + + xkb_mods_enumerate(i, mod, mods) { + if (mod->name == stmt->name) { + if (mod->type != MOD_VIRT) { + log_err(ctx, + "Can't add a virtual modifier named \"%s\"; " + "there is already a non-virtual modifier with this name! Ignored\n", + xkb_atom_text(ctx, mod->name)); + return false; + } + + if (mod->mapping == mapping) + return true; + + if (mod->mapping != 0) { + xkb_mod_mask_t use, ignore; + + use = (merge == MERGE_OVERRIDE ? mapping : mod->mapping); + ignore = (merge == MERGE_OVERRIDE ? mod->mapping : mapping); + + log_warn(ctx, + "Virtual modifier %s defined multiple times; " + "Using %s, ignoring %s\n", + xkb_atom_text(ctx, stmt->name), + ModMaskText(ctx, mods, use), + ModMaskText(ctx, mods, ignore)); + + mapping = use; + } + + mod->mapping = mapping; + return true; + } + } + + if (mods->num_mods >= XKB_MAX_MODS) { + log_err(ctx, + "Too many modifiers defined (maximum %d)\n", + XKB_MAX_MODS); + return false; + } + + mods->mods[mods->num_mods].name = stmt->name; + mods->mods[mods->num_mods].type = MOD_VIRT; + mods->mods[mods->num_mods].mapping = mapping; + mods->num_mods++; + return true; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.h new file mode 100644 index 0000000..546cf7e --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/vmod.h @@ -0,0 +1,34 @@ +/************************************************************ + * Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +#ifndef XKBCOMP_VMOD_H +#define XKBCOMP_VMOD_H + +bool +HandleVModDef(struct xkb_context *ctx, struct xkb_mod_set *mods, + VModDef *stmt, enum merge_mode merge); + +#endif diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp-priv.h b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp-priv.h new file mode 100644 index 0000000..6cb774d --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp-priv.h @@ -0,0 +1,124 @@ +/************************************************************ + * Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +#ifndef XKBCOMP_PRIV_H +#define XKBCOMP_PRIV_H + +#include "keymap.h" +#include "ast.h" + +struct xkb_component_names { + char *keycodes; + char *types; + char *compat; + char *symbols; +}; + +char * +text_v1_keymap_get_as_string(struct xkb_keymap *keymap); + +XkbFile * +XkbParseFile(struct xkb_context *ctx, FILE *file, + const char *file_name, const char *map); + +XkbFile * +XkbParseString(struct xkb_context *ctx, + const char *string, size_t len, + const char *file_name, const char *map); + +void +FreeXkbFile(XkbFile *file); + +XkbFile * +XkbFileFromComponents(struct xkb_context *ctx, + const struct xkb_component_names *kkctgs); + +bool +CompileKeycodes(XkbFile *file, struct xkb_keymap *keymap, + enum merge_mode merge); + +bool +CompileKeyTypes(XkbFile *file, struct xkb_keymap *keymap, + enum merge_mode merge); + +bool +CompileCompatMap(XkbFile *file, struct xkb_keymap *keymap, + enum merge_mode merge); + +bool +CompileSymbols(XkbFile *file, struct xkb_keymap *keymap, + enum merge_mode merge); + +bool +CompileKeymap(XkbFile *file, struct xkb_keymap *keymap, + enum merge_mode merge); + +/***====================================================================***/ + +static inline bool +ReportNotArray(struct xkb_context *ctx, const char *type, const char *field, + const char *name) +{ + log_err(ctx, + "The %s %s field is not an array; " + "Ignoring illegal assignment in %s\n", + type, field, name); + return false; +} + +static inline bool +ReportShouldBeArray(struct xkb_context *ctx, const char *type, + const char *field, const char *name) +{ + log_err(ctx, + "Missing subscript for %s %s; " + "Ignoring illegal assignment in %s\n", + type, field, name); + return false; +} + +static inline bool +ReportBadType(struct xkb_context *ctx, const char *type, const char *field, + const char *name, const char *wanted) +{ + log_err(ctx, "The %s %s field must be a %s; " + "Ignoring illegal assignment in %s\n", + type, field, wanted, name); + return false; +} + +static inline bool +ReportBadField(struct xkb_context *ctx, const char *type, const char *field, + const char *name) +{ + log_err(ctx, + "Unknown %s field %s in %s; " + "Ignoring assignment to unknown field in %s\n", + type, field, name, name); + return false; +} + +#endif diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c new file mode 100644 index 0000000..007e3f7 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/src/xkbcomp/xkbcomp.c @@ -0,0 +1,139 @@ +/* + * Copyright © 2009 Dan Nicholson + * Copyright © 2012 Intel Corporation + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: Dan Nicholson + * Ran Benita + * Daniel Stone + */ + +#include "xkbcomp-priv.h" +#include "rules.h" + +static bool +compile_keymap_file(struct xkb_keymap *keymap, XkbFile *file) +{ + if (file->file_type != FILE_TYPE_KEYMAP) { + log_err(keymap->ctx, + "Cannot compile a %s file alone into a keymap\n", + xkb_file_type_to_string(file->file_type)); + return false; + } + + if (!CompileKeymap(file, keymap, MERGE_OVERRIDE)) { + log_err(keymap->ctx, + "Failed to compile keymap\n"); + return false; + } + + return true; +} + +static bool +text_v1_keymap_new_from_names(struct xkb_keymap *keymap, + const struct xkb_rule_names *rmlvo) +{ + bool ok; + struct xkb_component_names kccgst; + XkbFile *file; + + log_dbg(keymap->ctx, + "Compiling from RMLVO: rules '%s', model '%s', layout '%s', " + "variant '%s', options '%s'\n", + rmlvo->rules, rmlvo->model, rmlvo->layout, rmlvo->variant, + rmlvo->options); + + ok = xkb_components_from_rules(keymap->ctx, rmlvo, &kccgst); + if (!ok) { + log_err(keymap->ctx, + "Couldn't look up rules '%s', model '%s', layout '%s', " + "variant '%s', options '%s'\n", + rmlvo->rules, rmlvo->model, rmlvo->layout, rmlvo->variant, + rmlvo->options); + return false; + } + + log_dbg(keymap->ctx, + "Compiling from KcCGST: keycodes '%s', types '%s', " + "compat '%s', symbols '%s'\n", + kccgst.keycodes, kccgst.types, kccgst.compat, kccgst.symbols); + + file = XkbFileFromComponents(keymap->ctx, &kccgst); + + free(kccgst.keycodes); + free(kccgst.types); + free(kccgst.compat); + free(kccgst.symbols); + + if (!file) { + log_err(keymap->ctx, + "Failed to generate parsed XKB file from components\n"); + return false; + } + + ok = compile_keymap_file(keymap, file); + FreeXkbFile(file); + return ok; +} + +static bool +text_v1_keymap_new_from_string(struct xkb_keymap *keymap, + const char *string, size_t len) +{ + bool ok; + XkbFile *xkb_file; + + xkb_file = XkbParseString(keymap->ctx, string, len, "(input string)", NULL); + if (!xkb_file) { + log_err(keymap->ctx, "Failed to parse input xkb string\n"); + return NULL; + } + + ok = compile_keymap_file(keymap, xkb_file); + FreeXkbFile(xkb_file); + return ok; +} + +static bool +text_v1_keymap_new_from_file(struct xkb_keymap *keymap, FILE *file) +{ + bool ok; + XkbFile *xkb_file; + + xkb_file = XkbParseFile(keymap->ctx, file, "(unknown file)", NULL); + if (!xkb_file) { + log_err(keymap->ctx, "Failed to parse input xkb file\n"); + return false; + } + + ok = compile_keymap_file(keymap, xkb_file); + FreeXkbFile(xkb_file); + return ok; +} + +const struct xkb_keymap_format_ops text_v1_keymap_format_ops = { + .keymap_new_from_names = text_v1_keymap_new_from_names, + .keymap_new_from_string = text_v1_keymap_new_from_string, + .keymap_new_from_file = text_v1_keymap_new_from_file, + .keymap_get_as_string = text_v1_keymap_get_as_string, +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/.gitignore b/app/src/main/jni/libxkbcommon/xkbcommon/test/.gitignore new file mode 100644 index 0000000..84a0a45 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/.gitignore @@ -0,0 +1,21 @@ +*.log +*.trs +filecomp +rulescomp +keysym +state +context +rules-file +stringcomp +buffercomp +keyseq +log +interactive-evdev +rmlvo-to-kccgst +print-compiled-keymap +atom +x11 +interactive-x11 +utf8 +x11comp +compose diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/atom.c b/app/src/main/jni/libxkbcommon/xkbcommon/test/atom.c new file mode 100644 index 0000000..bcb369a --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/atom.c @@ -0,0 +1,181 @@ +/* + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include + +#include "test.h" +#include "atom.h" + +#define INTERN_LITERAL(table, literal) \ + atom_intern(table, literal, sizeof(literal) - 1, false) + +#define LOOKUP_LITERAL(table, literal) \ + atom_lookup(table, literal, sizeof(literal) - 1) + +static void +random_string(char **str_out, size_t *len_out) +{ + /* Keep this small, so collisions might happen. */ + static const char random_chars[] = { + 'a', 'b', 'c', 'd', 'e', 'f', 'g' + }; + + size_t len; + char *str; + + len = rand() % 15; + str = malloc(len + 1); + assert(str); + + for (size_t i = 0; i < len; i++) + str[i] = random_chars[rand() % ARRAY_SIZE(random_chars)]; + /* Don't always terminate it; should work without. */ + if (rand() % 2 == 0) + str[len] = '\0'; + + *str_out = str; + *len_out = len; +} + +static void +test_random_strings(void) +{ + struct atom_string { + xkb_atom_t atom; + char *string; + size_t len; + }; + + struct atom_table *table; + struct atom_string *arr; + int N; + xkb_atom_t atom; + const char *string; + + table = atom_table_new(); + assert(table); + + srand(clock()); + + N = 1 + rand() % 1500; + arr = calloc(N, sizeof(*arr)); + assert(arr); + + for (int i = 0; i < N; i++) { + random_string(&arr[i].string, &arr[i].len); + + atom = atom_lookup(table, arr[i].string, arr[i].len); + if (atom != XKB_ATOM_NONE) { + string = atom_text(table, atom); + assert(string); + + if (arr[i].len != strlen(string) || + strncmp(string, arr[i].string, arr[i].len) != 0) { + fprintf(stderr, "got a collision, but strings don't match!\n"); + fprintf(stderr, "existing length %lu, string %s\n", + strlen(string), string); + fprintf(stderr, "new length %lu, string %.*s\n", + arr[i].len, (int) arr[i].len, arr[i].string); + assert(false); + } + + /* OK, got a real collision. */ + free(arr[i].string); + i--; + continue; + } + + arr[i].atom = atom_intern(table, arr[i].string, arr[i].len, false); + if (arr[i].atom == XKB_ATOM_NONE) { + fprintf(stderr, "failed to intern! len: %lu, string: %.*s\n", + arr[i].len, (int) arr[i].len, arr[i].string); + assert(false); + } + } + + for (int i = 0; i < N; i++) { + string = atom_text(table, arr[i].atom); + assert(string); + + if (arr[i].len != strlen(string) || + strncmp(string, arr[i].string, arr[i].len) != 0) { + fprintf(stderr, "looked-up string doesn't match!\n"); + fprintf(stderr, "found length %lu, string %s\n", + strlen(string), string); + fprintf(stderr, "expected length %lu, string %.*s\n", + arr[i].len, (int) arr[i].len, arr[i].string); + + /* Since this is random, we need to dump the failing data, + * so we might have some chance to reproduce. */ + fprintf(stderr, "START dump of arr, N=%d\n", N); + for (int j = 0; j < N; j++) { + fprintf(stderr, "%u\t\t%lu\t\t%.*s\n", arr[i].atom, + arr[i].len, (int) arr[i].len, arr[i].string); + } + fprintf(stderr, "END\n"); + + assert(false); + } + } + + for (int i = 0; i < N; i++) + free(arr[i].string); + free(arr); + atom_table_free(table); +} + +int +main(void) +{ + struct atom_table *table; + xkb_atom_t atom1, atom2, atom3; + + table = atom_table_new(); + assert(table); + + assert(atom_text(table, XKB_ATOM_NONE) == NULL); + assert(atom_lookup(table, NULL, 0) == XKB_ATOM_NONE); + + atom1 = INTERN_LITERAL(table, "hello"); + assert(atom1 != XKB_ATOM_NONE); + assert(atom1 == LOOKUP_LITERAL(table, "hello")); + assert(streq(atom_text(table, atom1), "hello")); + + atom2 = atom_intern(table, "hello", 3, false); + assert(atom2 != XKB_ATOM_NONE); + assert(atom1 != atom2); + assert(streq(atom_text(table, atom2), "hel")); + assert(LOOKUP_LITERAL(table, "hel") == atom2); + assert(LOOKUP_LITERAL(table, "hell") == XKB_ATOM_NONE); + assert(LOOKUP_LITERAL(table, "hello") == atom1); + + atom3 = atom_intern(table, "", 0, false); + assert(atom3 != XKB_ATOM_NONE); + assert(LOOKUP_LITERAL(table, "") == atom3); + + atom_table_free(table); + + test_random_strings(); + + return 0; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/buffercomp.c b/app/src/main/jni/libxkbcommon/xkbcommon/test/buffercomp.c new file mode 100644 index 0000000..5cc1dbc --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/buffercomp.c @@ -0,0 +1,90 @@ +/* + * Copyright © 2009 Dan Nicholson + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include +#include +#include + +#include "test.h" + +#define DATA_PATH "keymaps/stringcomp.data" + +int +main(int argc, char *argv[]) +{ + struct xkb_context *ctx = test_get_context(0); + struct xkb_keymap *keymap; + char *original, *dump; + + assert(ctx); + + /* Load in a prebuilt keymap, make sure we can compile it from memory, + * then compare it to make sure we get the same result when dumping it + * to a string. */ + original = test_read_file(DATA_PATH); + assert(original); + + keymap = test_compile_buffer(ctx, original, strlen(original)); + assert(keymap); + + dump = xkb_keymap_get_as_string(keymap, XKB_KEYMAP_USE_ORIGINAL_FORMAT); + assert(dump); + + if (!streq(original, dump)) { + fprintf(stderr, + "round-trip test failed: dumped map differs from original\n"); + fprintf(stderr, "path to original file: %s\n", + test_get_path(DATA_PATH)); + fprintf(stderr, "length: dumped %lu, original %lu\n", + (unsigned long) strlen(dump), + (unsigned long) strlen(original)); + fprintf(stderr, "dumped map:\n"); + fprintf(stderr, "%s\n", dump); + fflush(stderr); + assert(0); + } + + free(original); + free(dump); + xkb_keymap_unref(keymap); + + /* Make sure we can't (falsely claim to) compile an empty string. */ + keymap = test_compile_buffer(ctx, "", 0); + assert(!keymap); + + /* Make sure we can recompile our output for a normal keymap from rules. */ + keymap = test_compile_rules(ctx, NULL, NULL, + "ru,ca,de,us", ",multix,neo,intl", NULL); + assert(keymap); + dump = xkb_keymap_get_as_string(keymap, XKB_KEYMAP_USE_ORIGINAL_FORMAT); + assert(dump); + xkb_keymap_unref(keymap); + keymap = test_compile_buffer(ctx, dump, strlen(dump)); + assert(keymap); + xkb_keymap_unref(keymap); + free(dump); + + xkb_context_unref(ctx); + + return 0; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/common.c b/app/src/main/jni/libxkbcommon/xkbcommon/test/common.c new file mode 100644 index 0000000..0bacba0 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/common.c @@ -0,0 +1,456 @@ +/* + * Copyright © 2009 Dan Nicholson + * Copyright © 2012 Intel Corporation + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the names of the authors or their + * institutions shall not be used in advertising or otherwise to promote the + * sale, use or other dealings in this Software without prior written + * authorization from the authors. + * + * Author: Dan Nicholson + * Daniel Stone + * Ran Benita + */ + +#include +#include +#include +#include +#include + +#include "test.h" + +/* + * Test a sequence of keysyms, resulting from a sequence of key presses, + * against the keysyms they're supposed to generate. + * + * - Each test runs with a clean state. + * - Each line in the test is made up of: + * + A keycode, given as a KEY_* from linux/input.h. + * + A direction - DOWN for press, UP for release, BOTH for + * immediate press + release, REPEAT to just get the syms. + * + A sequence of keysyms that should result from this keypress. + * + * The vararg format is: + * + * + * See below for examples. + */ +int +test_key_seq_va(struct xkb_keymap *keymap, va_list ap) +{ + struct xkb_state *state; + + xkb_keycode_t kc; + int op; + xkb_keysym_t keysym; + + const xkb_keysym_t *syms; + xkb_keysym_t sym; + unsigned int nsyms, i; + char ksbuf[64]; + + fprintf(stderr, "----\n"); + + state = xkb_state_new(keymap); + assert(state); + + for (;;) { + kc = va_arg(ap, int) + EVDEV_OFFSET; + op = va_arg(ap, int); + + nsyms = xkb_state_key_get_syms(state, kc, &syms); + if (nsyms == 1) { + sym = xkb_state_key_get_one_sym(state, kc); + syms = &sym; + } + + fprintf(stderr, "got %u syms for key 0x%x: [", nsyms, kc); + + if (op == DOWN || op == BOTH) + xkb_state_update_key(state, kc, XKB_KEY_DOWN); + if (op == UP || op == BOTH) + xkb_state_update_key(state, kc, XKB_KEY_UP); + + for (i = 0; i < nsyms; i++) { + keysym = va_arg(ap, int); + xkb_keysym_get_name(syms[i], ksbuf, sizeof(ksbuf)); + fprintf(stderr, "%s%s", (i != 0) ? ", " : "", ksbuf); + + if (keysym == FINISH || keysym == NEXT) { + xkb_keysym_get_name(syms[i], ksbuf, sizeof(ksbuf)); + fprintf(stderr, "Did not expect keysym: %s.\n", ksbuf); + goto fail; + } + + if (keysym != syms[i]) { + xkb_keysym_get_name(keysym, ksbuf, sizeof(ksbuf)); + fprintf(stderr, "Expected keysym: %s. ", ksbuf);; + xkb_keysym_get_name(syms[i], ksbuf, sizeof(ksbuf)); + fprintf(stderr, "Got keysym: %s.\n", ksbuf);; + goto fail; + } + } + + if (nsyms == 0) { + keysym = va_arg(ap, int); + if (keysym != XKB_KEY_NoSymbol) { + xkb_keysym_get_name(keysym, ksbuf, sizeof(ksbuf)); + fprintf(stderr, "Expected %s, but got no keysyms.\n", ksbuf); + goto fail; + } + } + + fprintf(stderr, "]\n"); + + keysym = va_arg(ap, int); + if (keysym == NEXT) + continue; + if (keysym == FINISH) + break; + + xkb_keysym_get_name(keysym, ksbuf, sizeof(ksbuf)); + fprintf(stderr, "Expected keysym: %s. Didn't get it.\n", ksbuf); + goto fail; + } + + xkb_state_unref(state); + return 1; + +fail: + xkb_state_unref(state); + return 0; +} + +int +test_key_seq(struct xkb_keymap *keymap, ...) +{ + va_list ap; + int ret; + + va_start(ap, keymap); + ret = test_key_seq_va(keymap, ap); + va_end(ap); + + return ret; +} + +char * +test_get_path(const char *path_rel) +{ + char *path; + size_t path_len; + const char *srcdir = getenv("srcdir"); + + path_len = strlen(srcdir ? srcdir : ".") + + strlen(path_rel ? path_rel : "") + 12; + path = malloc(path_len); + if (!path) { + fprintf(stderr, "Failed to allocate path (%d chars) for %s\n", + (int) path_len, path); + return NULL; + } + snprintf(path, path_len, + "%s/test/data/%s", srcdir ? srcdir : ".", + path_rel ? path_rel : ""); + + return path; +} + +char * +test_read_file(const char *path_rel) +{ + struct stat info; + char *ret, *tmp, *path; + int fd, count, remaining; + + path = test_get_path(path_rel); + if (!path) + return NULL; + + fd = open(path, O_RDONLY); + free(path); + if (fd < 0) + return NULL; + + if (fstat(fd, &info) != 0) { + close(fd); + return NULL; + } + + ret = malloc(info.st_size + 1); + if (!ret) { + close(fd); + return NULL; + } + + remaining = info.st_size; + tmp = ret; + while ((count = read(fd, tmp, remaining))) { + remaining -= count; + tmp += count; + } + ret[info.st_size] = '\0'; + close(fd); + + if (remaining != 0) { + free(ret); + return NULL; + } + + return ret; +} + +struct xkb_context * +test_get_context(enum test_context_flags test_flags) +{ + enum xkb_context_flags ctx_flags; + struct xkb_context *ctx; + char *path; + + ctx_flags = XKB_CONTEXT_NO_DEFAULT_INCLUDES; + if (test_flags & CONTEXT_ALLOW_ENVIRONMENT_NAMES) { + unsetenv("XKB_DEFAULT_RULES"); + unsetenv("XKB_DEFAULT_MODEL"); + unsetenv("XKB_DEFAULT_LAYOUT"); + unsetenv("XKB_DEFAULT_VARIANT"); + unsetenv("XKB_DEFAULT_OPTIONS"); + } + else { + ctx_flags |= XKB_CONTEXT_NO_ENVIRONMENT_NAMES; + } + + ctx = xkb_context_new(ctx_flags); + if (!ctx) + return NULL; + + path = test_get_path(""); + if (!path) + return NULL; + + xkb_context_include_path_append(ctx, path); + free(path); + + return ctx; +} + +struct xkb_keymap * +test_compile_file(struct xkb_context *context, const char *path_rel) +{ + struct xkb_keymap *keymap; + FILE *file; + char *path; + + path = test_get_path(path_rel); + if (!path) + return NULL; + + file = fopen(path, "r"); + if (!file) { + fprintf(stderr, "Failed to open path: %s\n", path); + free(path); + return NULL; + } + assert(file != NULL); + + keymap = xkb_keymap_new_from_file(context, file, + XKB_KEYMAP_FORMAT_TEXT_V1, 0); + fclose(file); + + if (!keymap) { + fprintf(stderr, "Failed to compile path: %s\n", path); + free(path); + return NULL; + } + + fprintf(stderr, "Successfully compiled path: %s\n", path); + free(path); + + return keymap; +} + +struct xkb_keymap * +test_compile_string(struct xkb_context *context, const char *string) +{ + struct xkb_keymap *keymap; + + keymap = xkb_keymap_new_from_string(context, string, + XKB_KEYMAP_FORMAT_TEXT_V1, 0); + if (!keymap) { + fprintf(stderr, "Failed to compile string\n"); + return NULL; + } + + return keymap; +} + +struct xkb_keymap * +test_compile_buffer(struct xkb_context *context, const char *buf, size_t len) +{ + struct xkb_keymap *keymap; + + keymap = xkb_keymap_new_from_buffer(context, buf, len, + XKB_KEYMAP_FORMAT_TEXT_V1, 0); + if (!keymap) { + fprintf(stderr, "Failed to compile keymap from memory buffer\n"); + return NULL; + } + + return keymap; +} + +struct xkb_keymap * +test_compile_rules(struct xkb_context *context, const char *rules, + const char *model, const char *layout, + const char *variant, const char *options) +{ + struct xkb_keymap *keymap; + struct xkb_rule_names rmlvo = { + .rules = isempty(rules) ? NULL : rules, + .model = isempty(model) ? NULL : model, + .layout = isempty(layout) ? NULL : layout, + .variant = isempty(variant) ? NULL : variant, + .options = isempty(options) ? NULL : options + }; + + if (!rules && !model && !layout && !variant && !options) + keymap = xkb_keymap_new_from_names(context, NULL, 0); + else + keymap = xkb_keymap_new_from_names(context, &rmlvo, 0); + + if (!keymap) { + fprintf(stderr, + "Failed to compile RMLVO: '%s', '%s', '%s', '%s', '%s'\n", + rules, model, layout, variant, options); + return NULL; + } + + return keymap; +} + +void +test_print_keycode_state(struct xkb_state *state, + struct xkb_compose_state *compose_state, + xkb_keycode_t keycode) +{ + struct xkb_keymap *keymap; + + xkb_keysym_t sym; + const xkb_keysym_t *syms; + int nsyms; + char s[16]; + xkb_layout_index_t layout; + enum xkb_compose_status status; + + keymap = xkb_state_get_keymap(state); + + nsyms = xkb_state_key_get_syms(state, keycode, &syms); + + if (nsyms <= 0) + return; + + status = XKB_COMPOSE_NOTHING; + if (compose_state) + status = xkb_compose_state_get_status(compose_state); + + if (status == XKB_COMPOSE_COMPOSING || status == XKB_COMPOSE_CANCELLED) + return; + + if (status == XKB_COMPOSE_COMPOSED) { + sym = xkb_compose_state_get_one_sym(compose_state); + syms = &sym; + nsyms = 1; + } + else if (nsyms == 1) { + sym = xkb_state_key_get_one_sym(state, keycode); + syms = &sym; + } + + printf("keysyms [ "); + for (int i = 0; i < nsyms; i++) { + xkb_keysym_get_name(syms[i], s, sizeof(s)); + printf("%-*s ", (int) sizeof(s), s); + } + printf("] "); + + if (status == XKB_COMPOSE_COMPOSED) + xkb_compose_state_get_utf8(compose_state, s, sizeof(s)); + else + xkb_state_key_get_utf8(state, keycode, s, sizeof(s)); + printf("unicode [ %s ] ", s); + + layout = xkb_state_key_get_layout(state, keycode); + printf("layout [ %s (%d) ] ", + xkb_keymap_layout_get_name(keymap, layout), layout); + + printf("level [ %d ] ", + xkb_state_key_get_level(state, keycode, layout)); + + printf("mods [ "); + for (xkb_mod_index_t mod = 0; mod < xkb_keymap_num_mods(keymap); mod++) { + if (xkb_state_mod_index_is_active(state, mod, + XKB_STATE_MODS_EFFECTIVE) <= 0) + continue; + if (xkb_state_mod_index_is_consumed(state, keycode, mod)) + printf("-%s ", xkb_keymap_mod_get_name(keymap, mod)); + else + printf("%s ", xkb_keymap_mod_get_name(keymap, mod)); + } + printf("] "); + + printf("leds [ "); + for (xkb_led_index_t led = 0; led < xkb_keymap_num_leds(keymap); led++) { + if (xkb_state_led_index_is_active(state, led) <= 0) + continue; + printf("%s ", xkb_keymap_led_get_name(keymap, led)); + } + printf("] "); + + printf("\n"); +} + +void +test_print_state_changes(enum xkb_state_component changed) +{ + if (changed == 0) + return; + + printf("changed [ "); + if (changed & XKB_STATE_LAYOUT_EFFECTIVE) + printf("effective-layout "); + if (changed & XKB_STATE_LAYOUT_DEPRESSED) + printf("depressed-layout "); + if (changed & XKB_STATE_LAYOUT_LATCHED) + printf("latched-layout "); + if (changed & XKB_STATE_LAYOUT_LOCKED) + printf("locked-layout "); + if (changed & XKB_STATE_MODS_EFFECTIVE) + printf("effective-mods "); + if (changed & XKB_STATE_MODS_DEPRESSED) + printf("depressed-mods "); + if (changed & XKB_STATE_MODS_LATCHED) + printf("latched-mods "); + if (changed & XKB_STATE_MODS_LOCKED) + printf("locked-mods "); + if (changed & XKB_STATE_LEDS) + printf("leds "); + printf("]\n"); +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/compose.c b/app/src/main/jni/libxkbcommon/xkbcommon/test/compose.c new file mode 100644 index 0000000..9bbef18 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/compose.c @@ -0,0 +1,525 @@ +/* + * Copyright © 2014 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "xkbcommon/xkbcommon-compose.h" + +#include "test.h" + +static const char * +compose_status_string(enum xkb_compose_status status) +{ + switch (status) { + case XKB_COMPOSE_NOTHING: + return "nothing"; + case XKB_COMPOSE_COMPOSING: + return "composing"; + case XKB_COMPOSE_COMPOSED: + return "composed"; + case XKB_COMPOSE_CANCELLED: + return "cancelled"; + } + + return ""; +} + +static const char * +feed_result_string(enum xkb_compose_feed_result result) +{ + switch (result) { + case XKB_COMPOSE_FEED_IGNORED: + return "ignored"; + case XKB_COMPOSE_FEED_ACCEPTED: + return "accepted"; + } + + return ""; +} + +/* + * Feed a sequence of keysyms to a fresh compose state and test the outcome. + * + * The varargs consists of lines in the following format: + * + * Terminated by a line consisting only of XKB_KEY_NoSymbol. + */ +static bool +test_compose_seq_va(struct xkb_compose_table *table, va_list ap) +{ + int ret; + struct xkb_compose_state *state; + char buffer[64]; + + state = xkb_compose_state_new(table, XKB_COMPOSE_STATE_NO_FLAGS); + assert(state); + + for (int i = 1; ; i++) { + xkb_keysym_t input_keysym; + enum xkb_compose_feed_result result, expected_result; + enum xkb_compose_status status, expected_status; + const char *expected_string; + xkb_keysym_t keysym, expected_keysym; + + input_keysym = va_arg(ap, xkb_keysym_t); + if (input_keysym == XKB_KEY_NoSymbol) + break; + + expected_result = va_arg(ap, enum xkb_compose_feed_result); + expected_status = va_arg(ap, enum xkb_compose_status); + expected_string = va_arg(ap, const char *); + expected_keysym = va_arg(ap, xkb_keysym_t); + + result = xkb_compose_state_feed(state, input_keysym); + + if (result != expected_result) { + fprintf(stderr, "after feeding %d keysyms:\n", i); + fprintf(stderr, "expected feed result: %s\n", + feed_result_string(expected_result)); + fprintf(stderr, "got feed result: %s\n", + feed_result_string(result)); + goto fail; + } + + status = xkb_compose_state_get_status(state); + if (status != expected_status) { + fprintf(stderr, "after feeding %d keysyms:\n", i); + fprintf(stderr, "expected status: %s\n", + compose_status_string(expected_status)); + fprintf(stderr, "got status: %s\n", + compose_status_string(status)); + goto fail; + } + + ret = xkb_compose_state_get_utf8(state, buffer, sizeof(buffer)); + if (ret < 0 || (size_t) ret >= sizeof(buffer)) { + fprintf(stderr, "after feeding %d keysyms:\n", i); + fprintf(stderr, "expected string: %s\n", expected_string); + fprintf(stderr, "got error: %d\n", ret); + goto fail; + } + if (!streq(buffer, expected_string)) { + fprintf(stderr, "after feeding %d keysyms:\n", i); + fprintf(stderr, "expected string: %s\n", strempty(expected_string)); + fprintf(stderr, "got string: %s\n", buffer); + goto fail; + } + + keysym = xkb_compose_state_get_one_sym(state); + if (keysym != expected_keysym) { + fprintf(stderr, "after feeding %d keysyms:\n", i); + xkb_keysym_get_name(expected_keysym, buffer, sizeof(buffer)); + fprintf(stderr, "expected keysym: %s\n", buffer); + xkb_keysym_get_name(keysym, buffer, sizeof(buffer)); + fprintf(stderr, "got keysym (%#x): %s\n", keysym, buffer); + goto fail; + } + } + + xkb_compose_state_unref(state); + return true; + +fail: + xkb_compose_state_unref(state); + return false; +} + +static bool +test_compose_seq(struct xkb_compose_table *table, ...) +{ + va_list ap; + bool ok; + va_start(ap, table); + ok = test_compose_seq_va(table, ap); + va_end(ap); + return ok; +} + +static bool +test_compose_seq_buffer(struct xkb_context *ctx, const char *buffer, ...) +{ + va_list ap; + bool ok; + struct xkb_compose_table *table; + table = xkb_compose_table_new_from_buffer(ctx, buffer, strlen(buffer), "", + XKB_COMPOSE_FORMAT_TEXT_V1, + XKB_COMPOSE_COMPILE_NO_FLAGS); + assert(table); + va_start(ap, buffer); + ok = test_compose_seq_va(table, ap); + va_end(ap); + xkb_compose_table_unref(table); + return ok; +} + +static void +test_seqs(struct xkb_context *ctx) +{ + struct xkb_compose_table *table; + char *path; + FILE *file; + + path = test_get_path("compose/en_US.UTF-8/Compose"); + file = fopen(path, "r"); + assert(file); + free(path); + + table = xkb_compose_table_new_from_file(ctx, file, "", + XKB_COMPOSE_FORMAT_TEXT_V1, + XKB_COMPOSE_COMPILE_NO_FLAGS); + assert(table); + fclose(file); + + assert(test_compose_seq(table, + XKB_KEY_dead_tilde, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_space, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "~", XKB_KEY_asciitilde, + XKB_KEY_NoSymbol)); + + assert(test_compose_seq(table, + XKB_KEY_dead_tilde, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_space, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "~", XKB_KEY_asciitilde, + XKB_KEY_dead_tilde, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_space, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "~", XKB_KEY_asciitilde, + XKB_KEY_NoSymbol)); + + assert(test_compose_seq(table, + XKB_KEY_dead_tilde, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_dead_tilde, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "~", XKB_KEY_asciitilde, + XKB_KEY_NoSymbol)); + + assert(test_compose_seq(table, + XKB_KEY_dead_acute, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_space, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "'", XKB_KEY_apostrophe, + XKB_KEY_Caps_Lock, XKB_COMPOSE_FEED_IGNORED, XKB_COMPOSE_COMPOSED, "'", XKB_KEY_apostrophe, + XKB_KEY_NoSymbol)); + + assert(test_compose_seq(table, + XKB_KEY_dead_acute, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_dead_acute, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "´", XKB_KEY_acute, + XKB_KEY_NoSymbol)); + + assert(test_compose_seq(table, + XKB_KEY_Multi_key, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_Shift_L, XKB_COMPOSE_FEED_IGNORED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_A, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_Caps_Lock, XKB_COMPOSE_FEED_IGNORED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_Control_L, XKB_COMPOSE_FEED_IGNORED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_T, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "@", XKB_KEY_at, + XKB_KEY_NoSymbol)); + + assert(test_compose_seq(table, + XKB_KEY_7, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_NOTHING, "", XKB_KEY_NoSymbol, + XKB_KEY_a, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_NOTHING, "", XKB_KEY_NoSymbol, + XKB_KEY_b, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_NOTHING, "", XKB_KEY_NoSymbol, + XKB_KEY_NoSymbol)); + + assert(test_compose_seq(table, + XKB_KEY_Multi_key, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_apostrophe, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_7, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_CANCELLED, "", XKB_KEY_NoSymbol, + XKB_KEY_7, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_NOTHING, "", XKB_KEY_NoSymbol, + XKB_KEY_Caps_Lock, XKB_COMPOSE_FEED_IGNORED, XKB_COMPOSE_NOTHING, "", XKB_KEY_NoSymbol, + XKB_KEY_NoSymbol)); + + xkb_compose_table_unref(table); + + /* Make sure one-keysym sequences work. */ + assert(test_compose_seq_buffer(ctx, + " : \"foo\" X \n" + " : \"baz\" Y \n", + XKB_KEY_A, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "foo", XKB_KEY_X, + XKB_KEY_A, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "foo", XKB_KEY_X, + XKB_KEY_C, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_NOTHING, "", XKB_KEY_NoSymbol, + XKB_KEY_B, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_A, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "baz", XKB_KEY_Y, + XKB_KEY_NoSymbol)); + + /* No sequences at all. */ + assert(test_compose_seq_buffer(ctx, + "", + XKB_KEY_A, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_NOTHING, "", XKB_KEY_NoSymbol, + XKB_KEY_B, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_NOTHING, "", XKB_KEY_NoSymbol, + XKB_KEY_C, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_NOTHING, "", XKB_KEY_NoSymbol, + XKB_KEY_Multi_key, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_NOTHING, "", XKB_KEY_NoSymbol, + XKB_KEY_dead_acute, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_NOTHING, "", XKB_KEY_NoSymbol, + XKB_KEY_NoSymbol)); + + /* Only keysym - string derived from keysym. */ + assert(test_compose_seq_buffer(ctx, + " : X \n" + " : dollar \n" + " : dead_acute \n", + XKB_KEY_A, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_B, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "X", XKB_KEY_X, + XKB_KEY_B, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_A, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "$", XKB_KEY_dollar, + XKB_KEY_C, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "", XKB_KEY_dead_acute, + XKB_KEY_NoSymbol)); + + /* Make sure a cancelling keysym doesn't start a new sequence. */ + assert(test_compose_seq_buffer(ctx, + " : X \n" + " : Y \n", + XKB_KEY_A, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_C, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_CANCELLED, "", XKB_KEY_NoSymbol, + XKB_KEY_D, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_NOTHING, "", XKB_KEY_NoSymbol, + XKB_KEY_A, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_C, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_CANCELLED, "", XKB_KEY_NoSymbol, + XKB_KEY_C, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_D, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "Y", XKB_KEY_Y, + XKB_KEY_NoSymbol)); +} + +static void +test_conflicting(struct xkb_context *ctx) +{ + // new is prefix of old + assert(test_compose_seq_buffer(ctx, + " : \"foo\" A \n" + " : \"bar\" B \n", + XKB_KEY_A, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_B, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_C, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "foo", XKB_KEY_A, + XKB_KEY_NoSymbol)); + + // old is a prefix of new + assert(test_compose_seq_buffer(ctx, + " : \"bar\" B \n" + " : \"foo\" A \n", + XKB_KEY_A, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_B, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_C, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "foo", XKB_KEY_A, + XKB_KEY_NoSymbol)); + + // new duplicate of old + assert(test_compose_seq_buffer(ctx, + " : \"bar\" B \n" + " : \"bar\" B \n", + XKB_KEY_A, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_B, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "bar", XKB_KEY_B, + XKB_KEY_C, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_NOTHING, "", XKB_KEY_NoSymbol, + XKB_KEY_NoSymbol)); + + // new same length as old #1 + assert(test_compose_seq_buffer(ctx, + " : \"foo\" A \n" + " : \"bar\" B \n", + XKB_KEY_A, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_B, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "bar", XKB_KEY_B, + XKB_KEY_NoSymbol)); + + // new same length as old #2 + assert(test_compose_seq_buffer(ctx, + " : \"foo\" A \n" + " : \"foo\" B \n", + XKB_KEY_A, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_B, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "foo", XKB_KEY_B, + XKB_KEY_NoSymbol)); + + // new same length as old #3 + assert(test_compose_seq_buffer(ctx, + " : \"foo\" A \n" + " : \"bar\" A \n", + XKB_KEY_A, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_B, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "bar", XKB_KEY_A, + XKB_KEY_NoSymbol)); +} + +static void +test_state(struct xkb_context *ctx) +{ + struct xkb_compose_table *table; + struct xkb_compose_state *state; + char *path; + FILE *file; + + path = test_get_path("compose/en_US.UTF-8/Compose"); + file = fopen(path, "r"); + assert(file); + free(path); + + table = xkb_compose_table_new_from_file(ctx, file, "", + XKB_COMPOSE_FORMAT_TEXT_V1, + XKB_COMPOSE_COMPILE_NO_FLAGS); + assert(table); + fclose(file); + + state = xkb_compose_state_new(table, XKB_COMPOSE_STATE_NO_FLAGS); + assert(state); + + assert(xkb_compose_state_get_status(state) == XKB_COMPOSE_NOTHING); + xkb_compose_state_reset(state); + assert(xkb_compose_state_get_status(state) == XKB_COMPOSE_NOTHING); + xkb_compose_state_feed(state, XKB_KEY_NoSymbol); + assert(xkb_compose_state_get_status(state) == XKB_COMPOSE_NOTHING); + xkb_compose_state_feed(state, XKB_KEY_Multi_key); + assert(xkb_compose_state_get_status(state) == XKB_COMPOSE_COMPOSING); + xkb_compose_state_reset(state); + assert(xkb_compose_state_get_status(state) == XKB_COMPOSE_NOTHING); + xkb_compose_state_feed(state, XKB_KEY_Multi_key); + assert(xkb_compose_state_get_status(state) == XKB_COMPOSE_COMPOSING); + xkb_compose_state_feed(state, XKB_KEY_Multi_key); + assert(xkb_compose_state_get_status(state) == XKB_COMPOSE_CANCELLED); + xkb_compose_state_feed(state, XKB_KEY_Multi_key); + assert(xkb_compose_state_get_status(state) == XKB_COMPOSE_COMPOSING); + xkb_compose_state_feed(state, XKB_KEY_Multi_key); + assert(xkb_compose_state_get_status(state) == XKB_COMPOSE_CANCELLED); + xkb_compose_state_reset(state); + assert(xkb_compose_state_get_status(state) == XKB_COMPOSE_NOTHING); + xkb_compose_state_feed(state, XKB_KEY_dead_acute); + assert(xkb_compose_state_get_status(state) == XKB_COMPOSE_COMPOSING); + xkb_compose_state_feed(state, XKB_KEY_A); + assert(xkb_compose_state_get_status(state) == XKB_COMPOSE_COMPOSED); + xkb_compose_state_reset(state); + assert(xkb_compose_state_get_status(state) == XKB_COMPOSE_NOTHING); + xkb_compose_state_feed(state, XKB_KEY_dead_acute); + assert(xkb_compose_state_get_status(state) == XKB_COMPOSE_COMPOSING); + xkb_compose_state_feed(state, XKB_KEY_A); + assert(xkb_compose_state_get_status(state) == XKB_COMPOSE_COMPOSED); + xkb_compose_state_reset(state); + xkb_compose_state_feed(state, XKB_KEY_NoSymbol); + assert(xkb_compose_state_get_status(state) == XKB_COMPOSE_NOTHING); + + xkb_compose_state_unref(state); + xkb_compose_table_unref(table); +} + +static void +test_XCOMPOSEFILE(struct xkb_context *ctx) +{ + struct xkb_compose_table *table; + char *path; + + path = test_get_path("compose/en_US.UTF-8/Compose"); + setenv("XCOMPOSEFILE", path, 1); + free(path); + + table = xkb_compose_table_new_from_locale(ctx, "blabla", + XKB_COMPOSE_COMPILE_NO_FLAGS); + assert(table); + + assert(test_compose_seq(table, + XKB_KEY_dead_tilde, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_space, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "~", XKB_KEY_asciitilde, + XKB_KEY_NoSymbol)); + + xkb_compose_table_unref(table); +} + +static void +test_modifier_syntax(struct xkb_context *ctx) +{ + const char *table_string; + + /* We don't do anything with the modifiers, but make sure we can parse + * them. */ + + assert(test_compose_seq_buffer(ctx, + "None : X \n" + "! Shift : Y \n" + "! Ctrl : Y \n" + "! Alt : Y \n" + "! Caps : Y \n" + "! Lock : Y \n" + "! Shift Ctrl : Y \n" + "! ~Shift : Y \n" + "! ~Shift Ctrl : Y \n" + "! Shift ~Ctrl : Y \n" + "! Shift ~Ctrl ~Alt : Y \n" + " ! Shift : Y \n" + "None ! Shift : Y \n" + "None

; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; +}; + +xkb_keycodes "azerty" { + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias =

; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; +}; + +xkb_keycodes "qwertz" { + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias =

; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/empty b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/empty new file mode 100644 index 0000000..eedc943 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/empty @@ -0,0 +1,4 @@ +default xkb_keycodes "empty" { + minimum= 8; + maximum= 255; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/evdev b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/evdev new file mode 100644 index 0000000..624ac68 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/evdev @@ -0,0 +1,314 @@ +// translation from evdev scancodes to something resembling xfree86 keycodes. + +default xkb_keycodes "evdev" { + minimum = 8; + maximum = 255; + + # Added for pc105 compatibility + = 94; + + = 49; + = 10; + = 11; + = 12; + = 13; + = 14; + = 15; + = 16; + = 17; + = 18; + = 19; + = 20; + = 21; + = 22; + + = 23; + = 24; + = 25; + = 26; + = 27; + = 28; + = 29; + = 30; + = 31; + = 32; + = 33; + = 34; + = 35; + = 51; + alias = ; + = 36; + + = 66; + = 38; + = 39; + = 40; + = 41; + = 42; + = 43; + = 44; + = 45; + = 46; + = 47; + = 48; + + = 50; + = 52; + = 53; + = 54; + = 55; + = 56; + = 57; + = 58; + = 59; + = 60; + = 61; + = 62; + + = 64; + = 37; + = 65; + = 105; + = 108; + // Microsoft keyboard extra keys + = 133; + = 134; + = 135; + alias

= ; + + = 9; + = 67; + = 68; + = 69; + = 70; + = 71; + = 72; + = 73; + = 74; + = 75; + = 76; + = 95; + = 96; + + = 107; + // = 107; + = 78; + = 127; + // = 419; + + = 118; + = 110; + = 112; + = 119; + = 115; + = 117; + + = 111; + = 113; + = 116; + = 114; + + = 77; + = 106; + = 63; + = 82; + + = 79; + = 80; + = 81; + = 86; + + = 83; + = 84; + = 85; + + = 87; + = 88; + = 89; + = 104; + + = 90; + = 91; + = 125; + + = 191; + = 192; + = 193; + = 194; + = 195; + = 196; + = 197; + = 198; + = 199; + = 200; + = 201; + = 202; + + // Keys that are generated on Japanese keyboards + + // = 93; // Hankaku/Zenkakau toggle - not actually used + alias = ; + = 101; // Hiragana/Katakana toggle + = 97; // backslash/underscore + = 100; // Henkan + = 102; // Muhenkan + = 132; // Yen + = 98; // Katakana + = 99; // Hiragana + = 103; // KPJPComma + // = 97; // Romaji + + // Keys that are generated on Korean keyboards + + = 130; // Hangul Latin toggle + = 131; // Hangul to Hanja conversion + + // Solaris compatibility + + alias = ; + alias = ; + = 121; + = 122; + = 123; + = 124; + = 136; + = 137; + = 138; + = 139; + = 140; + = 141; + = 142; + = 143; + = 144; + = 145; + = 146; + + // Extended keys that may be generated on "Internet" keyboards. + // evdev has standardize names for these. + + = 109; // #define KEY_LINEFEED 101 + = 120; // #define KEY_MACRO 112 + = 126; // #define KEY_KPPLUSMINUS 118 + = 128; // #define KEY_SCALE 120 + = 129; // #define KEY_KPCOMMA 121 + = 147; // #define KEY_MENU 139 + = 148; // #define KEY_CALC 140 + = 149; // #define KEY_SETUP 141 + = 150; // #define KEY_SLEEP 142 + = 151; // #define KEY_WAKEUP 143 + = 152; // #define KEY_FILE 144 + = 153; // #define KEY_SENDFILE 145 + = 154; // #define KEY_DELETEFILE 146 + = 155; // #define KEY_XFER 147 + = 156; // #define KEY_PROG1 148 + = 157; // #define KEY_PROG2 149 + = 158; // #define KEY_WWW 150 + = 159; // #define KEY_MSDOS 151 + = 160; // #define KEY_COFFEE 152 + = 161; // #define KEY_DIRECTION 153 + = 162; // #define KEY_CYCLEWINDOWS 154 + = 163; // #define KEY_MAIL 155 + = 164; // #define KEY_BOOKMARKS 156 + = 165; // #define KEY_COMPUTER 157 + = 166; // #define KEY_BACK 158 + = 167; // #define KEY_FORWARD 159 + = 168; // #define KEY_CLOSECD 160 + = 169; // #define KEY_EJECTCD 161 + = 170; // #define KEY_EJECTCLOSECD 162 + = 171; // #define KEY_NEXTSONG 163 + = 172; // #define KEY_PLAYPAUSE 164 + = 173; // #define KEY_PREVIOUSSONG 165 + = 174; // #define KEY_STOPCD 166 + = 175; // #define KEY_RECORD 167 + = 176; // #define KEY_REWIND 168 + = 177; // #define KEY_PHONE 169 + = 178; // #define KEY_ISO 170 + = 179; // #define KEY_CONFIG 171 + = 180; // #define KEY_HOMEPAGE 172 + = 181; // #define KEY_REFRESH 173 + = 182; // #define KEY_EXIT 174 + = 183; // #define KEY_MOVE 175 + = 184; // #define KEY_EDIT 176 + = 185; // #define KEY_SCROLLUP 177 + = 186; // #define KEY_SCROLLDOWN 178 + = 187; // #define KEY_KPLEFTPAREN 179 + = 188; // #define KEY_KPRIGHTPAREN 180 + = 189; // #define KEY_NEW 181 + = 190; // #define KEY_REDO 182 + = 208; // #define KEY_PLAYCD 200 + = 209; // #define KEY_PAUSECD 201 + = 210; // #define KEY_PROG3 202 + = 211; // #define KEY_PROG4 203 conflicts with AB11 + = 212; // #define KEY_DASHBOARD 204 + = 213; // #define KEY_SUSPEND 205 + = 214; // #define KEY_CLOSE 206 + = 215; // #define KEY_PLAY 207 + = 216; // #define KEY_FASTFORWARD 208 + = 217; // #define KEY_BASSBOOST 209 + = 218; // #define KEY_PRINT 210 + = 219; // #define KEY_HP 211 + = 220; // #define KEY_CAMERA 212 + = 221; // #define KEY_SOUND 213 + = 222; // #define KEY_QUESTION 214 + = 223; // #define KEY_EMAIL 215 + = 224; // #define KEY_CHAT 216 + = 225; // #define KEY_SEARCH 217 + = 226; // #define KEY_CONNECT 218 + = 227; // #define KEY_FINANCE 219 + = 228; // #define KEY_SPORT 220 + = 229; // #define KEY_SHOP 221 + = 230; // #define KEY_ALTERASE 222 + = 231; // #define KEY_CANCEL 223 + = 232; // #define KEY_BRIGHTNESSDOWN 224 + = 233; // #define KEY_BRIGHTNESSUP 225 + = 234; // #define KEY_MEDIA 226 + = 235; // #define KEY_SWITCHVIDEOMODE 227 + = 236; // #define KEY_KBDILLUMTOGGLE 228 + = 237; // #define KEY_KBDILLUMDOWN 229 + = 238; // #define KEY_KBDILLUMUP 230 + = 239; // #define KEY_SEND 231 + = 240; // #define KEY_REPLY 232 + = 241; // #define KEY_FORWARDMAIL 233 + = 242; // #define KEY_SAVE 234 + = 243; // #define KEY_DOCUMENTS 235 + = 244; // #define KEY_BATTERY 236 + = 245; // #define KEY_BLUETOOTH 237 + = 246; // #define KEY_WLAN 238 + = 247; // #define KEY_UWB 239 + = 248; // #define KEY_UNKNOWN 240 + = 249; // #define KEY_VIDEO_NEXT 241 + = 250; // #define KEY_VIDEO_PREV 242 + = 251; // #define KEY_BRIGHTNESS_CYCLE 243 + = 252; // #define KEY_BRIGHTNESS_ZERO 244 + = 253; // #define KEY_DISPLAY_OFF 245 + + // Fake keycodes for virtual keys + = 92; + = 203; + = 204; + = 205; + = 206; + = 207; + + indicator 1 = "Caps Lock"; + indicator 2 = "Num Lock"; + indicator 3 = "Scroll Lock"; + indicator 4 = "Compose"; + indicator 5 = "Kana"; + indicator 6 = "Sleep"; + indicator 7 = "Suspend"; + indicator 8 = "Mute"; + indicator 9 = "Misc"; + indicator 10 = "Mail"; + indicator 11 = "Charging"; + + alias = ; + + // For Brazilian ABNT2 + alias = ; +}; + +// PC98 +xkb_keycodes "pc98" { + include "evdev(evdev)" +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/evdev-xkbcommon b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/evdev-xkbcommon new file mode 100644 index 0000000..5d688fa --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/evdev-xkbcommon @@ -0,0 +1,505 @@ +default xkb_keycodes "evdev" { + = 0; + = 1; + <1> = 2; + <2> = 3; + <3> = 4; + <4> = 5; + <5> = 6; + <6> = 7; + <7> = 8; + <8> = 9; + <9> = 10; + <0> = 11; + = 12; + = 13; + = 14; + = 15; + = 16; + = 17; + = 18; + = 19; + = 20; + = 21; + = 22; + = 23; + = 24; +

= 25; + = 26; + = 27; + = 28; + = 29; + = 30; + = 31; + = 32; + = 33; + = 34; + = 35; + = 36; + = 37; + = 38; + = 39; + = 40; + = 41; + = 42; + = 43; + = 44; + = 45; + = 46; + = 47; + = 48; + = 49; + = 50; + = 51; + = 52; + = 53; + = 54; + = 55; + = 56; + = 57; + = 58; + = 59; + = 60; + = 61; + = 62; + = 63; + = 64; + = 65; + = 66; + = 67; + = 68; + = 69; + = 70; + = 71; + = 72; + = 73; + = 74; + = 75; + = 76; + = 77; + = 78; + = 79; + = 80; + = 81; + = 82; + = 83; + = 85; + <102ND> = 86; + = 87; + = 88; + = 89; + = 90; + = 91; + = 92; + = 93; + = 94; + = 95; + = 96; + = 97; + = 98; + = 99; + = 100; + = 101; + = 102; + = 103; + = 104; + = 105; + = 106; + = 107; + = 108; + = 109; + = 110; + = 111; + = 112; + = 113; + = 114; + = 115; + = 116; + = 117; + = 118; + = 119; + = 120; + = 121; + = 122; + = 123; + = 124; + = 125; + = 126; + = 127; + = 128; + = 129; + = 130; + = 131; + = 132; + = 133; + = 134; + = 135; + = 136; + = 137; + = 138; +

= 139; + = 140; + = 141; + = 142; + = 143; + = 144; + = 145; + = 146; + = 147; + = 148; + = 149; + = 150; + = 151; + = 152; + = 153; + = 154; + = 155; + = 156; + = 157; + = 158; + = 159; + = 160; + = 161; + = 162; + = 163; + = 164; + = 165; + = 166; + = 167; + = 168; + = 169; + = 170; + = 171; + = 172; + = 173; + = 174; + = 175; + = 176; + = 177; + = 178; + = 179; + = 180; + = 181; + = 182; + = 183; + = 184; + = 185; + = 186; + = 187; + = 188; + = 189; + = 190; + = 191; + = 192; + = 193; + = 194; + = 200; + = 201; + = 202; + = 203; + = 204; + = 205; + = 206; + = 207; + = 208; + = 209; + = 210; + = 211; + = 212; + = 213; + = 214; + = 215; + = 216; + = 217; + = 218; + = 219; + = 220; + = 221; + = 222; + = 223; + = 224; + = 225; + = 226; + = 227; + = 228; + = 229; + = 230; + = 231; + = 232; + = 233; + = 234; + = 235; + = 236; + = 237; + = 238; + = 239; + = 240; + = 241; + = 242; + = 243; + = 244; + = 245; + = 246; + = 247; + = 248; + + // Fake keycodes for virtual keys + = 84; + = 195; + = 196; + = 197; + = 198; + = 199; + + indicator 0x01 = "Num Lock"; // NUML + indicator 0x02 = "Caps Lock"; // CAPSL + indicator 0x03 = "Scroll Lock"; // SCROLLL + indicator 0x04 = "Compose"; // COMPOSE + indicator 0x05 = "Kana"; // KANA + indicator 0x06 = "Sleep"; // SLEEP + indicator 0x07 = "Suspend"; // SUSPEND + indicator 0x08 = "Mute"; // MUTE + indicator 0x09 = "Misc"; // MISC + indicator 0x0a = "Mail"; // MAIL + indicator 0x0b = "Charging"; // CHARGING + + alias = ; + alias = <1>; + alias = <2>; + alias = <3>; + alias = <4>; + alias = <5>; + alias = <6>; + alias = <7>; + alias = <8>; + alias = <9>; + alias = <0>; + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + + alias = ; + + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + + // For Brazilian ABNT2 + alias = ; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/xfree86 b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/xfree86 new file mode 100644 index 0000000..47dc893 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/xfree86 @@ -0,0 +1,410 @@ +// "standard" XFree86 codes +// It seems that the "default" must be the first entry in the file. + +default xkb_keycodes "xfree86" { + include "xfree86(basic)" + = 51; + alias = ; + = 94; +}; + +xkb_keycodes "basic" { + + minimum= 8; + maximum= 255; + + = 49; + alias = ; // Some geometries use AE00 + = 10; + = 11; + = 12; + = 13; + = 14; + = 15; + = 16; + = 17; + = 18; + = 19; + = 20; + = 21; + = 22; + + = 23; + = 24; + = 25; + = 26; + = 27; + = 28; + = 29; + = 30; + = 31; + = 32; + = 33; + = 34; + = 35; + = 36; + + = 66; + = 38; + = 39; + = 40; + = 41; + = 42; + = 43; + = 44; + = 45; + = 46; + = 47; + = 48; + + = 50; + = 52; + = 53; + = 54; + = 55; + = 56; + = 57; + = 58; + = 59; + = 60; + = 61; + = 62; + + = 64; + = 37; + = 65; + = 109; + = 113; + // Microsoft keyboard extra keys + = 115; + = 116; + = 117; + + = 9; + = 67; + = 68; + = 69; + = 70; + = 71; + = 72; + = 73; + = 74; + = 75; + = 76; + = 95; + = 96; + + = 111; + = 92; + = 78; + = 110; + = 114; + + = 106; + = 97; + = 99; + = 107; + = 103; + = 105; + + = 98; + = 100; + = 104; + = 102; + + = 77; + = 112; + = 63; + = 82; + + = 79; + = 80; + = 81; + = 86; + + = 83; + = 84; + = 85; + + = 87; + = 88; + = 89; + = 108; + + = 90; + = 91; + = 126; + + = 118; + = 119; + = 120; + = 121; + = 122; + = 123; + + // Keys that are generated on Japanese keyboards + + alias = ; // Hankaku_Zenkaku toggle + = 208; // Hiragana_Katakana toggle + = 211; // backslash/underscore + = 129; // Henkan + = 131; // Muhenkan + = 133; // Yen + = 210; // Alphanumeric mode on macintosh + = 209; // Kana mode on macintosh + + // Keys that are generated on Korean keyboards + + alias = ; // Hangul Latin toggle + alias = ; // Hangul to Hanja conversion + + // Extended keys that may be generated on "Internet" keyboards. + // These are not standardised, hence the meaningless names. + // The entries commented out are never generated because the raw codes + // in those positions are already used for well-defined keys. + + = 130; + = 132; + alias = ; + = 134; + = 135; + = 136; + = 137; + = 138; + = 139; + = 140; + = 141; + = 142; + = 143; + = 144; + = 145; + = 146; + = 147; + = 148; + = 149; + = 150; + = 151; + = 152; + = 153; + = 154; + = 155; + // = 156; + // = 157; + = 158; + = 159; + = 160; + = 161; + = 162; + = 163; + = 164; + = 165; + = 166; + = 167; + = 168; + = 169; + // = 170; + = 171; + = 172; + = 173; + = 174; + = 175; + = 176; + = 177; + = 178; + = 179; + = 180; + // = 181; + // = 182; + // = 183; + // = 184; + = 185; + = 186; + = 187; + = 188; + // = 189; + // = 190; + // = 191; + // = 192; + // = 193; + = 194; + = 195; + = 196; + = 197; + // = 198; + // = 199; + // = 200; + // = 201; + = 202; + // = 203; + // = 204; + // = 205; + // = 206; + // = 207; + // = 208; + // = 209; + // = 210; + // = 211; + = 212; + = 213; + = 214; + = 215; + = 216; + = 217; + = 218; + // = 219; + // = 220; + // = 221; + = 222; + = 223; + = 224; + = 225; + = 226; + = 227; + = 228; + = 229; + = 230; + = 231; + = 232; + = 233; + = 234; + = 235; + = 236; + = 237; + = 238; + = 239; + = 240; + = 241; + = 242; + = 243; + = 244; + = 245; + = 246; + = 247; + = 248; + = 249; + = 250; + = 251; + = 252; + alias = ; + = 253; + alias = ; + = 254; + = 255; + + // MacBooks generate 0x65 for the lower brightness key + = 101; + + // Required for apple/logitech_g15 keyboard + = 93; + + // Codes generated for scancodes 0x59-0x5f, 0x62-0x76 + = 157; // + = 170; // + = 181; // + alias = ; + = 182; // + = 183; // + = 184; // + = 189; // + = 190; // + = 191; // + = 192; // + = 193; // + = 198; // + = 199; // + = 200; // + = 201; // + = 203; // + = 204; // + = 205; // + = 206; // + = 207; // + alias = ; // + alias = ; // + alias = ; // + alias = ; // + = 219; // + = 220; // + = 221; // + + // Solaris compatibility + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + // Other codes never generated. The XFree86 ddx never generates + // these codes. + // Thus we can use them as fake keys + = 8; + = 124; // + = 125; // + = 156; // + = 127; // + = 128; // + + indicator 1 = "Caps Lock"; + indicator 2 = "Num Lock"; + indicator 3 = "Scroll Lock"; + + alias = ; + + // For Brazilian ABNT2 + alias = ; +}; + +// What keyboard is this? + +xkb_keycodes "102" { + include "xfree86(xfree86)" + + // There will be warnings from xkbcomp because of multiple definitions. + + = 122; + = 123; + + = 121; + = 118; + + = 131; + = 135; + = 119; + = 129; + = 130; + = 134; + + = 128; + = 132; + = 120; + = 133; + + = 125; + + = 124; +}; + + +// IBM ThinkPad Z60m/Z60t/Z61m/Z61t +xkb_keycodes "thinkpadz60" { + include "xfree86(xfree86)" + = 227; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/bad.xkb b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/bad.xkb new file mode 100644 index 0000000..f969cbc --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/bad.xkb @@ -0,0 +1,5 @@ +xkb_keymap { + xkb_types { include "complete" }; + xkb_compat { include "complete" }; + xkb_symbols { include "pc+us" }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/basic.xkb b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/basic.xkb new file mode 100644 index 0000000..654aed6 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/basic.xkb @@ -0,0 +1,6 @@ +xkb_keymap { + xkb_keycodes { include "evdev+aliases(qwerty)" }; + xkb_types { include "complete" }; + xkb_compat { include "complete" }; + xkb_symbols { include "pc+us" }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/comprehensive-plus-geom.xkb b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/comprehensive-plus-geom.xkb new file mode 100644 index 0000000..c9361e9 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/comprehensive-plus-geom.xkb @@ -0,0 +1,1813 @@ +xkb_keymap { +xkb_keycodes "evdev+aliases(qwerty)" { + minimum = 8; + maximum = 255; + = 9; + = 10; + = 11; + = 12; + = 13; + = 14; + = 15; + = 16; + = 17; + = 18; + = 19; + = 20; + = 21; + = 22; + = 23; + = 24; + = 25; + = 26; + = 27; + = 28; + = 29; + = 30; + = 31; + = 32; + = 33; + = 34; + = 35; + = 36; + = 37; + = 38; + = 39; + = 40; + = 41; + = 42; + = 43; + = 44; + = 45; + = 46; + = 47; + = 48; + = 49; + = 50; + = 51; + = 52; + = 53; + = 54; + = 55; + = 56; + = 57; + = 58; + = 59; + = 60; + = 61; + = 62; + = 63; + = 64; + = 65; + = 66; + = 67; + = 68; + = 69; + = 70; + = 71; + = 72; + = 73; + = 74; + = 75; + = 76; + = 77; + = 78; + = 79; + = 80; + = 81; + = 82; + = 83; + = 84; + = 85; + = 86; + = 87; + = 88; + = 89; + = 90; + = 91; + = 92; + = 94; + = 95; + = 96; + = 97; + = 98; + = 99; + = 100; + = 101; + = 102; + = 103; + = 104; + = 105; + = 106; + = 107; + = 108; + = 109; + = 110; + = 111; + = 112; + = 113; + = 114; + = 115; + = 116; + = 117; + = 118; + = 119; + = 120; + = 121; + = 122; + = 123; + = 124; + = 125; + = 126; + = 127; + = 128; + = 129; + = 130; + = 131; + = 132; + = 133; + = 134; + = 135; + = 136; + = 137; + = 138; + = 139; + = 140; + = 141; + = 142; + = 143; + = 144; + = 145; + = 146; + = 147; + = 148; + = 149; + = 150; + = 151; + = 152; + = 153; + = 154; + = 155; + = 156; + = 157; + = 158; + = 159; + = 160; + = 161; + = 162; + = 163; + = 164; + = 165; + = 166; + = 167; + = 168; + = 169; + = 170; + = 171; + = 172; + = 173; + = 174; + = 175; + = 176; + = 177; + = 178; + = 179; + = 180; + = 181; + = 182; + = 183; + = 184; + = 185; + = 186; + = 187; + = 188; + = 189; + = 190; + = 191; + = 192; + = 193; + = 194; + = 195; + = 196; + = 197; + = 198; + = 199; + = 200; + = 201; + = 202; + = 203; + = 204; + = 205; + = 206; + = 207; + = 208; + = 209; + = 210; + = 211; + = 212; + = 213; + = 214; + = 215; + = 216; + = 217; + = 218; + = 219; + = 220; + = 221; + = 222; + = 223; + = 224; + = 225; + = 226; + = 227; + = 228; + = 229; + = 230; + = 231; + = 232; + = 233; + = 234; + = 235; + = 236; + = 237; + = 238; + = 239; + = 240; + = 241; + = 242; + = 243; + = 244; + = 245; + = 246; + = 247; + = 248; + = 249; + = 250; + = 251; + = 252; + = 253; + indicator 1 = "Caps Lock"; + indicator 2 = "Num Lock"; + indicator 3 = "Scroll Lock"; + indicator 4 = "Compose"; + indicator 5 = "Kana"; + indicator 6 = "Sleep"; + indicator 7 = "Suspend"; + indicator 8 = "Mute"; + indicator 9 = "Misc"; + indicator 10 = "Mail"; + indicator 11 = "Charging"; + virtual indicator 12 = "Shift Lock"; + virtual indicator 13 = "Group 2"; + virtual indicator 14 = "Mouse Keys"; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; +}; + +xkb_types "complete" { + + virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper; + + type "ONE_LEVEL" { + modifiers= none; + level_name[Level1]= "Any"; + }; + type "TWO_LEVEL" { + modifiers= Shift; + map[Shift]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + }; + type "ALPHABETIC" { + modifiers= Shift+Lock; + map[Shift]= Level2; + map[Lock]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Caps"; + }; + type "KEYPAD" { + modifiers= Shift+NumLock; + map[Shift]= Level2; + map[NumLock]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Number"; + }; + type "SHIFT+ALT" { + modifiers= Shift+Alt; + map[Shift+Alt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift+Alt"; + }; + type "PC_CONTROL_LEVEL2" { + modifiers= Control; + map[Control]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Control"; + }; + type "PC_LCONTROL_LEVEL2" { + modifiers= LControl; + map[LControl]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "LControl"; + }; + type "PC_RCONTROL_LEVEL2" { + modifiers= RControl; + map[RControl]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "RControl"; + }; + type "PC_ALT_LEVEL2" { + modifiers= Alt; + map[Alt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Alt"; + }; + type "PC_LALT_LEVEL2" { + modifiers= LAlt; + map[LAlt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "LAlt"; + }; + type "PC_RALT_LEVEL2" { + modifiers= RAlt; + map[RAlt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "RAlt"; + }; + type "CTRL+ALT" { + modifiers= Shift+Control+Alt+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Control+Alt]= Level5; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "Ctrl+Alt"; + }; + type "LOCAL_EIGHT_LEVEL" { + modifiers= Shift+Lock+Control+LevelThree; + map[Shift+Lock]= Level1; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+Lock+LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level4; + map[Control]= Level5; + map[Shift+Lock+Control]= Level5; + map[Shift+Control]= Level6; + map[Lock+Control]= Level6; + map[Control+LevelThree]= Level7; + map[Shift+Lock+Control+LevelThree]= Level7; + map[Shift+Control+LevelThree]= Level8; + map[Lock+Control+LevelThree]= Level8; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Level3"; + level_name[Level4]= "Shift Level3"; + level_name[Level5]= "Ctrl"; + level_name[Level6]= "Shift Ctrl"; + level_name[Level7]= "Level3 Ctrl"; + level_name[Level8]= "Shift Level3 Ctrl"; + }; + type "THREE_LEVEL" { + modifiers= Shift+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Level3"; + }; + type "EIGHT_LEVEL" { + modifiers= Shift+LevelThree+LevelFive; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[LevelFive]= Level5; + map[Shift+LevelFive]= Level6; + map[LevelThree+LevelFive]= Level7; + map[Shift+LevelThree+LevelFive]= Level8; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "X"; + level_name[Level6]= "X Shift"; + level_name[Level7]= "X Alt Base"; + level_name[Level8]= "X Shift Alt"; + }; + type "EIGHT_LEVEL_ALPHABETIC" { + modifiers= Shift+Lock+LevelThree+LevelFive; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level4; + map[Shift+Lock+LevelThree]= Level3; + map[LevelFive]= Level5; + map[Shift+LevelFive]= Level6; + map[Lock+LevelFive]= Level6; + map[LevelThree+LevelFive]= Level7; + map[Shift+LevelThree+LevelFive]= Level8; + map[Lock+LevelThree+LevelFive]= Level8; + map[Shift+Lock+LevelThree+LevelFive]= Level7; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "X"; + level_name[Level6]= "X Shift"; + level_name[Level7]= "X Alt Base"; + level_name[Level8]= "X Shift Alt"; + }; + type "EIGHT_LEVEL_SEMIALPHABETIC" { + modifiers= Shift+Lock+LevelThree+LevelFive; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level3; + preserve[Lock+LevelThree]= Lock; + map[Shift+Lock+LevelThree]= Level4; + preserve[Shift+Lock+LevelThree]= Lock; + map[LevelFive]= Level5; + map[Shift+LevelFive]= Level6; + map[Lock+LevelFive]= Level6; + preserve[Lock+LevelFive]= Lock; + map[LevelThree+LevelFive]= Level7; + map[Shift+LevelThree+LevelFive]= Level8; + map[Lock+LevelThree+LevelFive]= Level7; + preserve[Lock+LevelThree+LevelFive]= Lock; + map[Shift+Lock+LevelThree+LevelFive]= Level8; + preserve[Shift+Lock+LevelThree+LevelFive]= Lock; + map[Shift+Lock+LevelFive]= Level1; + preserve[Shift+Lock+LevelFive]= Lock; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "X"; + level_name[Level6]= "X Shift"; + level_name[Level7]= "X Alt Base"; + level_name[Level8]= "X Shift Alt"; + }; + type "FOUR_LEVEL" { + modifiers= Shift+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_ALPHABETIC" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level4; + map[Shift+Lock+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_SEMIALPHABETIC" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level3; + preserve[Lock+LevelThree]= Lock; + map[Shift+Lock+LevelThree]= Level4; + preserve[Shift+Lock+LevelThree]= Lock; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_MIXED_KEYPAD" { + modifiers= Shift+NumLock+LevelThree; + map[Shift+NumLock]= Level1; + map[NumLock]= Level2; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[NumLock+LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Shift+NumLock+LevelThree]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Number"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_X" { + modifiers= Shift+Control+Alt+LevelThree; + map[LevelThree]= Level2; + map[Shift+LevelThree]= Level3; + map[Control+Alt]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Alt Base"; + level_name[Level3]= "Shift Alt"; + level_name[Level4]= "Ctrl+Alt"; + }; + type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[Lock]= Level4; + preserve[Lock]= Lock; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level3; + preserve[Lock+LevelThree]= Lock; + map[Shift+Lock+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "AltGr Base"; + level_name[Level4]= "Shift AltGr"; + }; + type "FOUR_LEVEL_PLUS_LOCK" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock]= Level5; + map[Shift+Lock]= Level2; + map[Lock+LevelThree]= Level3; + map[Shift+Lock+LevelThree]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "Lock"; + }; + type "FOUR_LEVEL_KEYPAD" { + modifiers= Shift+NumLock+LevelThree; + map[Shift]= Level2; + map[NumLock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[NumLock+LevelThree]= Level4; + map[Shift+NumLock+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Number"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Alt Number"; + }; +}; + +xkb_compatibility "complete" { + + virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper; + + interpret.useModMapMods= AnyLevel; + interpret.repeat= False; + interpret.locking= False; + interpret ISO_Level2_Latch+Exactly(Shift) { + useModMapMods=level1; + action= LatchMods(modifiers=Shift,clearLocks,latchToLock); + }; + interpret Shift_Lock+AnyOf(Shift+Lock) { + action= LockMods(modifiers=Shift); + }; + interpret Num_Lock+AnyOf(all) { + virtualModifier= NumLock; + action= LockMods(modifiers=NumLock); + }; + interpret ISO_Lock+AnyOf(all) { + action= ISOLock(modifiers=modMapMods,affect=all); + }; + interpret ISO_Level3_Shift+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= SetMods(modifiers=LevelThree,clearLocks); + }; + interpret ISO_Level3_Latch+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock); + }; + interpret ISO_Level3_Lock+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= LockMods(modifiers=LevelThree); + }; + interpret Alt_L+AnyOf(all) { + virtualModifier= Alt; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Alt_R+AnyOf(all) { + virtualModifier= Alt; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Meta_L+AnyOf(all) { + virtualModifier= Meta; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Meta_R+AnyOf(all) { + virtualModifier= Meta; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Super_L+AnyOf(all) { + virtualModifier= Super; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Super_R+AnyOf(all) { + virtualModifier= Super; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Hyper_L+AnyOf(all) { + virtualModifier= Hyper; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Hyper_R+AnyOf(all) { + virtualModifier= Hyper; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Scroll_Lock+AnyOf(all) { + virtualModifier= ScrollLock; + action= LockMods(modifiers=modMapMods); + }; + interpret ISO_Level5_Shift+AnyOf(all) { + virtualModifier= LevelFive; + useModMapMods=level1; + action= SetMods(modifiers=LevelFive,clearLocks); + }; + interpret ISO_Level5_Latch+AnyOf(all) { + virtualModifier= LevelFive; + action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock); + }; + interpret ISO_Level5_Lock+AnyOf(all) { + virtualModifier= LevelFive; + action= LockMods(modifiers=LevelFive); + }; + interpret Mode_switch+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= SetGroup(group=+1); + }; + interpret ISO_Level3_Shift+AnyOfOrNone(all) { + action= SetMods(modifiers=LevelThree,clearLocks); + }; + interpret ISO_Level3_Latch+AnyOfOrNone(all) { + action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock); + }; + interpret ISO_Level3_Lock+AnyOfOrNone(all) { + action= LockMods(modifiers=LevelThree); + }; + interpret ISO_Group_Latch+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LatchGroup(group=2); + }; + interpret ISO_Next_Group+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LockGroup(group=+1); + }; + interpret ISO_Prev_Group+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LockGroup(group=-1); + }; + interpret ISO_First_Group+AnyOfOrNone(all) { + action= LockGroup(group=1); + }; + interpret ISO_Last_Group+AnyOfOrNone(all) { + action= LockGroup(group=2); + }; + interpret KP_1+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+1); + }; + interpret KP_End+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+1); + }; + interpret KP_2+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=+1); + }; + interpret KP_Down+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=+1); + }; + interpret KP_3+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+1); + }; + interpret KP_Next+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+1); + }; + interpret KP_4+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+0); + }; + interpret KP_Left+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+0); + }; + interpret KP_6+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+0); + }; + interpret KP_Right+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+0); + }; + interpret KP_7+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=-1); + }; + interpret KP_Home+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=-1); + }; + interpret KP_8+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=-1); + }; + interpret KP_Up+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=-1); + }; + interpret KP_9+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=-1); + }; + interpret KP_Prior+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=-1); + }; + interpret KP_5+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default); + }; + interpret KP_Begin+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default); + }; + interpret KP_F2+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=1); + }; + interpret KP_Divide+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=1); + }; + interpret KP_F3+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=2); + }; + interpret KP_Multiply+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=2); + }; + interpret KP_F4+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=3); + }; + interpret KP_Subtract+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=3); + }; + interpret KP_Separator+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default,count=2); + }; + interpret KP_Add+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default,count=2); + }; + interpret KP_0+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=lock); + }; + interpret KP_Insert+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=lock); + }; + interpret KP_Decimal+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=unlock); + }; + interpret KP_Delete+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=unlock); + }; + interpret F25+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=1); + }; + interpret F26+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=2); + }; + interpret F27+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=-1); + }; + interpret F29+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=-1); + }; + interpret F31+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default); + }; + interpret F33+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+1); + }; + interpret F35+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+1); + }; + interpret Pointer_Button_Dflt+AnyOfOrNone(all) { + action= PtrBtn(button=default); + }; + interpret Pointer_Button1+AnyOfOrNone(all) { + action= PtrBtn(button=1); + }; + interpret Pointer_Button2+AnyOfOrNone(all) { + action= PtrBtn(button=2); + }; + interpret Pointer_Button3+AnyOfOrNone(all) { + action= PtrBtn(button=3); + }; + interpret Pointer_DblClick_Dflt+AnyOfOrNone(all) { + action= PtrBtn(button=default,count=2); + }; + interpret Pointer_DblClick1+AnyOfOrNone(all) { + action= PtrBtn(button=1,count=2); + }; + interpret Pointer_DblClick2+AnyOfOrNone(all) { + action= PtrBtn(button=2,count=2); + }; + interpret Pointer_DblClick3+AnyOfOrNone(all) { + action= PtrBtn(button=3,count=2); + }; + interpret Pointer_Drag_Dflt+AnyOfOrNone(all) { + action= LockPtrBtn(button=default,affect=both); + }; + interpret Pointer_Drag1+AnyOfOrNone(all) { + action= LockPtrBtn(button=1,affect=both); + }; + interpret Pointer_Drag2+AnyOfOrNone(all) { + action= LockPtrBtn(button=2,affect=both); + }; + interpret Pointer_Drag3+AnyOfOrNone(all) { + action= LockPtrBtn(button=3,affect=both); + }; + interpret Pointer_EnableKeys+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeys); + }; + interpret Pointer_Accelerate+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeysAccel); + }; + interpret Pointer_DfltBtnNext+AnyOfOrNone(all) { + action= SetPtrDflt(affect=button,button=+1); + }; + interpret Pointer_DfltBtnPrev+AnyOfOrNone(all) { + action= SetPtrDflt(affect=button,button=-1); + }; + interpret AccessX_Enable+AnyOfOrNone(all) { + action= LockControls(controls=AccessXKeys); + }; + interpret AccessX_Feedback_Enable+AnyOfOrNone(all) { + action= LockControls(controls=AccessXFeedback); + }; + interpret RepeatKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=RepeatKeys); + }; + interpret SlowKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=SlowKeys); + }; + interpret BounceKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=BounceKeys); + }; + interpret StickyKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=StickyKeys); + }; + interpret MouseKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeys); + }; + interpret MouseKeys_Accel_Enable+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeysAccel); + }; + interpret Overlay1_Enable+AnyOfOrNone(all) { + action= LockControls(controls=Overlay1); + }; + interpret Overlay2_Enable+AnyOfOrNone(all) { + action= LockControls(controls=Overlay2); + }; + interpret AudibleBell_Enable+AnyOfOrNone(all) { + action= LockControls(controls=AudibleBell); + }; + interpret Terminate_Server+AnyOfOrNone(all) { + action= Terminate(); + }; + interpret Alt_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Alt,clearLocks); + }; + interpret Alt_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Alt,clearLocks); + }; + interpret Meta_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Meta,clearLocks); + }; + interpret Meta_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Meta,clearLocks); + }; + interpret Super_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Super,clearLocks); + }; + interpret Super_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Super,clearLocks); + }; + interpret Hyper_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Hyper,clearLocks); + }; + interpret Hyper_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Hyper,clearLocks); + }; + interpret Shift_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Shift,clearLocks); + }; + interpret XF86Switch_VT_1+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=1,!same); + }; + interpret XF86Switch_VT_2+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=2,!same); + }; + interpret XF86Switch_VT_3+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=3,!same); + }; + interpret XF86Switch_VT_4+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=4,!same); + }; + interpret XF86Switch_VT_5+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=5,!same); + }; + interpret XF86Switch_VT_6+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=6,!same); + }; + interpret XF86Switch_VT_7+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=7,!same); + }; + interpret XF86Switch_VT_8+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=8,!same); + }; + interpret XF86Switch_VT_9+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=9,!same); + }; + interpret XF86Switch_VT_10+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=10,!same); + }; + interpret XF86Switch_VT_11+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=11,!same); + }; + interpret XF86Switch_VT_12+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=12,!same); + }; + interpret XF86LogGrabInfo+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x47,data[3]=0x72,data[4]=0x62,data[5]=0x73,data[6]=0x00); + }; + interpret XF86LogWindowTree+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x57,data[3]=0x69,data[4]=0x6e,data[5]=0x73,data[6]=0x00); + }; + interpret XF86Next_VMode+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x2b,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00); + }; + interpret XF86Prev_VMode+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x2d,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00); + }; + interpret ISO_Level5_Shift+AnyOfOrNone(all) { + action= SetMods(modifiers=LevelFive,clearLocks); + }; + interpret ISO_Level5_Latch+AnyOfOrNone(all) { + action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock); + }; + interpret ISO_Level5_Lock+AnyOfOrNone(all) { + action= LockMods(modifiers=LevelFive); + }; + interpret Caps_Lock+AnyOfOrNone(all) { + action= LockMods(modifiers=Lock); + }; + interpret Any+Exactly(Lock) { + action= LockMods(modifiers=Lock); + }; + interpret Any+AnyOf(all) { + action= SetMods(modifiers=modMapMods,clearLocks); + }; + indicator "Caps Lock" { + !allowExplicit; + whichModState= locked; + modifiers= Lock; + }; + indicator "Num Lock" { + !allowExplicit; + whichModState= locked; + modifiers= NumLock; + }; + indicator "Scroll Lock" { + whichModState= locked; + modifiers= ScrollLock; + }; + indicator "Shift Lock" { + !allowExplicit; + whichModState= locked; + modifiers= Shift; + }; + indicator "Group 2" { + !allowExplicit; + groups= 0xfe; + }; + indicator "Mouse Keys" { + indicatorDrivesKeyboard; + controls= mouseKeys; + }; +}; + +xkb_symbols "pc+us+inet(evdev)+ctrl(nocaps)+compose(rwin)+terminate(ctrl_alt_bksp)" { + + name[group1]="English (US)"; + + key { [ Escape ] }; + key { [ 1, exclam ] }; + key { [ 2, at ] }; + key { [ 3, numbersign ] }; + key { [ 4, dollar ] }; + key { [ 5, percent ] }; + key { [ 6, asciicircum ] }; + key { [ 7, ampersand ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ BackSpace, BackSpace, NoSymbol, NoSymbol, Terminate_Server ] + }; + key { [ Tab, ISO_Left_Tab ] }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ q, Q ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ w, W ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ e, E ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ r, R ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ t, T ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ y, Y ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ u, U ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ i, I ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ o, O ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ p, P ] + }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + key { [ Return ] }; + key { [ Control_L ] }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ a, A ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ s, S ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ d, D ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ f, F ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ g, G ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ h, H ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ j, J ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ k, K ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ l, L ] + }; + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + key { [ grave, asciitilde ] }; + key { [ Shift_L ] }; + key { [ backslash, bar ] }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ z, Z ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ x, X ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ c, C ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ v, V ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ b, B ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ n, N ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ m, M ] + }; + key { [ comma, less ] }; + key { [ period, greater ] }; + key { [ slash, question ] }; + key { [ Shift_R ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86ClearGrab ] + }; + key { [ Alt_L, Meta_L ] }; + key { [ space ] }; + key { [ Control_L, Control_L ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F1, F1, F1, F1, XF86Switch_VT_1 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F2, F2, F2, F2, XF86Switch_VT_2 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F3, F3, F3, F3, XF86Switch_VT_3 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F4, F4, F4, F4, XF86Switch_VT_4 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F5, F5, F5, F5, XF86Switch_VT_5 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F6, F6, F6, F6, XF86Switch_VT_6 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F7, F7, F7, F7, XF86Switch_VT_7 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F8, F8, F8, F8, XF86Switch_VT_8 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F9, F9, F9, F9, XF86Switch_VT_9 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F10, F10, F10, F10, XF86Switch_VT_10 ] + }; + key { [ Num_Lock ] }; + key { [ Scroll_Lock ] }; + key { [ KP_Home, KP_7 ] }; + key { [ KP_Up, KP_8 ] }; + key { [ KP_Prior, KP_9 ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86Prev_VMode ] + }; + key { [ KP_Left, KP_4 ] }; + key { [ KP_Begin, KP_5 ] }; + key { [ KP_Right, KP_6 ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Add, KP_Add, KP_Add, KP_Add, XF86Next_VMode ] + }; + key { [ KP_End, KP_1 ] }; + key { [ KP_Down, KP_2 ] }; + key { [ KP_Next, KP_3 ] }; + key { [ KP_Insert, KP_0 ] }; + key { [ KP_Delete, KP_Decimal ] }; + key { [ ISO_Level3_Shift ] }; + key { + type= "FOUR_LEVEL", + symbols[Group1]= [ less, greater, bar, brokenbar ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F11, F11, F11, F11, XF86Switch_VT_11 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F12, F12, F12, F12, XF86Switch_VT_12 ] + }; + key { [ Katakana ] }; + key { [ Hiragana ] }; + key { [ Henkan_Mode ] }; + key { [ Hiragana_Katakana ] }; + key { [ Muhenkan ] }; + key { [ KP_Enter ] }; + key { [ Control_R ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86Ungrab ] + }; + key { + type= "PC_ALT_LEVEL2", + symbols[Group1]= [ Print, Sys_Req ] + }; + key { + type= "TWO_LEVEL", + symbols[Group1]= [ Alt_R, Meta_R ] + }; + key { [ Linefeed ] }; + key { [ Home ] }; + key { [ Up ] }; + key { [ Prior ] }; + key { [ Left ] }; + key { [ Right ] }; + key { [ End ] }; + key { [ Down ] }; + key { [ Next ] }; + key { [ Insert ] }; + key { [ Delete ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86PowerOff ] }; + key { [ KP_Equal ] }; + key { [ plusminus ] }; + key { + type= "PC_CONTROL_LEVEL2", + symbols[Group1]= [ Pause, Break ] + }; + key { [ XF86LaunchA ] }; + key { [ KP_Decimal, KP_Decimal ] }; + key { [ Hangul ] }; + key { [ Hangul_Hanja ] }; + key { [ Super_L ] }; + key { + type= "TWO_LEVEL", + symbols[Group1]= [ Multi_key, Multi_key ] + }; + key { [ Menu ] }; + key { [ Cancel ] }; + key { [ Redo ] }; + key { [ SunProps ] }; + key { [ Undo ] }; + key { [ SunFront ] }; + key { [ XF86Copy ] }; + key { [ SunOpen ] }; + key { [ XF86Paste ] }; + key { [ Find ] }; + key { [ XF86Cut ] }; + key { [ Help ] }; + key { [ XF86MenuKB ] }; + key { [ XF86Calculator ] }; + key { [ XF86Sleep ] }; + key { [ XF86WakeUp ] }; + key { [ XF86Explorer ] }; + key { [ XF86Send ] }; + key { [ XF86Xfer ] }; + key { [ XF86Launch1 ] }; + key { [ XF86Launch2 ] }; + key { [ XF86WWW ] }; + key { [ XF86DOS ] }; + key { [ XF86ScreenSaver ] }; + key { [ XF86RotateWindows ] }; + key { [ XF86Mail ] }; + key { [ XF86Favorites ] }; + key { [ XF86MyComputer ] }; + key { [ XF86Back ] }; + key { [ XF86Forward ] }; + key { [ XF86Eject ] }; + key { [ XF86Eject, XF86Eject ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioStop, XF86Eject ] }; + key { [ XF86AudioRecord ] }; + key { [ XF86AudioRewind ] }; + key { [ XF86Phone ] }; + key { [ XF86Tools ] }; + key { [ XF86HomePage ] }; + key { [ XF86Reload ] }; + key { [ XF86Close ] }; + key { [ XF86ScrollUp ] }; + key { [ XF86ScrollDown ] }; + key { [ parenleft ] }; + key { [ parenright ] }; + key { [ XF86New ] }; + key { [ Redo ] }; + key { [ XF86Tools ] }; + key { [ XF86Launch5 ] }; + key { [ XF86Launch6 ] }; + key { [ XF86Launch7 ] }; + key { [ XF86Launch8 ] }; + key { [ XF86Launch9 ] }; + key { [ XF86TouchpadToggle ] }; + key { [ XF86TouchpadOn ] }; + key { [ XF86TouchpadOff ] }; + key { [ Mode_switch ] }; + key { [ NoSymbol, Alt_L ] }; + key { [ NoSymbol, Meta_L ] }; + key { [ NoSymbol, Super_L ] }; + key { [ NoSymbol, Hyper_L ] }; + key { [ XF86AudioPlay ] }; + key { [ XF86AudioPause ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Launch4 ] }; + key { [ XF86LaunchB ] }; + key { [ XF86Suspend ] }; + key { [ XF86Close ] }; + key { [ XF86AudioPlay ] }; + key { [ XF86AudioForward ] }; + key { [ Print ] }; + key { [ XF86WebCam ] }; + key { [ XF86Mail ] }; + key { [ XF86Messenger ] }; + key { [ XF86Search ] }; + key { [ XF86Go ] }; + key { [ XF86Finance ] }; + key { [ XF86Game ] }; + key { [ XF86Shop ] }; + key { [ Cancel ] }; + key { [ XF86MonBrightnessDown ] }; + key { [ XF86MonBrightnessUp ] }; + key { [ XF86AudioMedia ] }; + key { [ XF86Display ] }; + key { [ XF86KbdLightOnOff ] }; + key { [ XF86KbdBrightnessDown ] }; + key { [ XF86KbdBrightnessUp ] }; + key { [ XF86Send ] }; + key { [ XF86Reply ] }; + key { [ XF86MailForward ] }; + key { [ XF86Save ] }; + key { [ XF86Documents ] }; + key { [ XF86Battery ] }; + key { [ XF86Bluetooth ] }; + key { [ XF86WLAN ] }; + modifier_map Control { }; + modifier_map Shift { }; + modifier_map Shift { }; + modifier_map Mod1 { }; + modifier_map Control { }; + modifier_map Mod2 { }; + modifier_map Mod5 { }; + modifier_map Control { }; + modifier_map Mod1 { }; + modifier_map Mod4 { }; + modifier_map Mod5 { }; + modifier_map Mod1 { }; + modifier_map Mod4 { }; + modifier_map Mod4 { }; +}; + +xkb_geometry "pc(pc105)" { + + width= 470; + height= 180; + + alias = ; + alias = ; + + baseColor= "white"; + labelColor= "black"; + xfont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1"; + description= "Generic 105"; + + shape "NORM" { + corner= 1, + { [ 18, 18 ] }, + { [ 2, 1 ], [ 16, 16 ] } + }; + shape "BKSP" { + corner= 1, + { [ 38, 18 ] }, + { [ 2, 1 ], [ 36, 16 ] } + }; + shape "TABK" { + corner= 1, + { [ 28, 18 ] }, + { [ 2, 1 ], [ 26, 16 ] } + }; + shape "BKSL" { + corner= 1, + { [ 28, 18 ] }, + { [ 2, 1 ], [ 26, 16 ] } + }; + shape "RTRN" { + corner= 1, + { [ 0, 0 ], [ 28, 0 ], [ 28, 37 ], [ 5, 37 ], + [ 5, 18 ], [ 0, 18 ] }, + { [ 2, 1 ], [ 26, 1 ], [ 26, 35 ], [ 7, 35 ], + [ 7, 16 ], [ 2, 16 ] }, + approx= { [ 5, 0 ], [ 28, 37 ] } + }; + shape "CAPS" { + corner= 1, + { [ 33, 18 ] }, + { [ 2, 1 ], [ 31, 16 ] } + }; + shape "LFSH" { + corner= 1, + { [ 25, 18 ] }, + { [ 2, 1 ], [ 23, 16 ] } + }; + shape "RTSH" { + corner= 1, + { [ 50, 18 ] }, + { [ 2, 1 ], [ 48, 16 ] } + }; + shape "MODK" { + corner= 1, + { [ 27, 18 ] }, + { [ 2, 1 ], [ 25, 16 ] } + }; + shape "SMOD" { + corner= 1, + { [ 23, 18 ] }, + { [ 2, 1 ], [ 21, 16 ] } + }; + shape "SPCE" { + corner= 1, + { [ 113, 18 ] }, + { [ 2, 1 ], [ 111, 16 ] } + }; + shape "KP0" { + corner= 1, + { [ 37, 18 ] }, + { [ 2, 1 ], [ 35, 16 ] } + }; + shape "KPAD" { + corner= 1, + { [ 18, 37 ] }, + { [ 2, 1 ], [ 16, 35 ] } + }; + shape "LEDS" { { [ 75, 20 ] } }; + shape "LED" { { [ 5, 1 ] } }; + section "Function" { + key.color= "grey20"; + priority= 7; + top= 22; + left= 19; + width= 351; + height= 19; + row { + top= 1; + left= 1; + keys { + { , "NORM", 1 }, + { , "NORM", 20, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 11, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 11, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 8, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" } + }; + }; + }; // End of "Function" section + + section "Alpha" { + key.color= "white"; + priority= 8; + top= 61; + left= 19; + width= 287; + height= 95; + row { + top= 1; + left= 1; + keys { + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, + { , "BKSP", 1, color="grey20" } + }; + }; + row { + top= 20; + left= 1; + keys { + { , "TABK", 1, color="grey20" }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "RTRN", 1, color="grey20" } + }; + }; + row { + top= 39; + left= 1; + keys { + { , "CAPS", 1, color="grey20" }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 } + }; + }; + row { + top= 58; + left= 1; + keys { + { , "LFSH", 1, color="grey20" }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, + { , "RTSH", 1, color="grey20" } + }; + }; + row { + top= 77; + left= 1; + keys { + { , "MODK", 1, color="grey20" }, + { , "SMOD", 1, color="grey20" }, + { , "SMOD", 1, color="grey20" }, + { , "SPCE", 1 }, + { , "SMOD", 1, color="grey20" }, + { , "SMOD", 1, color="grey20" }, + { , "SMOD", 1, color="grey20" }, + { , "SMOD", 1, color="grey20" } + }; + }; + }; // End of "Alpha" section + + section "Editing" { + key.color= "grey20"; + priority= 9; + top= 61; + left= 312; + width= 58; + height= 95; + row { + top= 1; + left= 1; + keys { + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 } + }; + }; + row { + top= 20; + left= 1; + keys { + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 } + }; + }; + row { + top= 58; + left= 20; + keys { + { , "NORM", 1 } + }; + }; + row { + top= 77; + left= 1; + keys { + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 } + }; + }; + }; // End of "Editing" section + + section "Keypad" { + key.color= "grey20"; + priority= 10; + top= 61; + left= 376; + width= 77; + height= 95; + row { + top= 1; + left= 1; + keys { + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 } + }; + }; + row { + top= 20; + left= 1; + keys { + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "KPAD", 1 } + }; + }; + row { + top= 39; + left= 1; + keys { + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" } + }; + }; + row { + top= 58; + left= 1; + keys { + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "KPAD", 1 } + }; + }; + row { + top= 77; + left= 1; + keys { + { , "KP0", 1, color="white" }, + { , "NORM", 1, color="white" } + }; + }; + }; // End of "Keypad" section + + solid "LedPanel" { + top= 22; + left= 377; + priority= 0; + color= "grey10"; + shape= "LEDS"; + }; + indicator "Num Lock" { + top= 37; + left= 382; + priority= 1; + onColor= "green"; + offColor= "green30"; + shape= "LED"; + }; + indicator "Caps Lock" { + top= 37; + left= 407; + priority= 2; + onColor= "green"; + offColor= "green30"; + shape= "LED"; + }; + indicator "Scroll Lock" { + top= 37; + left= 433; + priority= 3; + onColor= "green"; + offColor= "green30"; + shape= "LED"; + }; + text "NumLockLabel" { + top= 25; + left= 378; + priority= 4; + width= 19.8; + height= 10; + XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1"; + text= "Num\nLock"; + }; + text "CapsLockLabel" { + top= 25; + left= 403; + priority= 5; + width= 26.4; + height= 10; + XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1"; + text= "Caps\nLock"; + }; + text "ScrollLockLabel" { + top= 25; + left= 428; + priority= 6; + width= 39.6; + height= 10; + XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1"; + text= "Scroll\nLock"; + }; +}; + +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/divide-by-zero.xkb b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/divide-by-zero.xkb new file mode 100644 index 0000000..9e3417f --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/divide-by-zero.xkb @@ -0,0 +1,21 @@ +xkb_keymap { + xkb_keycodes { + = 1; + }; + + xkb_types { + virtual_modifiers NumLock; + }; + + xkb_compatibility { + virtual_modifiers NumLock; + interpret KP_1+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=(1/0),y=+1); + }; + }; + + xkb_symbols { + key { [ NoSymbol, Hyper_L ] }; + }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/host.xkb b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/host.xkb new file mode 100644 index 0000000..3b10467 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/host.xkb @@ -0,0 +1,1676 @@ +xkb_keymap { +xkb_keycodes "evdev_aliases(qwerty)" { + minimum = 8; + maximum = 255; + = 9; + = 10; + = 11; + = 12; + = 13; + = 14; + = 15; + = 16; + = 17; + = 18; + = 19; + = 20; + = 21; + = 22; + = 23; + = 24; + = 25; + = 26; + = 27; + = 28; + = 29; + = 30; + = 31; + = 32; + = 33; + = 34; + = 35; + = 36; + = 37; + = 38; + = 39; + = 40; + = 41; + = 42; + = 43; + = 44; + = 45; + = 46; + = 47; + = 48; + = 49; + = 50; + = 51; + = 52; + = 53; + = 54; + = 55; + = 56; + = 57; + = 58; + = 59; + = 60; + = 61; + = 62; + = 63; + = 64; + = 65; + = 66; + = 67; + = 68; + = 69; + = 70; + = 71; + = 72; + = 73; + = 74; + = 75; + = 76; + = 77; + = 78; + = 79; + = 80; + = 81; + = 82; + = 83; + = 84; + = 85; + = 86; + = 87; + = 88; + = 89; + = 90; + = 91; + = 92; + = 94; + = 95; + = 96; + = 97; + = 98; + = 99; + = 100; + = 101; + = 102; + = 103; + = 104; + = 105; + = 106; + = 107; + = 108; + = 109; + = 110; + = 111; + = 112; + = 113; + = 114; + = 115; + = 116; + = 117; + = 118; + = 119; + = 120; + = 121; + = 122; + = 123; + = 124; + = 125; + = 126; + = 127; + = 128; + = 129; + = 130; + = 131; + = 132; + = 133; + = 134; + = 135; + = 136; + = 137; + = 138; + = 139; + = 140; + = 141; + = 142; + = 143; + = 144; + = 145; + = 146; + = 147; + = 148; + = 149; + = 150; + = 151; + = 152; + = 153; + = 154; + = 155; + = 156; + = 157; + = 158; + = 159; + = 160; + = 161; + = 162; + = 163; + = 164; + = 165; + = 166; + = 167; + = 168; + = 169; + = 170; + = 171; + = 172; + = 173; + = 174; + = 175; + = 176; + = 177; + = 178; + = 179; + = 180; + = 181; + = 182; + = 183; + = 184; + = 185; + = 186; + = 187; + = 188; + = 189; + = 190; + = 191; + = 192; + = 193; + = 194; + = 195; + = 196; + = 197; + = 198; + = 199; + = 200; + = 201; + = 202; + = 203; + = 204; + = 205; + = 206; + = 207; + = 208; + = 209; + = 210; + = 211; + = 212; + = 213; + = 214; + = 215; + = 216; + = 217; + = 218; + = 219; + = 220; + = 221; + = 222; + = 223; + = 224; + = 225; + = 226; + = 227; + = 228; + = 229; + = 230; + = 231; + = 232; + = 233; + = 234; + = 235; + = 236; + = 237; + = 238; + = 239; + = 240; + = 241; + = 242; + = 243; + = 244; + = 245; + = 246; + = 247; + = 248; + = 249; + = 250; + = 251; + = 252; + = 253; + indicator 1 = "Caps Lock"; + indicator 2 = "Num Lock"; + indicator 3 = "Scroll Lock"; + indicator 4 = "Compose"; + indicator 5 = "Kana"; + indicator 6 = "Sleep"; + indicator 7 = "Suspend"; + indicator 8 = "Mute"; + indicator 9 = "Misc"; + indicator 10 = "Mail"; + indicator 11 = "Charging"; + indicator 12 = "Shift Lock"; + indicator 13 = "Group 2"; + indicator 14 = "Mouse Keys"; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; +}; + +xkb_types "complete" { + virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper; + + type "ONE_LEVEL" { + modifiers= none; + level_name[Level1]= "Any"; + }; + type "TWO_LEVEL" { + modifiers= Shift; + map[Shift]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + }; + type "ALPHABETIC" { + modifiers= Shift+Lock; + map[Shift]= Level2; + map[Lock]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Caps"; + }; + type "KEYPAD" { + modifiers= Shift+NumLock; + map[Shift]= Level2; + map[NumLock]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Number"; + }; + type "SHIFT+ALT" { + modifiers= Shift+Alt; + map[Shift+Alt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift+Alt"; + }; + type "PC_CONTROL_LEVEL2" { + modifiers= Control; + map[Control]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Control"; + }; + type "PC_LCONTROL_LEVEL2" { + modifiers= LControl; + map[LControl]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "LControl"; + }; + type "PC_RCONTROL_LEVEL2" { + modifiers= RControl; + map[RControl]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "RControl"; + }; + type "PC_ALT_LEVEL2" { + modifiers= Alt; + map[Alt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Alt"; + }; + type "PC_LALT_LEVEL2" { + modifiers= LAlt; + map[LAlt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "LAlt"; + }; + type "PC_RALT_LEVEL2" { + modifiers= RAlt; + map[RAlt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "RAlt"; + }; + type "CTRL+ALT" { + modifiers= Shift+Control+Alt+LevelThree; + map[Shift]= Level2; + preserve[Shift]= Shift; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + preserve[Shift+LevelThree]= Shift; + map[Control+Alt]= Level5; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "Ctrl+Alt"; + }; + type "LOCAL_EIGHT_LEVEL" { + modifiers= Shift+Lock+Control+LevelThree; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+Lock+LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level4; + map[Control]= Level5; + map[Shift+Lock+Control]= Level5; + map[Shift+Control]= Level6; + map[Lock+Control]= Level6; + map[Control+LevelThree]= Level7; + map[Shift+Lock+Control+LevelThree]= Level7; + map[Shift+Control+LevelThree]= Level8; + map[Lock+Control+LevelThree]= Level8; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Level3"; + level_name[Level4]= "Shift Level3"; + level_name[Level5]= "Ctrl"; + level_name[Level6]= "Shift Ctrl"; + level_name[Level7]= "Level3 Ctrl"; + level_name[Level8]= "Shift Level3 Ctrl"; + }; + type "THREE_LEVEL" { + modifiers= Shift+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Level3"; + }; + type "EIGHT_LEVEL" { + modifiers= Shift+LevelThree+LevelFive; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[LevelFive]= Level5; + map[Shift+LevelFive]= Level6; + map[LevelThree+LevelFive]= Level7; + map[Shift+LevelThree+LevelFive]= Level8; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "X"; + level_name[Level6]= "X Shift"; + level_name[Level7]= "X Alt Base"; + level_name[Level8]= "X Shift Alt"; + }; + type "EIGHT_LEVEL_ALPHABETIC" { + modifiers= Shift+Lock+LevelThree+LevelFive; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level4; + map[Shift+Lock+LevelThree]= Level3; + map[LevelFive]= Level5; + map[Shift+LevelFive]= Level6; + map[Lock+LevelFive]= Level6; + map[LevelThree+LevelFive]= Level7; + map[Shift+LevelThree+LevelFive]= Level8; + map[Lock+LevelThree+LevelFive]= Level8; + map[Shift+Lock+LevelThree+LevelFive]= Level7; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "X"; + level_name[Level6]= "X Shift"; + level_name[Level7]= "X Alt Base"; + level_name[Level8]= "X Shift Alt"; + }; + type "EIGHT_LEVEL_SEMIALPHABETIC" { + modifiers= Shift+Lock+LevelThree+LevelFive; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level3; + preserve[Lock+LevelThree]= Lock; + map[Shift+Lock+LevelThree]= Level4; + preserve[Shift+Lock+LevelThree]= Lock; + map[LevelFive]= Level5; + map[Shift+LevelFive]= Level6; + map[Lock+LevelFive]= Level6; + preserve[Lock+LevelFive]= Lock; + map[Shift+Lock+LevelFive]= Level6; + preserve[Shift+Lock+LevelFive]= Lock; + map[LevelThree+LevelFive]= Level7; + map[Shift+LevelThree+LevelFive]= Level8; + map[Lock+LevelThree+LevelFive]= Level7; + preserve[Lock+LevelThree+LevelFive]= Lock; + map[Shift+Lock+LevelThree+LevelFive]= Level8; + preserve[Shift+Lock+LevelThree+LevelFive]= Lock; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "X"; + level_name[Level6]= "X Shift"; + level_name[Level7]= "X Alt Base"; + level_name[Level8]= "X Shift Alt"; + }; + type "FOUR_LEVEL" { + modifiers= Shift+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_ALPHABETIC" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level4; + map[Shift+Lock+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_SEMIALPHABETIC" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level3; + preserve[Lock+LevelThree]= Lock; + map[Shift+Lock+LevelThree]= Level4; + preserve[Shift+Lock+LevelThree]= Lock; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_MIXED_KEYPAD" { + modifiers= Shift+NumLock+LevelThree; + map[NumLock]= Level2; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[NumLock+LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Shift+NumLock+LevelThree]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Number"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_X" { + modifiers= Shift+Control+Alt+LevelThree; + map[LevelThree]= Level2; + map[Shift+LevelThree]= Level3; + map[Control+Alt]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Alt Base"; + level_name[Level3]= "Shift Alt"; + level_name[Level4]= "Ctrl+Alt"; + }; + type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[Lock]= Level4; + preserve[Lock]= Lock; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level3; + preserve[Lock+LevelThree]= Lock; + map[Shift+Lock+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "AltGr Base"; + level_name[Level4]= "Shift AltGr"; + }; + type "FOUR_LEVEL_PLUS_LOCK" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock]= Level5; + map[Shift+Lock]= Level2; + map[Lock+LevelThree]= Level3; + map[Shift+Lock+LevelThree]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "Lock"; + }; + type "FOUR_LEVEL_KEYPAD" { + modifiers= Shift+NumLock+LevelThree; + map[Shift]= Level2; + map[NumLock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[NumLock+LevelThree]= Level4; + map[Shift+NumLock+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Number"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Alt Number"; + }; + type "FOUR_LEVEL_KEYPAD" { + modifiers= Shift+NumLock+LevelThree; + map[Shift]= Level2; + map[NumLock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[NumLock+LevelThree]= Level4; + map[Shift+NumLock+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Number"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Alt Number"; + }; +}; + +xkb_compatibility "complete" { + virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper; + + interpret.useModMapMods= AnyLevel; + interpret.repeat= False; + interpret ISO_Level2_Latch+Exactly(Shift) { + useModMapMods=level1; + action= LatchMods(modifiers=Shift,clearLocks,latchToLock); + }; + interpret Shift_Lock+AnyOf(Shift+Lock) { + action= LockMods(modifiers=Shift); + }; + interpret Num_Lock+AnyOf(all) { + virtualModifier= NumLock; + action= LockMods(modifiers=NumLock); + }; + interpret ISO_Level3_Shift+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= SetMods(modifiers=LevelThree,clearLocks); + }; + interpret ISO_Level3_Latch+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock); + }; + interpret ISO_Level3_Lock+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= LockMods(modifiers=LevelThree); + }; + interpret Alt_L+AnyOf(all) { + virtualModifier= Alt; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Alt_R+AnyOf(all) { + virtualModifier= Alt; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Meta_L+AnyOf(all) { + virtualModifier= Meta; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Meta_R+AnyOf(all) { + virtualModifier= Meta; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Super_L+AnyOf(all) { + virtualModifier= Super; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Super_R+AnyOf(all) { + virtualModifier= Super; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Hyper_L+AnyOf(all) { + virtualModifier= Hyper; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Hyper_R+AnyOf(all) { + virtualModifier= Hyper; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Scroll_Lock+AnyOf(all) { + virtualModifier= ScrollLock; + action= LockMods(modifiers=modMapMods); + }; + interpret ISO_Level5_Shift+AnyOf(all) { + virtualModifier= LevelFive; + useModMapMods=level1; + action= SetMods(modifiers=LevelFive,clearLocks); + }; + interpret ISO_Level5_Latch+AnyOf(all) { + virtualModifier= LevelFive; + useModMapMods=level1; + action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock); + }; + interpret ISO_Level5_Lock+AnyOf(all) { + virtualModifier= LevelFive; + useModMapMods=level1; + action= LockMods(modifiers=LevelFive); + }; + interpret Mode_switch+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= SetGroup(group=+1); + }; + interpret ISO_Level3_Shift+AnyOfOrNone(all) { + action= SetMods(modifiers=LevelThree,clearLocks); + }; + interpret ISO_Level3_Latch+AnyOfOrNone(all) { + action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock); + }; + interpret ISO_Level3_Lock+AnyOfOrNone(all) { + action= LockMods(modifiers=LevelThree); + }; + interpret ISO_Group_Latch+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LatchGroup(group=2); + }; + interpret ISO_Next_Group+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LockGroup(group=+1); + }; + interpret ISO_Prev_Group+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LockGroup(group=-1); + }; + interpret ISO_First_Group+AnyOfOrNone(all) { + action= LockGroup(group=1); + }; + interpret ISO_Last_Group+AnyOfOrNone(all) { + action= LockGroup(group=2); + }; + interpret KP_1+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+1); + }; + interpret KP_End+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+1); + }; + interpret KP_2+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=+1); + }; + interpret KP_Down+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=+1); + }; + interpret KP_3+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+1); + }; + interpret KP_Next+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+1); + }; + interpret KP_4+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+0); + }; + interpret KP_Left+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+0); + }; + interpret KP_6+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+0); + }; + interpret KP_Right+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+0); + }; + interpret KP_7+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=-1); + }; + interpret KP_Home+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=-1); + }; + interpret KP_8+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=-1); + }; + interpret KP_Up+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=-1); + }; + interpret KP_9+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=-1); + }; + interpret KP_Prior+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=-1); + }; + interpret KP_5+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default); + }; + interpret KP_Begin+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default); + }; + interpret KP_F2+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=1); + }; + interpret KP_Divide+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=1); + }; + interpret KP_F3+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=2); + }; + interpret KP_Multiply+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=2); + }; + interpret KP_F4+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=3); + }; + interpret KP_Subtract+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=3); + }; + interpret KP_Separator+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default,count=2); + }; + interpret KP_Add+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default,count=2); + }; + interpret KP_0+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=lock); + }; + interpret KP_Insert+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=lock); + }; + interpret KP_Decimal+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=unlock); + }; + interpret KP_Delete+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=unlock); + }; + interpret F25+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=1); + }; + interpret F26+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=2); + }; + interpret F27+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=-1); + }; + interpret F29+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=-1); + }; + interpret F31+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default); + }; + interpret F33+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+1); + }; + interpret F35+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+1); + }; + interpret Pointer_Button_Dflt+AnyOfOrNone(all) { + action= PtrBtn(button=default); + }; + interpret Pointer_Button1+AnyOfOrNone(all) { + action= PtrBtn(button=1); + }; + interpret Pointer_Button2+AnyOfOrNone(all) { + action= PtrBtn(button=2); + }; + interpret Pointer_Button3+AnyOfOrNone(all) { + action= PtrBtn(button=3); + }; + interpret Pointer_DblClick_Dflt+AnyOfOrNone(all) { + action= PtrBtn(button=default,count=2); + }; + interpret Pointer_DblClick1+AnyOfOrNone(all) { + action= PtrBtn(button=1,count=2); + }; + interpret Pointer_DblClick2+AnyOfOrNone(all) { + action= PtrBtn(button=2,count=2); + }; + interpret Pointer_DblClick3+AnyOfOrNone(all) { + action= PtrBtn(button=3,count=2); + }; + interpret Pointer_Drag_Dflt+AnyOfOrNone(all) { + action= LockPtrBtn(button=default); + }; + interpret Pointer_Drag1+AnyOfOrNone(all) { + action= LockPtrBtn(button=1); + }; + interpret Pointer_Drag2+AnyOfOrNone(all) { + action= LockPtrBtn(button=2); + }; + interpret Pointer_Drag3+AnyOfOrNone(all) { + action= LockPtrBtn(button=3); + }; + interpret Pointer_EnableKeys+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeys); + }; + interpret Pointer_Accelerate+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeysAccel); + }; + interpret Pointer_DfltBtnNext+AnyOfOrNone(all) { + action= SetPtrDflt(affect=button,button=+1); + }; + interpret Pointer_DfltBtnPrev+AnyOfOrNone(all) { + action= SetPtrDflt(affect=button,button=-1); + }; + interpret AccessX_Enable+AnyOfOrNone(all) { + action= LockControls(controls=AccessXKeys); + }; + interpret AccessX_Feedback_Enable+AnyOfOrNone(all) { + action= LockControls(controls=AccessXFeedback); + }; + interpret RepeatKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=RepeatKeys); + }; + interpret SlowKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=SlowKeys); + }; + interpret BounceKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=BounceKeys); + }; + interpret StickyKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=StickyKeys); + }; + interpret MouseKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeys); + }; + interpret MouseKeys_Accel_Enable+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeysAccel); + }; + interpret Overlay1_Enable+AnyOfOrNone(all) { + action= LockControls(controls=none); + }; + interpret Overlay2_Enable+AnyOfOrNone(all) { + action= LockControls(controls=none); + }; + interpret AudibleBell_Enable+AnyOfOrNone(all) { + action= LockControls(controls=AudibleBell); + }; + interpret Terminate_Server+AnyOfOrNone(all) { + action= Terminate(); + }; + interpret Alt_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Alt,clearLocks); + }; + interpret Alt_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Alt,clearLocks); + }; + interpret Meta_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Meta,clearLocks); + }; + interpret Meta_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Meta,clearLocks); + }; + interpret Super_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Super,clearLocks); + }; + interpret Super_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Super,clearLocks); + }; + interpret Hyper_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Hyper,clearLocks); + }; + interpret Hyper_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Hyper,clearLocks); + }; + interpret Shift_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Shift,clearLocks); + }; + interpret XF86Switch_VT_1+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=1,!same); + }; + interpret XF86Switch_VT_2+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=2,!same); + }; + interpret XF86Switch_VT_3+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=3,!same); + }; + interpret XF86Switch_VT_4+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=4,!same); + }; + interpret XF86Switch_VT_5+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=5,!same); + }; + interpret XF86Switch_VT_6+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=6,!same); + }; + interpret XF86Switch_VT_7+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=7,!same); + }; + interpret XF86Switch_VT_8+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=8,!same); + }; + interpret XF86Switch_VT_9+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=9,!same); + }; + interpret XF86Switch_VT_10+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=10,!same); + }; + interpret XF86Switch_VT_11+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=11,!same); + }; + interpret XF86Switch_VT_12+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=12,!same); + }; + interpret XF86LogGrabInfo+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x47,data[3]=0x72,data[4]=0x62,data[5]=0x73,data[6]=0x00); + }; + interpret XF86LogWindowTree+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x57,data[3]=0x69,data[4]=0x6e,data[5]=0x73,data[6]=0x00); + }; + interpret XF86Next_VMode+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x2b,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00); + }; + interpret XF86Prev_VMode+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x2d,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00); + }; + interpret ISO_Level5_Shift+AnyOfOrNone(all) { + action= SetMods(modifiers=LevelFive,clearLocks); + }; + interpret ISO_Level5_Latch+AnyOfOrNone(all) { + action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock); + }; + interpret ISO_Level5_Lock+AnyOfOrNone(all) { + action= LockMods(modifiers=LevelFive); + }; + interpret Caps_Lock+AnyOfOrNone(all) { + action= LockMods(modifiers=Lock); + }; + interpret Any+Exactly(Lock) { + action= LockMods(modifiers=Lock); + }; + interpret Any+AnyOf(all) { + action= SetMods(modifiers=modMapMods,clearLocks); + }; + indicator "Caps Lock" { + whichModState= locked; + modifiers= Lock; + }; + indicator "Num Lock" { + whichModState= locked; + modifiers= NumLock; + }; + indicator "Scroll Lock" { + whichModState= locked; + modifiers= ScrollLock; + }; + indicator "Shift Lock" { + whichModState= locked; + modifiers= Shift; + }; + indicator "Group 2" { + groups= 0xfe; + }; + indicator "Mouse Keys" { + controls= MouseKeys; + }; +}; + +xkb_symbols "pc_us_pt_2_us_3_inet(evdev)_group(shift_caps_toggle)_compose(ralt)" { + name[group1]="English (US)"; + name[group2]="Portuguese"; + name[group3]="English (US)"; + + key { [ Escape ] }; + key { + type[group2]= "FOUR_LEVEL", + symbols[Group1]= [ 1, exclam ], + symbols[Group2]= [ 1, exclam, onesuperior, exclamdown ], + symbols[Group3]= [ 1, exclam ] + }; + key { + type[group2]= "FOUR_LEVEL", + symbols[Group1]= [ 2, at ], + symbols[Group2]= [ 2, quotedbl, at, oneeighth ], + symbols[Group3]= [ 2, at ] + }; + key { + type[group2]= "FOUR_LEVEL", + symbols[Group1]= [ 3, numbersign ], + symbols[Group2]= [ 3, numbersign, sterling, sterling ], + symbols[Group3]= [ 3, numbersign ] + }; + key { + type[group2]= "FOUR_LEVEL", + symbols[Group1]= [ 4, dollar ], + symbols[Group2]= [ 4, dollar, section, dollar ], + symbols[Group3]= [ 4, dollar ] + }; + key { + type[group2]= "FOUR_LEVEL", + symbols[Group1]= [ 5, percent ], + symbols[Group2]= [ 5, percent, onehalf, threeeighths ], + symbols[Group3]= [ 5, percent ] + }; + key { + type[group2]= "FOUR_LEVEL", + symbols[Group1]= [ 6, asciicircum ], + symbols[Group2]= [ 6, ampersand, notsign, fiveeighths ], + symbols[Group3]= [ 6, asciicircum ] + }; + key { + type[group2]= "FOUR_LEVEL", + symbols[Group1]= [ 7, ampersand ], + symbols[Group2]= [ 7, slash, braceleft, seveneighths ], + symbols[Group3]= [ 7, ampersand ] + }; + key { + type[group2]= "FOUR_LEVEL", + symbols[Group1]= [ 8, asterisk ], + symbols[Group2]= [ 8, parenleft, bracketleft, trademark ], + symbols[Group3]= [ 8, asterisk ] + }; + key { + type[group2]= "FOUR_LEVEL", + symbols[Group1]= [ 9, parenleft ], + symbols[Group2]= [ 9, parenright, bracketright, plusminus ], + symbols[Group3]= [ 9, parenleft ] + }; + key { + type[group2]= "FOUR_LEVEL", + symbols[Group1]= [ 0, parenright ], + symbols[Group2]= [ 0, equal, braceright, degree ], + symbols[Group3]= [ 0, parenright ] + }; + key { + type[group2]= "FOUR_LEVEL", + symbols[Group1]= [ minus, underscore ], + symbols[Group2]= [ apostrophe, question, backslash, questiondown ], + symbols[Group3]= [ minus, underscore ] + }; + key { + type[group2]= "FOUR_LEVEL", + symbols[Group1]= [ equal, plus ], + symbols[Group2]= [ guillemotleft, guillemotright, dead_cedilla, dead_ogonek ], + symbols[Group3]= [ equal, plus ] + }; + key { [ BackSpace, BackSpace ] }; + key { [ Tab, ISO_Left_Tab ] }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_SEMIALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ q, Q ], + symbols[Group2]= [ q, Q, at, Greek_OMEGA ], + symbols[Group3]= [ q, Q ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_ALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ w, W ], + symbols[Group2]= [ w, W, lstroke, Lstroke ], + symbols[Group3]= [ w, W ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_SEMIALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ e, E ], + symbols[Group2]= [ e, E, EuroSign, cent ], + symbols[Group3]= [ e, E ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_SEMIALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ r, R ], + symbols[Group2]= [ r, R, paragraph, registered ], + symbols[Group3]= [ r, R ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_ALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ t, T ], + symbols[Group2]= [ t, T, tslash, Tslash ], + symbols[Group3]= [ t, T ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_SEMIALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ y, Y ], + symbols[Group2]= [ y, Y, leftarrow, yen ], + symbols[Group3]= [ y, Y ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_SEMIALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ u, U ], + symbols[Group2]= [ u, U, downarrow, uparrow ], + symbols[Group3]= [ u, U ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_SEMIALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ i, I ], + symbols[Group2]= [ i, I, rightarrow, idotless ], + symbols[Group3]= [ i, I ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_ALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ o, O ], + symbols[Group2]= [ o, O, oslash, Oslash ], + symbols[Group3]= [ o, O ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_ALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ p, P ], + symbols[Group2]= [ p, P, thorn, THORN ], + symbols[Group3]= [ p, P ] + }; + key { + type[group2]= "FOUR_LEVEL", + symbols[Group1]= [ bracketleft, braceleft ], + symbols[Group2]= [ plus, asterisk, dead_diaeresis, dead_abovering ], + symbols[Group3]= [ bracketleft, braceleft ] + }; + key { + type[group2]= "FOUR_LEVEL", + symbols[Group1]= [ bracketright, braceright ], + symbols[Group2]= [ dead_acute, dead_grave, dead_tilde, dead_macron ], + symbols[Group3]= [ bracketright, braceright ] + }; + key { [ Return ] }; + key { [ Control_L ] }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_ALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ a, A ], + symbols[Group2]= [ a, A, ae, AE ], + symbols[Group3]= [ a, A ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_SEMIALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ s, S ], + symbols[Group2]= [ s, S, ssharp, section ], + symbols[Group3]= [ s, S ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_ALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ d, D ], + symbols[Group2]= [ d, D, eth, ETH ], + symbols[Group3]= [ d, D ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_SEMIALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ f, F ], + symbols[Group2]= [ f, F, dstroke, ordfeminine ], + symbols[Group3]= [ f, F ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_ALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ g, G ], + symbols[Group2]= [ g, G, eng, ENG ], + symbols[Group3]= [ g, G ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_ALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ h, H ], + symbols[Group2]= [ h, H, hstroke, Hstroke ], + symbols[Group3]= [ h, H ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_SEMIALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ j, J ], + symbols[Group2]= [ j, J, dead_hook, dead_horn ], + symbols[Group3]= [ j, J ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_SEMIALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ k, K ], + symbols[Group2]= [ k, K, kra, ampersand ], + symbols[Group3]= [ k, K ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_ALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ l, L ], + symbols[Group2]= [ l, L, lstroke, Lstroke ], + symbols[Group3]= [ l, L ] + }; + key { + type[group2]= "FOUR_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ semicolon, colon ], + symbols[Group2]= [ ccedilla, Ccedilla, dead_acute, dead_doubleacute ], + symbols[Group3]= [ semicolon, colon ] + }; + key { + type[group2]= "FOUR_LEVEL", + symbols[Group1]= [ apostrophe, quotedbl ], + symbols[Group2]= [ masculine, ordfeminine, dead_circumflex, dead_caron ], + symbols[Group3]= [ apostrophe, quotedbl ] + }; + key { + type[group2]= "FOUR_LEVEL", + symbols[Group1]= [ grave, asciitilde ], + symbols[Group2]= [ backslash, bar, notsign, notsign ], + symbols[Group3]= [ grave, asciitilde ] + }; + key { [ Shift_L ] }; + key { + type[group2]= "FOUR_LEVEL", + symbols[Group1]= [ backslash, bar ], + symbols[Group2]= [ dead_tilde, dead_circumflex, dead_grave, dead_breve ], + symbols[Group3]= [ backslash, bar ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_SEMIALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ z, Z ], + symbols[Group2]= [ z, Z, guillemotleft, less ], + symbols[Group3]= [ z, Z ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_SEMIALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ x, X ], + symbols[Group2]= [ x, X, guillemotright, greater ], + symbols[Group3]= [ x, X ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_SEMIALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ c, C ], + symbols[Group2]= [ c, C, cent, copyright ], + symbols[Group3]= [ c, C ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_SEMIALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ v, V ], + symbols[Group2]= [ v, V, leftdoublequotemark, leftsinglequotemark ], + symbols[Group3]= [ v, V ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_SEMIALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ b, B ], + symbols[Group2]= [ b, B, rightdoublequotemark, rightsinglequotemark ], + symbols[Group3]= [ b, B ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_ALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ n, N ], + symbols[Group2]= [ n, N, n, N ], + symbols[Group3]= [ n, N ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "FOUR_LEVEL_SEMIALPHABETIC", + type[group3]= "ALPHABETIC", + symbols[Group1]= [ m, M ], + symbols[Group2]= [ m, M, mu, masculine ], + symbols[Group3]= [ m, M ] + }; + key { + type[group2]= "FOUR_LEVEL", + symbols[Group1]= [ comma, less ], + symbols[Group2]= [ comma, semicolon, horizconnector, multiply ], + symbols[Group3]= [ comma, less ] + }; + key { + type[group2]= "FOUR_LEVEL", + symbols[Group1]= [ period, greater ], + symbols[Group2]= [ period, colon, periodcentered, division ], + symbols[Group3]= [ period, greater ] + }; + key { + type[group2]= "FOUR_LEVEL", + symbols[Group1]= [ slash, question ], + symbols[Group2]= [ minus, underscore, dead_belowdot, dead_abovedot ], + symbols[Group3]= [ slash, question ] + }; + key { [ Shift_R ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86ClearGrab ] + }; + key { [ Alt_L, Meta_L ] }; + key { [ space ] }; + key { [ Caps_Lock, ISO_Next_Group ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F1, F1, F1, F1, XF86Switch_VT_1 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F2, F2, F2, F2, XF86Switch_VT_2 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F3, F3, F3, F3, XF86Switch_VT_3 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F4, F4, F4, F4, XF86Switch_VT_4 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F5, F5, F5, F5, XF86Switch_VT_5 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F6, F6, F6, F6, XF86Switch_VT_6 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F7, F7, F7, F7, XF86Switch_VT_7 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F8, F8, F8, F8, XF86Switch_VT_8 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F9, F9, F9, F9, XF86Switch_VT_9 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F10, F10, F10, F10, XF86Switch_VT_10 ] + }; + key { [ Num_Lock ] }; + key { [ Scroll_Lock ] }; + key { [ KP_Home, KP_7 ] }; + key { [ KP_Up, KP_8 ] }; + key { [ KP_Prior, KP_9 ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86Prev_VMode ] + }; + key { [ KP_Left, KP_4 ] }; + key { [ KP_Begin, KP_5 ] }; + key { [ KP_Right, KP_6 ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Add, KP_Add, KP_Add, KP_Add, XF86Next_VMode ] + }; + key { [ KP_End, KP_1 ] }; + key { [ KP_Down, KP_2 ] }; + key { [ KP_Next, KP_3 ] }; + key { [ KP_Insert, KP_0 ] }; + key { [ KP_Delete, KP_Decimal ] }; + key { + type= "ONE_LEVEL", + symbols[Group1]= [ ISO_Level3_Shift ] + }; + key { + type= "FOUR_LEVEL", + symbols[Group1]= [ less, greater, bar, brokenbar ], + symbols[Group2]= [ less, greater, backslash, backslash ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F11, F11, F11, F11, XF86Switch_VT_11 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F12, F12, F12, F12, XF86Switch_VT_12 ] + }; + key { [ Katakana ] }; + key { [ Hiragana ] }; + key { [ Henkan_Mode ] }; + key { [ Hiragana_Katakana ] }; + key { [ Muhenkan ] }; + key { [ KP_Enter ] }; + key { [ Control_R ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86Ungrab ] + }; + key { + type= "PC_ALT_LEVEL2", + symbols[Group1]= [ Print, Sys_Req ] + }; + key { + type[group1]= "TWO_LEVEL", + type[group2]= "ONE_LEVEL", + symbols[Group1]= [ Multi_key, Multi_key ], + symbols[Group2]= [ ISO_Level3_Shift ] + }; + key { [ Linefeed ] }; + key { [ Home ] }; + key { [ Up ] }; + key { [ Prior ] }; + key { [ Left ] }; + key { [ Right ] }; + key { [ End ] }; + key { [ Down ] }; + key { [ Next ] }; + key { [ Insert ] }; + key { [ Delete ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86PowerOff ] }; + key { [ KP_Equal ] }; + key { [ plusminus ] }; + key { + type= "PC_CONTROL_LEVEL2", + symbols[Group1]= [ Pause, Break ] + }; + key { [ XF86LaunchA ] }; + key { [ KP_Decimal, KP_Decimal ] }; + key { [ Hangul ] }; + key { [ Hangul_Hanja ] }; + key { [ Super_L ] }; + key { [ Super_R ] }; + key { [ Menu ] }; + key { [ Cancel ] }; + key { [ Redo ] }; + key { [ SunProps ] }; + key { [ Undo ] }; + key { [ SunFront ] }; + key { [ XF86Copy ] }; + key { [ XF86Open ] }; + key { [ XF86Paste ] }; + key { [ Find ] }; + key { [ XF86Cut ] }; + key { [ Help ] }; + key { [ XF86MenuKB ] }; + key { [ XF86Calculator ] }; + key { [ XF86Sleep ] }; + key { [ XF86WakeUp ] }; + key { [ XF86Explorer ] }; + key { [ XF86Send ] }; + key { [ XF86Xfer ] }; + key { [ XF86Launch1 ] }; + key { [ XF86Launch2 ] }; + key { [ XF86WWW ] }; + key { [ XF86DOS ] }; + key { [ XF86ScreenSaver ] }; + key { [ XF86RotateWindows ] }; + key { [ XF86TaskPane ] }; + key { [ XF86Mail ] }; + key { [ XF86Favorites ] }; + key { [ XF86MyComputer ] }; + key { [ XF86Back ] }; + key { [ XF86Forward ] }; + key { [ XF86Eject ] }; + key { [ XF86Eject, XF86Eject ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioStop, XF86Eject ] }; + key { [ XF86AudioRecord ] }; + key { [ XF86AudioRewind ] }; + key { [ XF86Phone ] }; + key { [ XF86Tools ] }; + key { [ XF86HomePage ] }; + key { [ XF86Reload ] }; + key { [ XF86Close ] }; + key { [ XF86ScrollUp ] }; + key { [ XF86ScrollDown ] }; + key { [ parenleft ] }; + key { [ parenright ] }; + key { [ XF86New ] }; + key { [ Redo ] }; + key { [ XF86Tools ] }; + key { [ XF86Launch5 ] }; + key { [ XF86Launch6 ] }; + key { [ XF86Launch7 ] }; + key { [ XF86Launch8 ] }; + key { [ XF86Launch9 ] }; + key { [ XF86AudioMicMute ] }; + key { [ XF86TouchpadToggle ] }; + key { [ XF86TouchpadOn ] }; + key { [ XF86TouchpadOff ] }; + key { [ Mode_switch ] }; + key { [ NoSymbol, Alt_L ] }; + key { [ NoSymbol, Meta_L ] }; + key { [ NoSymbol, Super_L ] }; + key { [ NoSymbol, Hyper_L ] }; + key { [ XF86AudioPlay ] }; + key { [ XF86AudioPause ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Launch4 ] }; + key { [ XF86LaunchB ] }; + key { [ XF86Suspend ] }; + key { [ XF86Close ] }; + key { [ XF86AudioPlay ] }; + key { [ XF86AudioForward ] }; + key { [ Print ] }; + key { [ XF86WebCam ] }; + key { [ XF86Mail ] }; + key { [ XF86Messenger ] }; + key { [ XF86Search ] }; + key { [ XF86Go ] }; + key { [ XF86Finance ] }; + key { [ XF86Game ] }; + key { [ XF86Shop ] }; + key { [ Cancel ] }; + key { [ XF86MonBrightnessDown ] }; + key { [ XF86MonBrightnessUp ] }; + key { [ XF86AudioMedia ] }; + key { [ XF86Display ] }; + key { [ XF86KbdLightOnOff ] }; + key { [ XF86KbdBrightnessDown ] }; + key { [ XF86KbdBrightnessUp ] }; + key { [ XF86Send ] }; + key { [ XF86Reply ] }; + key { [ XF86MailForward ] }; + key { [ XF86Save ] }; + key { [ XF86Documents ] }; + key { [ XF86Battery ] }; + key { [ XF86Bluetooth ] }; + key { [ XF86WLAN ] }; + modifier_map Shift { , }; + modifier_map Lock { }; + modifier_map Control { , }; + modifier_map Mod1 { , }; + modifier_map Mod2 { }; + modifier_map Mod4 { , , , }; + modifier_map Mod5 { , }; +}; + +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/no-aliases.xkb b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/no-aliases.xkb new file mode 100644 index 0000000..1d07c6e --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/no-aliases.xkb @@ -0,0 +1,1337 @@ +xkb_keymap { +xkb_keycodes "evdev_aliases(qwerty)" { + minimum = 8; + maximum = 255; + = 9; + = 10; + = 11; + = 12; + = 13; + = 14; + = 15; + = 16; + = 17; + = 18; + = 19; + = 20; + = 21; + = 22; + = 23; + = 24; + = 25; + = 26; + = 27; + = 28; + = 29; + = 30; + = 31; + = 32; + = 33; + = 34; + = 35; + = 36; + = 37; + = 38; + = 39; + = 40; + = 41; + = 42; + = 43; + = 44; + = 45; + = 46; + = 47; + = 48; + = 49; + = 50; + = 51; + = 52; + = 53; + = 54; + = 55; + = 56; + = 57; + = 58; + = 59; + = 60; + = 61; + = 62; + = 63; + = 64; + = 65; + = 66; + = 67; + = 68; + = 69; + = 70; + = 71; + = 72; + = 73; + = 74; + = 75; + = 76; + = 77; + = 78; + = 79; + = 80; + = 81; + = 82; + = 83; + = 84; + = 85; + = 86; + = 87; + = 88; + = 89; + = 90; + = 91; + = 92; + = 94; + = 95; + = 96; + = 97; + = 98; + = 99; + = 100; + = 101; + = 102; + = 103; + = 104; + = 105; + = 106; + = 107; + = 108; + = 109; + = 110; + = 111; + = 112; + = 113; + = 114; + = 115; + = 116; + = 117; + = 118; + = 119; + = 120; + = 121; + = 122; + = 123; + = 124; + = 125; + = 126; + = 127; + = 128; + = 129; + = 130; + = 131; + = 132; + = 133; + = 134; + = 135; + = 136; + = 137; + = 138; + = 139; + = 140; + = 141; + = 142; + = 143; + = 144; + = 145; + = 146; + = 147; + = 148; + = 149; + = 150; + = 151; + = 152; + = 153; + = 154; + = 155; + = 156; + = 157; + = 158; + = 159; + = 160; + = 161; + = 162; + = 163; + = 164; + = 165; + = 166; + = 167; + = 168; + = 169; + = 170; + = 171; + = 172; + = 173; + = 174; + = 175; + = 176; + = 177; + = 178; + = 179; + = 180; + = 181; + = 182; + = 183; + = 184; + = 185; + = 186; + = 187; + = 188; + = 189; + = 190; + = 191; + = 192; + = 193; + = 194; + = 195; + = 196; + = 197; + = 198; + = 199; + = 200; + = 201; + = 202; + = 203; + = 204; + = 205; + = 206; + = 207; + = 208; + = 209; + = 210; + = 211; + = 212; + = 213; + = 214; + = 215; + = 216; + = 217; + = 218; + = 219; + = 220; + = 221; + = 222; + = 223; + = 224; + = 225; + = 226; + = 227; + = 228; + = 229; + = 230; + = 231; + = 232; + = 233; + = 234; + = 235; + = 236; + = 237; + = 238; + = 239; + = 240; + = 241; + = 242; + = 243; + = 244; + = 245; + = 246; + = 247; + = 248; + = 249; + = 250; + = 251; + = 252; + = 253; + indicator 1 = "Caps Lock"; + indicator 2 = "Num Lock"; + indicator 3 = "Scroll Lock"; + indicator 4 = "Compose"; + indicator 5 = "Kana"; + indicator 6 = "Sleep"; + indicator 7 = "Suspend"; + indicator 8 = "Mute"; + indicator 9 = "Misc"; + indicator 10 = "Mail"; + indicator 11 = "Charging"; + indicator 12 = "Shift Lock"; + indicator 13 = "Group 2"; + indicator 14 = "Mouse Keys"; +}; + +xkb_types "complete" { + virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper; + + type "ONE_LEVEL" { + modifiers= none; + level_name[Level1]= "Any"; + }; + type "TWO_LEVEL" { + modifiers= Shift; + map[Shift]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + }; + type "ALPHABETIC" { + modifiers= Shift+Lock; + map[Shift]= Level2; + map[Lock]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Caps"; + }; + type "SHIFT+ALT" { + modifiers= Shift+Alt; + map[Shift+Alt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift+Alt"; + }; + type "PC_CONTROL_LEVEL2" { + modifiers= Control; + map[Control]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Control"; + }; + type "PC_LCONTROL_LEVEL2" { + modifiers= LControl; + map[LControl]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "LControl"; + }; + type "PC_RCONTROL_LEVEL2" { + modifiers= RControl; + map[RControl]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "RControl"; + }; + type "PC_ALT_LEVEL2" { + modifiers= Alt; + map[Alt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Alt"; + }; + type "PC_LALT_LEVEL2" { + modifiers= LAlt; + map[LAlt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "LAlt"; + }; + type "PC_RALT_LEVEL2" { + modifiers= RAlt; + map[RAlt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "RAlt"; + }; + type "CTRL+ALT" { + modifiers= Shift+Control+Alt+LevelThree; + map[Shift]= Level2; + preserve[Shift]= Shift; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + preserve[Shift+LevelThree]= Shift; + map[Control+Alt]= Level5; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "Ctrl+Alt"; + }; + type "LOCAL_EIGHT_LEVEL" { + modifiers= Shift+Lock+Control+LevelThree; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+Lock+LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level4; + map[Control]= Level5; + map[Shift+Lock+Control]= Level5; + map[Shift+Control]= Level6; + map[Lock+Control]= Level6; + map[Control+LevelThree]= Level7; + map[Shift+Lock+Control+LevelThree]= Level7; + map[Shift+Control+LevelThree]= Level8; + map[Lock+Control+LevelThree]= Level8; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Level3"; + level_name[Level4]= "Shift Level3"; + level_name[Level5]= "Ctrl"; + level_name[Level6]= "Shift Ctrl"; + level_name[Level7]= "Level3 Ctrl"; + level_name[Level8]= "Shift Level3 Ctrl"; + }; + type "THREE_LEVEL" { + modifiers= Shift+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Level3"; + }; + type "EIGHT_LEVEL" { + modifiers= Shift+LevelThree+LevelFive; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[LevelFive]= Level5; + map[Shift+LevelFive]= Level6; + map[LevelThree+LevelFive]= Level7; + map[Shift+LevelThree+LevelFive]= Level8; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "X"; + level_name[Level6]= "X Shift"; + level_name[Level7]= "X Alt Base"; + level_name[Level8]= "X Shift Alt"; + }; + type "EIGHT_LEVEL_ALPHABETIC" { + modifiers= Shift+Lock+LevelThree+LevelFive; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level4; + map[Shift+Lock+LevelThree]= Level3; + map[LevelFive]= Level5; + map[Shift+LevelFive]= Level6; + map[Lock+LevelFive]= Level6; + map[LevelThree+LevelFive]= Level7; + map[Shift+LevelThree+LevelFive]= Level8; + map[Lock+LevelThree+LevelFive]= Level8; + map[Shift+Lock+LevelThree+LevelFive]= Level7; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "X"; + level_name[Level6]= "X Shift"; + level_name[Level7]= "X Alt Base"; + level_name[Level8]= "X Shift Alt"; + }; + type "EIGHT_LEVEL_SEMIALPHABETIC" { + modifiers= Shift+Lock+LevelThree+LevelFive; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level3; + preserve[Lock+LevelThree]= Lock; + map[Shift+Lock+LevelThree]= Level4; + preserve[Shift+Lock+LevelThree]= Lock; + map[LevelFive]= Level5; + map[Shift+LevelFive]= Level6; + map[Lock+LevelFive]= Level6; + preserve[Lock+LevelFive]= Lock; + map[Shift+Lock+LevelFive]= Level6; + preserve[Shift+Lock+LevelFive]= Lock; + map[LevelThree+LevelFive]= Level7; + map[Shift+LevelThree+LevelFive]= Level8; + map[Lock+LevelThree+LevelFive]= Level7; + preserve[Lock+LevelThree+LevelFive]= Lock; + map[Shift+Lock+LevelThree+LevelFive]= Level8; + preserve[Shift+Lock+LevelThree+LevelFive]= Lock; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "X"; + level_name[Level6]= "X Shift"; + level_name[Level7]= "X Alt Base"; + level_name[Level8]= "X Shift Alt"; + }; + type "FOUR_LEVEL" { + modifiers= Shift+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_ALPHABETIC" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level4; + map[Shift+Lock+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_SEMIALPHABETIC" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level3; + preserve[Lock+LevelThree]= Lock; + map[Shift+Lock+LevelThree]= Level4; + preserve[Shift+Lock+LevelThree]= Lock; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_MIXED_KEYPAD" { + modifiers= Shift+NumLock+LevelThree; + map[NumLock]= Level2; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[NumLock+LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Shift+NumLock+LevelThree]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Number"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_X" { + modifiers= Shift+Control+Alt+LevelThree; + map[LevelThree]= Level2; + map[Shift+LevelThree]= Level3; + map[Control+Alt]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Alt Base"; + level_name[Level3]= "Shift Alt"; + level_name[Level4]= "Ctrl+Alt"; + }; + type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[Lock]= Level4; + preserve[Lock]= Lock; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level3; + preserve[Lock+LevelThree]= Lock; + map[Shift+Lock+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "AltGr Base"; + level_name[Level4]= "Shift AltGr"; + }; + type "FOUR_LEVEL_PLUS_LOCK" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock]= Level5; + map[Shift+Lock]= Level2; + map[Lock+LevelThree]= Level3; + map[Shift+Lock+LevelThree]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "Lock"; + }; + type "KEYPAD" { + modifiers= Shift+NumLock; + map[Shift]= Level2; + map[NumLock]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Number"; + }; + type "FOUR_LEVEL_KEYPAD" { + modifiers= Shift+NumLock+LevelThree; + map[Shift]= Level2; + map[NumLock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[NumLock+LevelThree]= Level4; + map[Shift+NumLock+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Number"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Alt Number"; + }; +}; + +xkb_compatibility "complete" { + virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper; + + interpret.useModMapMods= AnyLevel; + interpret.repeat= False; + interpret ISO_Level2_Latch+Exactly(Shift) { + useModMapMods=level1; + action= LatchMods(modifiers=Shift,clearLocks,latchToLock); + }; + interpret Shift_Lock+AnyOf(Shift+Lock) { + action= LockMods(modifiers=Shift); + }; + interpret Num_Lock+AnyOf(all) { + virtualModifier= NumLock; + action= LockMods(modifiers=NumLock); + }; + interpret ISO_Level3_Shift+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= SetMods(modifiers=LevelThree,clearLocks); + }; + interpret ISO_Level3_Latch+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock); + }; + interpret ISO_Level3_Lock+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= LockMods(modifiers=LevelThree); + }; + interpret Alt_L+AnyOf(all) { + virtualModifier= Alt; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Alt_R+AnyOf(all) { + virtualModifier= Alt; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Meta_L+AnyOf(all) { + virtualModifier= Meta; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Meta_R+AnyOf(all) { + virtualModifier= Meta; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Super_L+AnyOf(all) { + virtualModifier= Super; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Super_R+AnyOf(all) { + virtualModifier= Super; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Hyper_L+AnyOf(all) { + virtualModifier= Hyper; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Hyper_R+AnyOf(all) { + virtualModifier= Hyper; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Scroll_Lock+AnyOf(all) { + virtualModifier= ScrollLock; + action= LockMods(modifiers=modMapMods); + }; + interpret ISO_Level5_Shift+AnyOf(all) { + virtualModifier= LevelFive; + useModMapMods=level1; + action= SetMods(modifiers=LevelFive,clearLocks); + }; + interpret ISO_Level5_Latch+AnyOf(all) { + virtualModifier= LevelFive; + action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock); + }; + interpret ISO_Level5_Lock+AnyOf(all) { + virtualModifier= LevelFive; + action= LockMods(modifiers=LevelFive); + }; + interpret Mode_switch+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= SetGroup(group=+1); + }; + interpret ISO_Level3_Shift+AnyOfOrNone(all) { + action= SetMods(modifiers=LevelThree,clearLocks); + }; + interpret ISO_Level3_Latch+AnyOfOrNone(all) { + action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock); + }; + interpret ISO_Level3_Lock+AnyOfOrNone(all) { + action= LockMods(modifiers=LevelThree); + }; + interpret ISO_Group_Latch+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LatchGroup(group=2); + }; + interpret ISO_Next_Group+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LockGroup(group=+1); + }; + interpret ISO_Prev_Group+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LockGroup(group=-1); + }; + interpret ISO_First_Group+AnyOfOrNone(all) { + action= LockGroup(group=1); + }; + interpret ISO_Last_Group+AnyOfOrNone(all) { + action= LockGroup(group=2); + }; + interpret KP_1+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+1); + }; + interpret KP_End+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+1); + }; + interpret KP_2+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=+1); + }; + interpret KP_Down+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=+1); + }; + interpret KP_3+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+1); + }; + interpret KP_Next+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+1); + }; + interpret KP_4+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+0); + }; + interpret KP_Left+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+0); + }; + interpret KP_6+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+0); + }; + interpret KP_Right+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+0); + }; + interpret KP_7+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=-1); + }; + interpret KP_Home+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=-1); + }; + interpret KP_8+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=-1); + }; + interpret KP_Up+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=-1); + }; + interpret KP_9+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=-1); + }; + interpret KP_Prior+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=-1); + }; + interpret KP_5+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default); + }; + interpret KP_Begin+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default); + }; + interpret KP_F2+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=1); + }; + interpret KP_Divide+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=1); + }; + interpret KP_F3+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=2); + }; + interpret KP_Multiply+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=2); + }; + interpret KP_F4+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=3); + }; + interpret KP_Subtract+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=3); + }; + interpret KP_Separator+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default,count=2); + }; + interpret KP_Add+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default,count=2); + }; + interpret KP_0+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=lock); + }; + interpret KP_Insert+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=lock); + }; + interpret KP_Decimal+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=unlock); + }; + interpret KP_Delete+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=unlock); + }; + interpret F25+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=1); + }; + interpret F26+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=2); + }; + interpret F27+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=-1); + }; + interpret F29+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=-1); + }; + interpret F31+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default); + }; + interpret F33+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+1); + }; + interpret F35+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+1); + }; + interpret Pointer_Button_Dflt+AnyOfOrNone(all) { + action= PtrBtn(button=default); + }; + interpret Pointer_Button1+AnyOfOrNone(all) { + action= PtrBtn(button=1); + }; + interpret Pointer_Button2+AnyOfOrNone(all) { + action= PtrBtn(button=2); + }; + interpret Pointer_Button3+AnyOfOrNone(all) { + action= PtrBtn(button=3); + }; + interpret Pointer_DblClick_Dflt+AnyOfOrNone(all) { + action= PtrBtn(button=default,count=2); + }; + interpret Pointer_DblClick1+AnyOfOrNone(all) { + action= PtrBtn(button=1,count=2); + }; + interpret Pointer_DblClick2+AnyOfOrNone(all) { + action= PtrBtn(button=2,count=2); + }; + interpret Pointer_DblClick3+AnyOfOrNone(all) { + action= PtrBtn(button=3,count=2); + }; + interpret Pointer_Drag_Dflt+AnyOfOrNone(all) { + action= LockPtrBtn(button=default); + }; + interpret Pointer_Drag1+AnyOfOrNone(all) { + action= LockPtrBtn(button=1); + }; + interpret Pointer_Drag2+AnyOfOrNone(all) { + action= LockPtrBtn(button=2); + }; + interpret Pointer_Drag3+AnyOfOrNone(all) { + action= LockPtrBtn(button=3); + }; + interpret Pointer_EnableKeys+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeys); + }; + interpret Pointer_Accelerate+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeysAccel); + }; + interpret Pointer_DfltBtnNext+AnyOfOrNone(all) { + action= SetPtrDflt(affect=button,button=+1); + }; + interpret Pointer_DfltBtnPrev+AnyOfOrNone(all) { + action= SetPtrDflt(affect=button,button=-1); + }; + interpret AccessX_Enable+AnyOfOrNone(all) { + action= LockControls(controls=AccessXKeys); + }; + interpret AccessX_Feedback_Enable+AnyOfOrNone(all) { + action= LockControls(controls=AccessXFeedback); + }; + interpret RepeatKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=RepeatKeys); + }; + interpret SlowKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=SlowKeys); + }; + interpret BounceKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=BounceKeys); + }; + interpret StickyKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=StickyKeys); + }; + interpret MouseKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeys); + }; + interpret MouseKeys_Accel_Enable+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeysAccel); + }; + interpret Overlay1_Enable+AnyOfOrNone(all) { + action= LockControls(controls=none); + }; + interpret Overlay2_Enable+AnyOfOrNone(all) { + action= LockControls(controls=none); + }; + interpret AudibleBell_Enable+AnyOfOrNone(all) { + action= LockControls(controls=AudibleBell); + }; + interpret Terminate_Server+AnyOfOrNone(all) { + action= Terminate(); + }; + interpret Alt_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Alt,clearLocks); + }; + interpret Alt_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Alt,clearLocks); + }; + interpret Meta_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Meta,clearLocks); + }; + interpret Meta_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Meta,clearLocks); + }; + interpret Super_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Super,clearLocks); + }; + interpret Super_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Super,clearLocks); + }; + interpret Hyper_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Hyper,clearLocks); + }; + interpret Hyper_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Hyper,clearLocks); + }; + interpret Shift_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Shift,clearLocks); + }; + interpret XF86Switch_VT_1+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=1,!same); + }; + interpret XF86Switch_VT_2+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=2,!same); + }; + interpret XF86Switch_VT_3+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=3,!same); + }; + interpret XF86Switch_VT_4+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=4,!same); + }; + interpret XF86Switch_VT_5+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=5,!same); + }; + interpret XF86Switch_VT_6+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=6,!same); + }; + interpret XF86Switch_VT_7+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=7,!same); + }; + interpret XF86Switch_VT_8+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=8,!same); + }; + interpret XF86Switch_VT_9+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=9,!same); + }; + interpret XF86Switch_VT_10+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=10,!same); + }; + interpret XF86Switch_VT_11+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=11,!same); + }; + interpret XF86Switch_VT_12+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=12,!same); + }; + interpret XF86LogGrabInfo+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x47,data[3]=0x72,data[4]=0x62,data[5]=0x73,data[6]=0x00); + }; + interpret XF86LogWindowTree+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x57,data[3]=0x69,data[4]=0x6e,data[5]=0x73,data[6]=0x00); + }; + interpret XF86Next_VMode+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x2b,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00); + }; + interpret XF86Prev_VMode+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x2d,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00); + }; + interpret ISO_Level5_Shift+AnyOfOrNone(all) { + action= SetMods(modifiers=LevelFive,clearLocks); + }; + interpret ISO_Level5_Latch+AnyOfOrNone(all) { + action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock); + }; + interpret ISO_Level5_Lock+AnyOfOrNone(all) { + action= LockMods(modifiers=LevelFive); + }; + interpret Caps_Lock+AnyOfOrNone(all) { + action= LockMods(modifiers=Lock); + }; + interpret Any+Exactly(Lock) { + action= LockMods(modifiers=Lock); + }; + interpret Any+AnyOf(all) { + action= SetMods(modifiers=modMapMods,clearLocks); + }; + indicator "Caps Lock" { + whichModState= locked; + modifiers= Lock; + }; + indicator "Num Lock" { + whichModState= locked; + modifiers= NumLock; + }; + indicator "Scroll Lock" { + whichModState= locked; + modifiers= ScrollLock; + }; + indicator "Shift Lock" { + whichModState= locked; + modifiers= Shift; + }; + indicator "Group 2" { + groups= 0xfe; + }; + indicator "Mouse Keys" { + controls= MouseKeys; + }; +}; + +xkb_symbols "pc_us_inet(evdev)" { + name[group1]="English (US)"; + + key { [ Escape ] }; + key { [ 1, exclam ] }; + key { [ 2, at ] }; + key { [ 3, numbersign ] }; + key { [ 4, dollar ] }; + key { [ 5, percent ] }; + key { [ { H, E, L, L, O }, asciicircum ] }; + key { [ { Y, E, S, space, T, H, I, S, space, I, S, space, D, O, G }, ampersand ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + key { [ BackSpace, BackSpace ] }; + key { [ Tab, ISO_Left_Tab ] }; + key { [ q, Q ] }; + key { [ w, W ] }; + key { [ e, E ] }; + key { [ r, R ] }; + key { [ t, T ] }; + key { [ y, Y ] }; + key { [ u, U ] }; + key { [ i, I ] }; + key { [ o, O ] }; + key { [ p, P ] }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + key { [ Return ] }; + key { [ Control_L ] }; + key { [ a, A ] }; + key { [ s, S ] }; + key { [ d, D ] }; + key { [ f, F ] }; + key { [ g, G ] }; + key { [ h, H ] }; + key { [ j, J ] }; + key { [ k, K ] }; + key { [ l, L ] }; + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + key { [ grave, asciitilde ] }; + key { [ Shift_L ] }; + key { [ backslash, bar ] }; + key { [ z, Z ] }; + key { [ x, X ] }; + key { [ c, C ] }; + key { [ v, V ] }; + key { [ b, B ] }; + key { [ n, N ] }; + key { [ m, M ] }; + key { [ comma, less ] }; + key { [ period, greater ] }; + key { [ slash, question ] }; + key { [ Shift_R ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86ClearGrab ] + }; + key { [ Alt_L, Meta_L ] }; + key { [ space ] }; + key { [ Caps_Lock ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F1, F1, F1, F1, XF86Switch_VT_1 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F2, F2, F2, F2, XF86Switch_VT_2 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F3, F3, F3, F3, XF86Switch_VT_3 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F4, F4, F4, F4, XF86Switch_VT_4 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F5, F5, F5, F5, XF86Switch_VT_5 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F6, F6, F6, F6, XF86Switch_VT_6 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F7, F7, F7, F7, XF86Switch_VT_7 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F8, F8, F8, F8, XF86Switch_VT_8 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F9, F9, F9, F9, XF86Switch_VT_9 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F10, F10, F10, F10, XF86Switch_VT_10 ] + }; + key { [ Num_Lock ] }; + key { [ Scroll_Lock ] }; + key { [ KP_Home, KP_7 ] }; + key { [ KP_Up, KP_8 ] }; + key { [ KP_Prior, KP_9 ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86Prev_VMode ] + }; + key { [ KP_Left, KP_4 ] }; + key { [ KP_Begin, KP_5 ] }; + key { [ KP_Right, KP_6 ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Add, KP_Add, KP_Add, KP_Add, XF86Next_VMode ] + }; + key { [ KP_End, KP_1 ] }; + key { [ KP_Down, KP_2 ] }; + key { [ KP_Next, KP_3 ] }; + key { [ KP_Insert, KP_0 ] }; + key { [ KP_Delete, KP_Decimal ] }; + key { [ ISO_Level3_Shift ] }; + key { [ less, greater, bar, brokenbar ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F11, F11, F11, F11, XF86Switch_VT_11 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F12, F12, F12, F12, XF86Switch_VT_12 ] + }; + key { [ Katakana ] }; + key { [ Hiragana ] }; + key { [ Henkan_Mode ] }; + key { [ Hiragana_Katakana ] }; + key { [ Muhenkan ] }; + key { [ KP_Enter ] }; + key { [ Control_R ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86Ungrab ] + }; + key { + type= "PC_ALT_LEVEL2", + symbols[Group1]= [ Print, Sys_Req ] + }; + key { + type= "TWO_LEVEL", + symbols[Group1]= [ Alt_R, Meta_R ] + }; + key { [ Linefeed ] }; + key { [ Home ] }; + key { [ Up ] }; + key { [ Prior ] }; + key { [ Left ] }; + key { [ Right ] }; + key { [ End ] }; + key { [ Down ] }; + key { [ Next ] }; + key { [ Insert ] }; + key { [ Delete ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86PowerOff ] }; + key { [ KP_Equal ] }; + key { [ plusminus ] }; + key { + type= "PC_CONTROL_LEVEL2", + symbols[Group1]= [ Pause, Break ] + }; + key { [ XF86LaunchA ] }; + key { [ KP_Decimal, KP_Decimal ] }; + key { [ Hangul ] }; + key { [ Hangul_Hanja ] }; + key { [ Super_L ] }; + key { [ Super_R ] }; + key { [ Menu ] }; + key { [ Cancel ] }; + key { [ Redo ] }; + key { [ SunProps ] }; + key { [ Undo ] }; + key { [ SunFront ] }; + key { [ XF86Copy ] }; + key { [ XF86Open ] }; + key { [ XF86Paste ] }; + key { [ Find ] }; + key { [ XF86Cut ] }; + key { [ Help ] }; + key { [ XF86MenuKB ] }; + key { [ XF86Calculator ] }; + key { [ XF86Sleep ] }; + key { [ XF86WakeUp ] }; + key { [ XF86Explorer ] }; + key { [ XF86Send ] }; + key { [ XF86Xfer ] }; + key { [ XF86Launch1 ] }; + key { [ XF86Launch2 ] }; + key { [ XF86WWW ] }; + key { [ XF86DOS ] }; + key { [ XF86ScreenSaver ] }; + key { [ XF86RotateWindows ] }; + key { [ XF86Mail ] }; + key { [ XF86Favorites ] }; + key { [ XF86MyComputer ] }; + key { [ XF86Back ] }; + key { [ XF86Forward ] }; + key { [ XF86Eject ] }; + key { [ XF86Eject, XF86Eject ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioStop, XF86Eject ] }; + key { [ XF86AudioRecord ] }; + key { [ XF86AudioRewind ] }; + key { [ XF86Phone ] }; + key { [ XF86Tools ] }; + key { [ XF86HomePage ] }; + key { [ XF86Reload ] }; + key { [ XF86Close ] }; + key { [ XF86ScrollUp ] }; + key { [ XF86ScrollDown ] }; + key { [ parenleft ] }; + key { [ parenright ] }; + key { [ XF86New ] }; + key { [ Redo ] }; + key { [ XF86Tools ] }; + key { [ XF86Launch5 ] }; + key { [ XF86Launch6 ] }; + key { [ XF86Launch7 ] }; + key { [ XF86Launch8 ] }; + key { [ XF86Launch9 ] }; + key { [ XF86AudioMicMute ] }; + key { [ XF86TouchpadToggle ] }; + key { [ XF86TouchpadOn ] }; + key { [ XF86TouchpadOff ] }; + key { [ Mode_switch ] }; + key { [ NoSymbol, Alt_L ] }; + key { [ NoSymbol, Meta_L ] }; + key { [ NoSymbol, Super_L ] }; + key { [ NoSymbol, Hyper_L ] }; + key { [ XF86AudioPlay ] }; + key { [ XF86AudioPause ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Launch4 ] }; + key { [ XF86LaunchB ] }; + key { [ XF86Suspend ] }; + key { [ XF86Close ] }; + key { [ XF86AudioPlay ] }; + key { [ XF86AudioForward ] }; + key { [ Print ] }; + key { [ XF86WebCam ] }; + key { [ XF86Mail ] }; + key { [ XF86Messenger ] }; + key { [ XF86Search ] }; + key { [ XF86Go ] }; + key { [ XF86Finance ] }; + key { [ XF86Game ] }; + key { [ XF86Shop ] }; + key { [ Cancel ] }; + key { [ XF86MonBrightnessDown ] }; + key { [ XF86MonBrightnessUp ] }; + key { [ XF86AudioMedia ] }; + key { [ XF86Display ] }; + key { [ XF86KbdLightOnOff ] }; + key { [ XF86KbdBrightnessDown ] }; + key { [ XF86KbdBrightnessUp ] }; + key { [ XF86Send ] }; + key { [ XF86Reply ] }; + key { [ XF86MailForward ] }; + key { [ XF86Save ] }; + key { [ XF86Documents ] }; + key { [ XF86Battery ] }; + key { [ XF86Bluetooth ] }; + key { [ XF86WLAN ] }; + modifier_map Control { }; + modifier_map Shift { }; + modifier_map Shift { }; + modifier_map Mod1 { }; + modifier_map Lock { }; + modifier_map Mod2 { }; + modifier_map Mod5 { }; + modifier_map Control { }; + modifier_map Mod1 { }; + modifier_map Mod4 { }; + modifier_map Mod4 { }; + modifier_map Mod5 { }; + modifier_map Mod1 { }; + modifier_map Mod4 { }; + modifier_map Mod4 { }; +}; + +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/no-types.xkb b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/no-types.xkb new file mode 100644 index 0000000..2f70e3e --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/no-types.xkb @@ -0,0 +1,1025 @@ +xkb_keymap { + xkb_keycodes { + minimum = 8; + maximum = 255; + = 9; + = 10; + = 11; + = 12; + = 13; + = 14; + = 15; + = 16; + = 17; + = 18; + = 19; + = 20; + = 21; + = 22; + = 23; + = 24; + = 25; + = 26; + = 27; + = 28; + = 29; + = 30; + = 31; + = 32; + = 33; + = 34; + = 35; + = 36; + = 37; + = 38; + = 39; + = 40; + = 41; + = 42; + = 43; + = 44; + = 45; + = 46; + = 47; + = 48; + = 49; + = 50; + = 51; + = 52; + = 53; + = 54; + = 55; + = 56; + = 57; + = 58; + = 59; + = 60; + = 61; + = 62; + = 63; + = 64; + = 65; + = 66; + = 67; + = 68; + = 69; + = 70; + = 71; + = 72; + = 73; + = 74; + = 75; + = 76; + = 77; + = 78; + = 79; + = 80; + = 81; + = 82; + = 83; + = 84; + = 85; + = 86; + = 87; + = 88; + = 89; + = 90; + = 91; + = 92; + = 94; + = 95; + = 96; + = 97; + = 98; + = 99; + = 100; + = 101; + = 102; + = 103; + = 104; + = 105; + = 106; + = 107; + = 108; + = 109; + = 110; + = 111; + = 112; + = 113; + = 114; + = 115; + = 116; + = 117; + = 118; + = 119; + = 120; + = 121; + = 122; + = 123; + = 124; + = 125; + = 126; + = 127; + = 128; + = 129; + = 130; + = 131; + = 132; + = 133; + = 134; + = 135; + = 136; + = 137; + = 138; + = 139; + = 140; + = 141; + = 142; + = 143; + = 144; + = 145; + = 146; + = 147; + = 148; + = 149; + = 150; + = 151; + = 152; + = 153; + = 154; + = 155; + = 156; + = 157; + = 158; + = 159; + = 160; + = 161; + = 162; + = 163; + = 164; + = 165; + = 166; + = 167; + = 168; + = 169; + = 170; + = 171; + = 172; + = 173; + = 174; + = 175; + = 176; + = 177; + = 178; + = 179; + = 180; + = 181; + = 182; + = 183; + = 184; + = 185; + = 186; + = 187; + = 188; + = 189; + = 190; + = 191; + = 192; + = 193; + = 194; + = 195; + = 196; + = 197; + = 198; + = 199; + = 200; + = 201; + = 202; + = 203; + = 204; + = 205; + = 206; + = 207; + = 208; + = 209; + = 210; + = 211; + = 212; + = 213; + = 214; + = 215; + = 216; + = 217; + = 218; + = 219; + = 220; + = 221; + = 222; + = 223; + = 224; + = 225; + = 226; + = 227; + = 228; + = 229; + = 230; + = 231; + = 232; + = 233; + = 234; + = 235; + = 236; + = 237; + = 238; + = 239; + = 240; + = 241; + = 242; + = 243; + = 244; + = 245; + = 246; + = 247; + = 248; + = 249; + = 250; + = 251; + = 252; + = 253; + indicator 1 = "Caps Lock"; + indicator 2 = "Num Lock"; + indicator 3 = "Scroll Lock"; + indicator 4 = "Compose"; + indicator 5 = "Kana"; + indicator 6 = "Sleep"; + indicator 7 = "Suspend"; + indicator 8 = "Mute"; + indicator 9 = "Misc"; + indicator 10 = "Mail"; + indicator 11 = "Charging"; + indicator 12 = "Shift Lock"; + indicator 13 = "Group 2"; + indicator 14 = "Mouse Keys"; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + }; + + xkb_types { + }; + + xkb_compatibility { + virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper; + + interpret.useModMapMods= AnyLevel; + interpret.repeat= false; + interpret.locking= false; + interpret ISO_Level2_Latch+Exactly(Shift) { + useModMapMods=level1; + action= LatchMods(modifiers=Shift,clearLocks,latchToLock); + }; + interpret Shift_Lock+AnyOf(Shift+Lock) { + action= LockMods(modifiers=Shift); + }; + interpret Num_Lock+AnyOf(all) { + virtualModifier= NumLock; + action= LockMods(modifiers=NumLock); + }; + interpret ISO_Lock+AnyOf(all) { + action= NoAction(); + }; + interpret ISO_Level3_Shift+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= SetMods(modifiers=LevelThree,clearLocks); + }; + interpret ISO_Level3_Latch+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock); + }; + interpret ISO_Level3_Lock+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= LockMods(modifiers=LevelThree); + }; + interpret Alt_L+AnyOf(all) { + virtualModifier= Alt; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Alt_R+AnyOf(all) { + virtualModifier= Alt; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Meta_L+AnyOf(all) { + virtualModifier= Meta; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Meta_R+AnyOf(all) { + virtualModifier= Meta; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Super_L+AnyOf(all) { + virtualModifier= Super; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Super_R+AnyOf(all) { + virtualModifier= Super; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Hyper_L+AnyOf(all) { + virtualModifier= Hyper; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Hyper_R+AnyOf(all) { + virtualModifier= Hyper; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Scroll_Lock+AnyOf(all) { + virtualModifier= ScrollLock; + action= LockMods(modifiers=modMapMods); + }; + interpret ISO_Level5_Shift+AnyOf(all) { + virtualModifier= LevelFive; + useModMapMods=level1; + action= SetMods(modifiers=LevelFive,clearLocks); + }; + interpret ISO_Level5_Latch+AnyOf(all) { + virtualModifier= LevelFive; + action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock); + }; + interpret ISO_Level5_Lock+AnyOf(all) { + virtualModifier= LevelFive; + action= LockMods(modifiers=LevelFive); + }; + interpret Mode_switch+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= SetGroup(group=+1); + }; + interpret ISO_Level3_Shift+AnyOfOrNone(all) { + action= SetMods(modifiers=LevelThree,clearLocks); + }; + interpret ISO_Level3_Latch+AnyOfOrNone(all) { + action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock); + }; + interpret ISO_Level3_Lock+AnyOfOrNone(all) { + action= LockMods(modifiers=LevelThree); + }; + interpret ISO_Group_Latch+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LatchGroup(group=2); + }; + interpret ISO_Next_Group+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LockGroup(group=+1); + }; + interpret ISO_Prev_Group+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LockGroup(group=-1); + }; + interpret ISO_First_Group+AnyOfOrNone(all) { + action= LockGroup(group=1); + }; + interpret ISO_Last_Group+AnyOfOrNone(all) { + action= LockGroup(group=2); + }; + interpret KP_1+AnyOfOrNone(all) { + repeat= true; + action= MovePtr(x=-1,y=+1); + }; + interpret KP_End+AnyOfOrNone(all) { + repeat= true; + action= MovePtr(x=-1,y=+1); + }; + interpret KP_2+AnyOfOrNone(all) { + repeat= true; + action= MovePtr(x=+0,y=+1); + }; + interpret KP_Down+AnyOfOrNone(all) { + repeat= true; + action= MovePtr(x=+0,y=+1); + }; + interpret KP_3+AnyOfOrNone(all) { + repeat= true; + action= MovePtr(x=+1,y=+1); + }; + interpret KP_Next+AnyOfOrNone(all) { + repeat= true; + action= MovePtr(x=+1,y=+1); + }; + interpret KP_4+AnyOfOrNone(all) { + repeat= true; + action= MovePtr(x=-1,y=+0); + }; + interpret KP_Left+AnyOfOrNone(all) { + repeat= true; + action= MovePtr(x=-1,y=+0); + }; + interpret KP_6+AnyOfOrNone(all) { + repeat= true; + action= MovePtr(x=+1,y=+0); + }; + interpret KP_Right+AnyOfOrNone(all) { + repeat= true; + action= MovePtr(x=+1,y=+0); + }; + interpret KP_7+AnyOfOrNone(all) { + repeat= true; + action= MovePtr(x=-1,y=-1); + }; + interpret KP_Home+AnyOfOrNone(all) { + repeat= true; + action= MovePtr(x=-1,y=-1); + }; + interpret KP_8+AnyOfOrNone(all) { + repeat= true; + action= MovePtr(x=+0,y=-1); + }; + interpret KP_Up+AnyOfOrNone(all) { + repeat= true; + action= MovePtr(x=+0,y=-1); + }; + interpret KP_9+AnyOfOrNone(all) { + repeat= true; + action= MovePtr(x=+1,y=-1); + }; + interpret KP_Prior+AnyOfOrNone(all) { + repeat= true; + action= MovePtr(x=+1,y=-1); + }; + interpret KP_5+AnyOfOrNone(all) { + repeat= true; + action= PtrBtn(button=default); + }; + interpret KP_Begin+AnyOfOrNone(all) { + repeat= true; + action= PtrBtn(button=default); + }; + interpret KP_F2+AnyOfOrNone(all) { + repeat= true; + action= SetPtrDflt(affect=button,button=1); + }; + interpret KP_Divide+AnyOfOrNone(all) { + repeat= true; + action= SetPtrDflt(affect=button,button=1); + }; + interpret KP_F3+AnyOfOrNone(all) { + repeat= true; + action= SetPtrDflt(affect=button,button=2); + }; + interpret KP_Multiply+AnyOfOrNone(all) { + repeat= true; + action= SetPtrDflt(affect=button,button=2); + }; + interpret KP_F4+AnyOfOrNone(all) { + repeat= true; + action= SetPtrDflt(affect=button,button=3); + }; + interpret KP_Subtract+AnyOfOrNone(all) { + repeat= true; + action= SetPtrDflt(affect=button,button=3); + }; + interpret KP_Separator+AnyOfOrNone(all) { + repeat= true; + action= PtrBtn(button=default,count=2); + }; + interpret KP_Add+AnyOfOrNone(all) { + repeat= true; + action= PtrBtn(button=default,count=2); + }; + interpret KP_0+AnyOfOrNone(all) { + repeat= true; + action= LockPtrBtn(button=default,affect=lock); + }; + interpret KP_Insert+AnyOfOrNone(all) { + repeat= true; + action= LockPtrBtn(button=default,affect=lock); + }; + interpret KP_Decimal+AnyOfOrNone(all) { + repeat= true; + action= LockPtrBtn(button=default,affect=unlock); + }; + interpret KP_Delete+AnyOfOrNone(all) { + repeat= true; + action= LockPtrBtn(button=default,affect=unlock); + }; + interpret F25+AnyOfOrNone(all) { + repeat= true; + action= SetPtrDflt(affect=button,button=1); + }; + interpret F26+AnyOfOrNone(all) { + repeat= true; + action= SetPtrDflt(affect=button,button=2); + }; + interpret F27+AnyOfOrNone(all) { + repeat= true; + action= MovePtr(x=-1,y=-1); + }; + interpret F29+AnyOfOrNone(all) { + repeat= true; + action= MovePtr(x=+1,y=-1); + }; + interpret F31+AnyOfOrNone(all) { + repeat= true; + action= PtrBtn(button=default); + }; + interpret F33+AnyOfOrNone(all) { + repeat= true; + action= MovePtr(x=-1,y=+1); + }; + interpret F35+AnyOfOrNone(all) { + repeat= true; + action= MovePtr(x=+1,y=+1); + }; + interpret Pointer_Button_Dflt+AnyOfOrNone(all) { + action= PtrBtn(button=default); + }; + interpret Pointer_Button1+AnyOfOrNone(all) { + action= PtrBtn(button=1); + }; + interpret Pointer_Button2+AnyOfOrNone(all) { + action= PtrBtn(button=2); + }; + interpret Pointer_Button3+AnyOfOrNone(all) { + action= PtrBtn(button=3); + }; + interpret Pointer_DblClick_Dflt+AnyOfOrNone(all) { + action= PtrBtn(button=default,count=2); + }; + interpret Pointer_DblClick1+AnyOfOrNone(all) { + action= PtrBtn(button=1,count=2); + }; + interpret Pointer_DblClick2+AnyOfOrNone(all) { + action= PtrBtn(button=2,count=2); + }; + interpret Pointer_DblClick3+AnyOfOrNone(all) { + action= PtrBtn(button=3,count=2); + }; + interpret Pointer_Drag_Dflt+AnyOfOrNone(all) { + action= LockPtrBtn(button=default,affect=both); + }; + interpret Pointer_Drag1+AnyOfOrNone(all) { + action= LockPtrBtn(button=1,affect=both); + }; + interpret Pointer_Drag2+AnyOfOrNone(all) { + action= LockPtrBtn(button=2,affect=both); + }; + interpret Pointer_Drag3+AnyOfOrNone(all) { + action= LockPtrBtn(button=3,affect=both); + }; + interpret Pointer_EnableKeys+AnyOfOrNone(all) { + action= LockControls(controls=mouseKeys); + }; + interpret Pointer_Accelerate+AnyOfOrNone(all) { + action= LockControls(controls=mouseKeysAccel); + }; + interpret Pointer_DfltBtnNext+AnyOfOrNone(all) { + action= SetPtrDflt(affect=button,button=+1); + }; + interpret Pointer_DfltBtnPrev+AnyOfOrNone(all) { + action= SetPtrDflt(affect=button,button=-1); + }; + interpret AccessX_Enable+AnyOfOrNone(all) { + action= LockControls(controls=accessXKeys); + }; + interpret AccessX_Feedback_Enable+AnyOfOrNone(all) { + action= LockControls(controls=accessXFeedback); + }; + interpret RepeatKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=repeatKeys); + }; + interpret SlowKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=slowKeys); + }; + interpret BounceKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=bounceKeys); + }; + interpret StickyKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=stickyKeys); + }; + interpret MouseKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=mouseKeys); + }; + interpret MouseKeys_Accel_Enable+AnyOfOrNone(all) { + action= LockControls(controls=mouseKeysAccel); + }; + interpret Overlay1_Enable+AnyOfOrNone(all) { + action= LockControls(controls=none); + }; + interpret Overlay2_Enable+AnyOfOrNone(all) { + action= LockControls(controls=none); + }; + interpret AudibleBell_Enable+AnyOfOrNone(all) { + action= LockControls(controls=audibleBell); + }; + interpret Terminate_Server+AnyOfOrNone(all) { + action= Terminate(); + }; + interpret Alt_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Alt,clearLocks); + }; + interpret Alt_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Alt,clearLocks); + }; + interpret Meta_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Meta,clearLocks); + }; + interpret Meta_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Meta,clearLocks); + }; + interpret Super_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Super,clearLocks); + }; + interpret Super_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Super,clearLocks); + }; + interpret Hyper_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Hyper,clearLocks); + }; + interpret Hyper_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Hyper,clearLocks); + }; + interpret Shift_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Shift,clearLocks); + }; + interpret XF86Switch_VT_1+AnyOfOrNone(all) { + repeat= true; + action= SwitchScreen(screen=1,!same); + }; + interpret XF86Switch_VT_2+AnyOfOrNone(all) { + repeat= true; + action= SwitchScreen(screen=2,!same); + }; + interpret XF86Switch_VT_3+AnyOfOrNone(all) { + repeat= true; + action= SwitchScreen(screen=3,!same); + }; + interpret XF86Switch_VT_4+AnyOfOrNone(all) { + repeat= true; + action= SwitchScreen(screen=4,!same); + }; + interpret XF86Switch_VT_5+AnyOfOrNone(all) { + repeat= true; + action= SwitchScreen(screen=5,!same); + }; + interpret XF86Switch_VT_6+AnyOfOrNone(all) { + repeat= true; + action= SwitchScreen(screen=6,!same); + }; + interpret XF86Switch_VT_7+AnyOfOrNone(all) { + repeat= true; + action= SwitchScreen(screen=7,!same); + }; + interpret XF86Switch_VT_8+AnyOfOrNone(all) { + repeat= true; + action= SwitchScreen(screen=8,!same); + }; + interpret XF86Switch_VT_9+AnyOfOrNone(all) { + repeat= true; + action= SwitchScreen(screen=9,!same); + }; + interpret XF86Switch_VT_10+AnyOfOrNone(all) { + repeat= true; + action= SwitchScreen(screen=10,!same); + }; + interpret XF86Switch_VT_11+AnyOfOrNone(all) { + repeat= true; + action= SwitchScreen(screen=11,!same); + }; + interpret XF86Switch_VT_12+AnyOfOrNone(all) { + repeat= true; + action= SwitchScreen(screen=12,!same); + }; + interpret XF86LogGrabInfo+AnyOfOrNone(all) { + repeat= true; + action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x47,data[3]=0x72,data[4]=0x62,data[5]=0x73,data[6]=0x00); + }; + interpret XF86LogWindowTree+AnyOfOrNone(all) { + repeat= true; + action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x57,data[3]=0x69,data[4]=0x6e,data[5]=0x73,data[6]=0x00); + }; + interpret XF86Next_VMode+AnyOfOrNone(all) { + repeat= true; + action= Private(type=0x86,data[0]=0x2b,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00); + }; + interpret XF86Prev_VMode+AnyOfOrNone(all) { + repeat= true; + action= Private(type=0x86,data[0]=0x2d,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00); + }; + interpret ISO_Level5_Shift+AnyOfOrNone(all) { + action= SetMods(modifiers=LevelFive,clearLocks); + }; + interpret ISO_Level5_Latch+AnyOfOrNone(all) { + action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock); + }; + interpret ISO_Level5_Lock+AnyOfOrNone(all) { + action= LockMods(modifiers=LevelFive); + }; + interpret Caps_Lock+AnyOfOrNone(all) { + action= LockMods(modifiers=Lock); + }; + interpret Any+Exactly(Lock) { + action= LockMods(modifiers=Lock); + }; + interpret Any+AnyOf(all) { + action= SetMods(modifiers=modMapMods,clearLocks); + }; + group 2 = AltGr; + group 3 = AltGr; + group 4 = AltGr; + indicator "Caps Lock" { + whichModState= locked; + modifiers= Lock; + }; + indicator "Num Lock" { + whichModState= locked; + modifiers= NumLock; + }; + indicator "Scroll Lock" { + whichModState= locked; + modifiers= ScrollLock; + }; + indicator "Shift Lock" { + whichModState= locked; + modifiers= Shift; + }; + indicator "Group 2" { + groups= 0xfe; + }; + indicator "Mouse Keys" { + controls= mouseKeys; + }; + }; + + xkb_symbols { + name[group1]="English (US)"; + + key { [ Escape ] }; + key { [ 1 ] }; + key { [ 2 ] }; + key { [ 3 ] }; + key { [ 4 ] }; + key { [ 5 ] }; + key { [ 6 ] }; + key { [ 7 ] }; + key { [ 8 ] }; + key { [ 9 ] }; + key { [ 0 ] }; + key { [ minus ] }; + key { [ equal ] }; + key { [ BackSpace ] }; + key { [ Tab ] }; + key { [ q ] }; + key { [ w ] }; + key { [ e ] }; + key { [ r ] }; + key { [ t ] }; + key { [ y ] }; + key { [ u ] }; + key { [ i ] }; + key { [ o ] }; + key { [ p ] }; + key { [ bracketleft ] }; + key { [ bracketright ] }; + key { [ Return ] }; + key { [ Control_L ] }; + key { [ a ] }; + key { [ s ] }; + key { [ d ] }; + key { [ f ] }; + key { [ g ] }; + key { [ h ] }; + key { [ j ] }; + key { [ k ] }; + key { [ l ] }; + key { [ semicolon ] }; + key { [ apostrophe ] }; + key { [ grave ] }; + key { [ Shift_L ] }; + key { [ NoSymbol ] }; + key { [ z ] }; + key { [ x ] }; + key { [ c ] }; + key { [ v ] }; + key { [ b ] }; + key { [ n ] }; + key { [ m ] }; + key { [ comma ] }; + key { [ period ] }; + key { [ slash ] }; + key { [ Shift_R ] }; + key { [ KP_Multiply ] }; + key { [ Alt_L ] }; + key { [ space ] }; + key { [ Caps_Lock ] }; + key { [ F1 ] }; + key { [ F2 ] }; + key { [ F3 ] }; + key { [ F4 ] }; + key { [ F5 ] }; + key { [ F6 ] }; + key { [ F7 ] }; + key { [ F8 ] }; + key { [ F9 ] }; + key { [ F10 ] }; + key { [ Num_Lock ] }; + key { [ Scroll_Lock ] }; + key { [ KP_Home ] }; + key { [ KP_Up ] }; + key { [ KP_Prior ] }; + key { [ KP_Subtract ] }; + key { [ KP_Left ] }; + key { [ KP_Begin ] }; + key { [ KP_Right ] }; + key { [ KP_Add ] }; + key { [ KP_End ] }; + key { [ KP_Down ] }; + key { [ KP_Next ] }; + key { [ KP_Insert ] }; + key { [ KP_Delete ] }; + key { [ ISO_Level3_Shift ] }; + key { [ less ] }; + key { [ F11 ] }; + key { [ F12 ] }; + key { [ Katakana ] }; + key { [ Hiragana ] }; + key { [ Henkan_Mode ] }; + key { [ Hiragana_Katakana ] }; + key { [ Muhenkan ] }; + key { [ KP_Enter ] }; + key { [ Control_R ] }; + key { [ KP_Divide ] }; + key { [ Print ] }; + key { [ Alt_R ] }; + key { [ Linefeed ] }; + key { [ Home ] }; + key { [ Up ] }; + key { [ Prior ] }; + key { [ Left ] }; + key { [ Right ] }; + key { [ End ] }; + key { [ Down ] }; + key { [ Next ] }; + key { [ Insert ] }; + key { [ Delete ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86PowerOff ] }; + key { [ KP_Equal ] }; + key { [ plusminus ] }; + key { [ Pause ] }; + key { [ XF86LaunchA ] }; + key { [ KP_Decimal] }; + key { [ Hangul ] }; + key { [ Hangul_Hanja ] }; + key { [ Super_L ] }; + key { [ Super_R ] }; + key { [ Menu ] }; + key { [ Cancel ] }; + key { [ Redo ] }; + key { [ SunProps ] }; + key { [ Undo ] }; + key { [ SunFront ] }; + key { [ XF86Copy ] }; + key { [ SunOpen ] }; + key { [ XF86Paste ] }; + key { [ Find ] }; + key { [ XF86Cut ] }; + key { [ Help ] }; + key { [ XF86MenuKB ] }; + key { [ XF86Calculator ] }; + key { [ XF86Sleep ] }; + key { [ XF86WakeUp ] }; + key { [ XF86Explorer ] }; + key { [ XF86Send ] }; + key { [ XF86Xfer ] }; + key { [ XF86Launch1 ] }; + key { [ XF86Launch2 ] }; + key { [ XF86WWW ] }; + key { [ XF86DOS ] }; + key { [ XF86ScreenSaver ] }; + key { [ XF86RotateWindows ] }; + key { [ XF86Mail ] }; + key { [ XF86Favorites ] }; + key { [ XF86MyComputer ] }; + key { [ XF86Back ] }; + key { [ XF86Forward ] }; + key { [ XF86Eject ] }; + key { [ XF86Eject ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPlay ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioStop ] }; + key { [ XF86AudioRecord ] }; + key { [ XF86AudioRewind ] }; + key { [ XF86Phone ] }; + key { [ XF86Tools ] }; + key { [ XF86HomePage ] }; + key { [ XF86Reload ] }; + key { [ XF86Close ] }; + key { [ XF86ScrollUp ] }; + key { [ XF86ScrollDown ] }; + key { [ parenleft ] }; + key { [ parenright ] }; + key { [ XF86New ] }; + key { [ Redo ] }; + key { [ XF86Tools ] }; + key { [ XF86Launch5 ] }; + key { [ XF86Launch6 ] }; + key { [ XF86Launch7 ] }; + key { [ XF86Launch8 ] }; + key { [ XF86Launch9 ] }; + key { [ XF86TouchpadToggle ] }; + key { [ XF86TouchpadOn ] }; + key { [ XF86TouchpadOff ] }; + key { [ Mode_switch ] }; + key { [ NoSymbol ] }; + key { [ NoSymbol ] }; + key { [ NoSymbol ] }; + key { [ NoSymbol ] }; + key { [ XF86AudioPlay ] }; + key { [ XF86AudioPause ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Launch4 ] }; + key { [ XF86LaunchB ] }; + key { [ XF86Suspend ] }; + key { [ XF86Close ] }; + key { [ XF86AudioPlay ] }; + key { [ XF86AudioForward ] }; + key { [ Print ] }; + key { [ XF86WebCam ] }; + key { [ XF86Mail ] }; + key { [ XF86Messenger ] }; + key { [ XF86Search ] }; + key { [ XF86Go ] }; + key { [ XF86Finance ] }; + key { [ XF86Game ] }; + key { [ XF86Shop ] }; + key { [ Cancel ] }; + key { [ XF86MonBrightnessDown ] }; + key { [ XF86MonBrightnessUp ] }; + key { [ XF86AudioMedia ] }; + key { [ XF86Display ] }; + key { [ XF86KbdLightOnOff ] }; + key { [ XF86KbdBrightnessDown ] }; + key { [ XF86KbdBrightnessUp ] }; + key { [ XF86Send ] }; + key { [ XF86Reply ] }; + key { [ XF86MailForward ] }; + key { [ XF86Save ] }; + key { [ XF86Documents ] }; + key { [ XF86Battery ] }; + key { [ XF86Bluetooth ] }; + key { [ XF86WLAN ] }; + modifier_map Control { }; + modifier_map Shift { }; + modifier_map Shift { }; + modifier_map Mod1 { }; + modifier_map Lock { }; + modifier_map Mod2 { }; + modifier_map Mod5 { }; + modifier_map Control { }; + modifier_map Mod1 { }; + modifier_map Mod4 { }; + modifier_map Mod4 { }; + modifier_map Mod5 { }; + modifier_map Mod1 { }; + modifier_map Mod4 { }; + modifier_map Mod4 { }; + }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/quartz.xkb b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/quartz.xkb new file mode 100644 index 0000000..92ab623 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/quartz.xkb @@ -0,0 +1,1139 @@ +xkb_keymap { +xkb_keycodes "empty_aliases(qwerty)" { + minimum = 8; + maximum = 255; + virtual indicator 1 = "Caps Lock"; + virtual indicator 2 = "Num Lock"; + virtual indicator 3 = "Shift Lock"; + virtual indicator 4 = "Group 2"; + virtual indicator 5 = "Mouse Keys"; + virtual indicator 6 = "Scroll Lock"; +}; + +xkb_types "complete" { + + virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper; + + type "ONE_LEVEL" { + modifiers= none; + level_name[Level1]= "Any"; + }; + type "TWO_LEVEL" { + modifiers= Shift; + map[Shift]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + }; + type "ALPHABETIC" { + modifiers= Shift+Lock; + map[Shift]= Level2; + map[Lock]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Caps"; + }; + type "KEYPAD" { + modifiers= Shift+NumLock; + map[Shift]= Level2; + map[NumLock]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Number"; + }; + type "SHIFT+ALT" { + modifiers= Shift+Alt; + map[Shift+Alt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift+Alt"; + }; + type "PC_CONTROL_LEVEL2" { + modifiers= Control; + map[Control]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Control"; + }; + type "PC_LCONTROL_LEVEL2" { + modifiers= LControl; + map[LControl]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "LControl"; + }; + type "PC_RCONTROL_LEVEL2" { + modifiers= RControl; + map[RControl]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "RControl"; + }; + type "PC_ALT_LEVEL2" { + modifiers= Alt; + map[Alt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Alt"; + }; + type "PC_LALT_LEVEL2" { + modifiers= LAlt; + map[LAlt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "LAlt"; + }; + type "PC_RALT_LEVEL2" { + modifiers= RAlt; + map[RAlt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "RAlt"; + }; + type "CTRL+ALT" { + modifiers= Control+Alt; + map[Control+Alt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Ctrl+Alt"; + }; + type "LOCAL_EIGHT_LEVEL" { + modifiers= Shift+Lock+Control+LevelThree; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+Lock+LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level4; + map[Control]= Level5; + map[Shift+Lock+Control]= Level5; + map[Shift+Control]= Level6; + map[Lock+Control]= Level6; + map[Control+LevelThree]= Level7; + map[Shift+Lock+Control+LevelThree]= Level7; + map[Shift+Control+LevelThree]= Level8; + map[Lock+Control+LevelThree]= Level8; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Level3"; + level_name[Level4]= "Shift Level3"; + level_name[Level5]= "Ctrl"; + level_name[Level6]= "Shift Ctrl"; + level_name[Level7]= "Level3 Ctrl"; + level_name[Level8]= "Shift Level3 Ctrl"; + }; + type "THREE_LEVEL" { + modifiers= Shift+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Level3"; + }; + type "EIGHT_LEVEL" { + modifiers= Shift+LevelThree+LevelFive; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[LevelFive]= Level5; + map[Shift+LevelFive]= Level6; + map[LevelThree+LevelFive]= Level7; + map[Shift+LevelThree+LevelFive]= Level8; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "X"; + level_name[Level6]= "X Shift"; + level_name[Level7]= "X Alt Base"; + level_name[Level8]= "X Shift Alt"; + }; + type "EIGHT_LEVEL_ALPHABETIC" { + modifiers= Shift+Lock+LevelThree+LevelFive; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level4; + map[Shift+Lock+LevelThree]= Level3; + map[LevelFive]= Level5; + map[Shift+LevelFive]= Level6; + map[Lock+LevelFive]= Level6; + map[LevelThree+LevelFive]= Level7; + map[Shift+LevelThree+LevelFive]= Level8; + map[Lock+LevelThree+LevelFive]= Level8; + map[Shift+Lock+LevelThree+LevelFive]= Level7; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "X"; + level_name[Level6]= "X Shift"; + level_name[Level7]= "X Alt Base"; + level_name[Level8]= "X Shift Alt"; + }; + type "EIGHT_LEVEL_SEMIALPHABETIC" { + modifiers= Shift+Lock+LevelThree+LevelFive; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level3; + preserve[Lock+LevelThree]= Lock; + map[Shift+Lock+LevelThree]= Level4; + preserve[Shift+Lock+LevelThree]= Lock; + map[LevelFive]= Level5; + map[Shift+LevelFive]= Level6; + map[Lock+LevelFive]= Level6; + preserve[Lock+LevelFive]= Lock; + map[LevelThree+LevelFive]= Level7; + map[Shift+LevelThree+LevelFive]= Level8; + map[Lock+LevelThree+LevelFive]= Level7; + preserve[Lock+LevelThree+LevelFive]= Lock; + map[Shift+Lock+LevelThree+LevelFive]= Level8; + preserve[Shift+Lock+LevelThree+LevelFive]= Lock; + map[Shift+Lock+LevelFive]= Level1; + preserve[Shift+Lock+LevelFive]= Lock; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "X"; + level_name[Level6]= "X Shift"; + level_name[Level7]= "X Alt Base"; + level_name[Level8]= "X Shift Alt"; + }; + type "FOUR_LEVEL" { + modifiers= Shift+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_ALPHABETIC" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level4; + map[Shift+Lock+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_SEMIALPHABETIC" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level3; + preserve[Lock+LevelThree]= Lock; + map[Shift+Lock+LevelThree]= Level4; + preserve[Shift+Lock+LevelThree]= Lock; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_MIXED_KEYPAD" { + modifiers= Shift+NumLock+LevelThree; + map[NumLock]= Level2; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[NumLock+LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Shift+NumLock+LevelThree]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Number"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_X" { + modifiers= Shift+Control+Alt+LevelThree; + map[LevelThree]= Level2; + map[Shift+LevelThree]= Level3; + map[Control+Alt]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Alt Base"; + level_name[Level3]= "Shift Alt"; + level_name[Level4]= "Ctrl+Alt"; + }; + type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[Lock]= Level4; + preserve[Lock]= Lock; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level3; + preserve[Lock+LevelThree]= Lock; + map[Shift+Lock+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "AltGr Base"; + level_name[Level4]= "Shift AltGr"; + }; + type "FOUR_LEVEL_PLUS_LOCK" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock]= Level5; + map[Shift+Lock]= Level2; + map[Lock+LevelThree]= Level3; + map[Shift+Lock+LevelThree]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "Lock"; + }; + type "FOUR_LEVEL_KEYPAD" { + modifiers= Shift+NumLock+LevelThree; + map[Shift]= Level2; + map[NumLock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[NumLock+LevelThree]= Level4; + map[Shift+NumLock+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Number"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Alt Number"; + }; +}; + +xkb_compatibility "complete" { + + virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper; + + interpret.useModMapMods= AnyLevel; + interpret.repeat= False; + interpret.locking= False; + interpret ISO_Level2_Latch+Exactly(Shift) { + useModMapMods=level1; + action= LatchMods(modifiers=Shift,clearLocks,latchToLock); + }; + interpret Shift_Lock+AnyOf(Shift+Lock) { + action= LockMods(modifiers=Shift); + }; + interpret Num_Lock+AnyOf(all) { + virtualModifier= NumLock; + action= LockMods(modifiers=NumLock); + }; + interpret ISO_Lock+AnyOf(all) { + action= ISOLock(modifiers=modMapMods,affect=all); + }; + interpret ISO_Level3_Shift+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= SetMods(modifiers=LevelThree,clearLocks); + }; + interpret ISO_Level3_Latch+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock); + }; + interpret ISO_Level3_Lock+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= LockMods(modifiers=LevelThree); + }; + interpret Alt_L+AnyOf(all) { + virtualModifier= Alt; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Alt_R+AnyOf(all) { + virtualModifier= Alt; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Meta_L+AnyOf(all) { + virtualModifier= Meta; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Meta_R+AnyOf(all) { + virtualModifier= Meta; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Super_L+AnyOf(all) { + virtualModifier= Super; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Super_R+AnyOf(all) { + virtualModifier= Super; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Hyper_L+AnyOf(all) { + virtualModifier= Hyper; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Hyper_R+AnyOf(all) { + virtualModifier= Hyper; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Scroll_Lock+AnyOf(all) { + virtualModifier= ScrollLock; + action= LockMods(modifiers=modMapMods); + }; + interpret ISO_Level5_Shift+AnyOf(all) { + virtualModifier= LevelFive; + useModMapMods=level1; + action= SetMods(modifiers=LevelFive,clearLocks); + }; + interpret ISO_Level5_Latch+AnyOf(all) { + virtualModifier= LevelFive; + action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock); + }; + interpret ISO_Level5_Lock+AnyOf(all) { + virtualModifier= LevelFive; + action= LockMods(modifiers=LevelFive); + }; + interpret Mode_switch+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= SetGroup(group=+1); + }; + interpret ISO_Level3_Shift+AnyOfOrNone(all) { + action= SetMods(modifiers=LevelThree,clearLocks); + }; + interpret ISO_Level3_Latch+AnyOfOrNone(all) { + action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock); + }; + interpret ISO_Level3_Lock+AnyOfOrNone(all) { + action= LockMods(modifiers=LevelThree); + }; + interpret ISO_Group_Latch+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LatchGroup(group=2); + }; + interpret ISO_Next_Group+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LockGroup(group=+1); + }; + interpret ISO_Prev_Group+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LockGroup(group=-1); + }; + interpret ISO_First_Group+AnyOfOrNone(all) { + action= LockGroup(group=1); + }; + interpret ISO_Last_Group+AnyOfOrNone(all) { + action= LockGroup(group=2); + }; + interpret KP_1+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+1); + }; + interpret KP_End+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+1); + }; + interpret KP_2+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=+1); + }; + interpret KP_Down+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=+1); + }; + interpret KP_3+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+1); + }; + interpret KP_Next+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+1); + }; + interpret KP_4+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+0); + }; + interpret KP_Left+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+0); + }; + interpret KP_6+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+0); + }; + interpret KP_Right+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+0); + }; + interpret KP_7+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=-1); + }; + interpret KP_Home+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=-1); + }; + interpret KP_8+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=-1); + }; + interpret KP_Up+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=-1); + }; + interpret KP_9+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=-1); + }; + interpret KP_Prior+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=-1); + }; + interpret KP_5+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default); + }; + interpret KP_Begin+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default); + }; + interpret KP_F2+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=1); + }; + interpret KP_Divide+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=1); + }; + interpret KP_F3+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=2); + }; + interpret KP_Multiply+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=2); + }; + interpret KP_F4+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=3); + }; + interpret KP_Subtract+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=3); + }; + interpret KP_Separator+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default,count=2); + }; + interpret KP_Add+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default,count=2); + }; + interpret KP_0+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=lock); + }; + interpret KP_Insert+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=lock); + }; + interpret KP_Decimal+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=unlock); + }; + interpret KP_Delete+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=unlock); + }; + interpret F25+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=1); + }; + interpret F26+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=2); + }; + interpret F27+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=-1); + }; + interpret F29+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=-1); + }; + interpret F31+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default); + }; + interpret F33+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+1); + }; + interpret F35+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+1); + }; + interpret Pointer_Button_Dflt+AnyOfOrNone(all) { + action= PtrBtn(button=default); + }; + interpret Pointer_Button1+AnyOfOrNone(all) { + action= PtrBtn(button=1); + }; + interpret Pointer_Button2+AnyOfOrNone(all) { + action= PtrBtn(button=2); + }; + interpret Pointer_Button3+AnyOfOrNone(all) { + action= PtrBtn(button=3); + }; + interpret Pointer_DblClick_Dflt+AnyOfOrNone(all) { + action= PtrBtn(button=default,count=2); + }; + interpret Pointer_DblClick1+AnyOfOrNone(all) { + action= PtrBtn(button=1,count=2); + }; + interpret Pointer_DblClick2+AnyOfOrNone(all) { + action= PtrBtn(button=2,count=2); + }; + interpret Pointer_DblClick3+AnyOfOrNone(all) { + action= PtrBtn(button=3,count=2); + }; + interpret Pointer_Drag_Dflt+AnyOfOrNone(all) { + action= LockPtrBtn(button=default,affect=both); + }; + interpret Pointer_Drag1+AnyOfOrNone(all) { + action= LockPtrBtn(button=1,affect=both); + }; + interpret Pointer_Drag2+AnyOfOrNone(all) { + action= LockPtrBtn(button=2,affect=both); + }; + interpret Pointer_Drag3+AnyOfOrNone(all) { + action= LockPtrBtn(button=3,affect=both); + }; + interpret Pointer_EnableKeys+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeys); + }; + interpret Pointer_Accelerate+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeysAccel); + }; + interpret Pointer_DfltBtnNext+AnyOfOrNone(all) { + action= SetPtrDflt(affect=button,button=+1); + }; + interpret Pointer_DfltBtnPrev+AnyOfOrNone(all) { + action= SetPtrDflt(affect=button,button=-1); + }; + interpret AccessX_Enable+AnyOfOrNone(all) { + action= LockControls(controls=AccessXKeys); + }; + interpret AccessX_Feedback_Enable+AnyOfOrNone(all) { + action= LockControls(controls=AccessXFeedback); + }; + interpret RepeatKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=RepeatKeys); + }; + interpret SlowKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=SlowKeys); + }; + interpret BounceKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=BounceKeys); + }; + interpret StickyKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=StickyKeys); + }; + interpret MouseKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeys); + }; + interpret MouseKeys_Accel_Enable+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeysAccel); + }; + interpret Overlay1_Enable+AnyOfOrNone(all) { + action= LockControls(controls=Overlay1); + }; + interpret Overlay2_Enable+AnyOfOrNone(all) { + action= LockControls(controls=Overlay2); + }; + interpret AudibleBell_Enable+AnyOfOrNone(all) { + action= LockControls(controls=AudibleBell); + }; + interpret Terminate_Server+AnyOfOrNone(all) { + action= Terminate(); + }; + interpret Alt_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Alt,clearLocks); + }; + interpret Alt_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Alt,clearLocks); + }; + interpret Meta_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Meta,clearLocks); + }; + interpret Meta_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Meta,clearLocks); + }; + interpret Super_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Super,clearLocks); + }; + interpret Super_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Super,clearLocks); + }; + interpret Hyper_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Hyper,clearLocks); + }; + interpret Hyper_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Hyper,clearLocks); + }; + interpret XF86Switch_VT_1+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=1,!same); + }; + interpret XF86Switch_VT_2+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=2,!same); + }; + interpret XF86Switch_VT_3+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=3,!same); + }; + interpret XF86Switch_VT_4+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=4,!same); + }; + interpret XF86Switch_VT_5+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=5,!same); + }; + interpret XF86Switch_VT_6+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=6,!same); + }; + interpret XF86Switch_VT_7+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=7,!same); + }; + interpret XF86Switch_VT_8+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=8,!same); + }; + interpret XF86Switch_VT_9+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=9,!same); + }; + interpret XF86Switch_VT_10+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=10,!same); + }; + interpret XF86Switch_VT_11+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=11,!same); + }; + interpret XF86Switch_VT_12+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=12,!same); + }; + interpret XF86Ungrab+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x55,data[1]=0x6e,data[2]=0x67,data[3]=0x72,data[4]=0x61,data[5]=0x62,data[6]=0x00); + }; + interpret XF86ClearGrab+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x43,data[1]=0x6c,data[2]=0x73,data[3]=0x47,data[4]=0x72,data[5]=0x62,data[6]=0x00); + }; + interpret XF86Next_VMode+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x2b,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00); + }; + interpret XF86Prev_VMode+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x2d,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00); + }; + interpret ISO_Level5_Shift+AnyOfOrNone(all) { + action= SetMods(modifiers=LevelFive,clearLocks); + }; + interpret ISO_Level5_Latch+AnyOfOrNone(all) { + action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock); + }; + interpret ISO_Level5_Lock+AnyOfOrNone(all) { + action= LockMods(modifiers=LevelFive); + }; + interpret Any+Exactly(Lock) { + action= LockMods(modifiers=Lock); + }; + interpret Any+AnyOf(all) { + action= SetMods(modifiers=modMapMods,clearLocks); + }; + group 2 = AltGr; + group 3 = AltGr; + group 4 = AltGr; + indicator "Caps Lock" { + !allowExplicit; + whichModState= locked; + modifiers= Lock; + }; + indicator "Num Lock" { + !allowExplicit; + whichModState= locked; + modifiers= NumLock; + }; + indicator "Shift Lock" { + !allowExplicit; + whichModState= locked; + modifiers= Shift; + }; + indicator "Group 2" { + !allowExplicit; + groups= 0xfe; + }; + indicator "Mouse Keys" { + indicatorDrivesKeyboard; + controls= mouseKeys; + }; + indicator "Scroll Lock" { + whichModState= locked; + modifiers= ScrollLock; + }; +}; + +xkb_symbols "unknown" { + + key <> { + type= "ALPHABETIC", + symbols[Group1]= [ a, A ], + symbols[Group2]= [ aring, Aring ] + }; + modifier_map Mod2 { <> }; +}; + +xkb_geometry "pc(pc104)" { + + width= 470; + height= 180; + + baseColor= "white"; + labelColor= "black"; + xfont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1"; + description= "Generic 104"; + + shape "NORM" { + corner= 1, + { [ 18, 18 ] }, + { [ 2, 1 ], [ 16, 16 ] } + }; + shape "BKSP" { + corner= 1, + { [ 38, 18 ] }, + { [ 2, 1 ], [ 36, 16 ] } + }; + shape "TABK" { + corner= 1, + { [ 28, 18 ] }, + { [ 2, 1 ], [ 26, 16 ] } + }; + shape "BKSL" { + corner= 1, + { [ 28, 18 ] }, + { [ 2, 1 ], [ 26, 16 ] } + }; + shape "RTRN" { + corner= 1, + { [ 42, 18 ] }, + { [ 2, 1 ], [ 40, 16 ] } + }; + shape "CAPS" { + corner= 1, + { [ 33, 18 ] }, + { [ 2, 1 ], [ 31, 16 ] } + }; + shape "LFSH" { + corner= 1, + { [ 42, 18 ] }, + { [ 2, 1 ], [ 40, 16 ] } + }; + shape "RTSH" { + corner= 1, + { [ 52, 18 ] }, + { [ 2, 1 ], [ 50, 16 ] } + }; + shape "MODK" { + corner= 1, + { [ 27, 18 ] }, + { [ 2, 1 ], [ 25, 16 ] } + }; + shape "SMOD" { + corner= 1, + { [ 23, 18 ] }, + { [ 2, 1 ], [ 21, 16 ] } + }; + shape "SPCE" { + corner= 1, + { [ 113, 18 ] }, + { [ 2, 1 ], [ 111, 16 ] } + }; + shape "KP0" { + corner= 1, + { [ 37, 18 ] }, + { [ 2, 1 ], [ 35, 16 ] } + }; + shape "KPAD" { + corner= 1, + { [ 18, 37 ] }, + { [ 2, 1 ], [ 16, 35 ] } + }; + shape "LEDS" { { [ 75, 20 ] } }; + shape "LED" { { [ 5, 1 ] } }; + section "Function" { + key.color= "grey20"; + priority= 7; + top= 22; + left= 19; + width= 351; + height= 19; + row { + top= 1; + left= 1; + keys { + { , "NORM", 1 }, + { , "NORM", 20, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 11, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 11, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 8, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" } + }; + }; + }; // End of "Function" section + + section "Alpha" { + key.color= "white"; + priority= 8; + top= 61; + left= 19; + width= 287; + height= 95; + row { + top= 1; + left= 1; + keys { + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, + { , "BKSP", 1, color="grey20" } + }; + }; + row { + top= 20; + left= 1; + keys { + { , "TABK", 1, color="grey20" }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "BKSL", 1 } + }; + }; + row { + top= 39; + left= 1; + keys { + { , "CAPS", 1, color="grey20" }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, + { , "RTRN", 1, color="grey20" } + }; + }; + row { + top= 58; + left= 1; + keys { + { , "LFSH", 1, color="grey20" }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "RTSH", 1, color="grey20" } + }; + }; + row { + top= 77; + left= 1; + keys { + { , "MODK", 1, color="grey20" }, + { , "SMOD", 1, color="grey20" }, + { , "SMOD", 1, color="grey20" }, + { , "SPCE", 1 }, + { , "SMOD", 1, color="grey20" }, + { , "SMOD", 1, color="grey20" }, + { , "SMOD", 1, color="grey20" }, + { , "SMOD", 1, color="grey20" } + }; + }; + }; // End of "Alpha" section + + section "Editing" { + key.color= "grey20"; + priority= 9; + top= 61; + left= 312; + width= 58; + height= 95; + row { + top= 1; + left= 1; + keys { + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 } + }; + }; + row { + top= 20; + left= 1; + keys { + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 } + }; + }; + row { + top= 58; + left= 20; + keys { + { , "NORM", 1 } + }; + }; + row { + top= 77; + left= 1; + keys { + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 } + }; + }; + }; // End of "Editing" section + + section "Keypad" { + key.color= "grey20"; + priority= 10; + top= 61; + left= 376; + width= 77; + height= 95; + row { + top= 1; + left= 1; + keys { + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 } + }; + }; + row { + top= 20; + left= 1; + keys { + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "KPAD", 1 } + }; + }; + row { + top= 39; + left= 1; + keys { + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" } + }; + }; + row { + top= 58; + left= 1; + keys { + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "KPAD", 1 } + }; + }; + row { + top= 77; + left= 1; + keys { + { , "KP0", 1, color="white" }, + { , "NORM", 1, color="white" } + }; + }; + }; // End of "Keypad" section + + solid "LedPanel" { + top= 22; + left= 377; + priority= 0; + color= "grey10"; + shape= "LEDS"; + }; + indicator "Num Lock" { + top= 37; + left= 382; + priority= 1; + onColor= "green"; + offColor= "green30"; + shape= "LED"; + }; + indicator "Caps Lock" { + top= 37; + left= 407; + priority= 2; + onColor= "green"; + offColor= "green30"; + shape= "LED"; + }; + indicator "Scroll Lock" { + top= 37; + left= 433; + priority= 3; + onColor= "green"; + offColor= "green30"; + shape= "LED"; + }; + text "NumLockLabel" { + top= 25; + left= 378; + priority= 4; + width= 19.8; + height= 10; + XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1"; + text= "Num\nLock"; + }; + text "CapsLockLabel" { + top= 25; + left= 403; + priority= 5; + width= 26.4; + height= 10; + XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1"; + text= "Caps\nLock"; + }; + text "ScrollLockLabel" { + top= 25; + left= 428; + priority= 6; + width= 39.6; + height= 10; + XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1"; + text= "Scroll\nLock"; + }; +}; + +}; \ No newline at end of file diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/stringcomp.data b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/stringcomp.data new file mode 100644 index 0000000..b9639c0 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/stringcomp.data @@ -0,0 +1,1913 @@ +xkb_keymap { +xkb_keycodes "evdev_aliases(qwerty)" { + minimum = 8; + maximum = 255; + = 9; + = 10; + = 11; + = 12; + = 13; + = 14; + = 15; + = 16; + = 17; + = 18; + = 19; + = 20; + = 21; + = 22; + = 23; + = 24; + = 25; + = 26; + = 27; + = 28; + = 29; + = 30; + = 31; + = 32; + = 33; + = 34; + = 35; + = 36; + = 37; + = 38; + = 39; + = 40; + = 41; + = 42; + = 43; + = 44; + = 45; + = 46; + = 47; + = 48; + = 49; + = 50; + = 51; + = 52; + = 53; + = 54; + = 55; + = 56; + = 57; + = 58; + = 59; + = 60; + = 61; + = 62; + = 63; + = 64; + = 65; + = 66; + = 67; + = 68; + = 69; + = 70; + = 71; + = 72; + = 73; + = 74; + = 75; + = 76; + = 77; + = 78; + = 79; + = 80; + = 81; + = 82; + = 83; + = 84; + = 85; + = 86; + = 87; + = 88; + = 89; + = 90; + = 91; + = 92; + = 94; + = 95; + = 96; + = 97; + = 98; + = 99; + = 100; + = 101; + = 102; + = 103; + = 104; + = 105; + = 106; + = 107; + = 108; + = 109; + = 110; + = 111; + = 112; + = 113; + = 114; + = 115; + = 116; + = 117; + = 118; + = 119; + = 120; + = 121; + = 122; + = 123; + = 124; + = 125; + = 126; + = 127; + = 128; + = 129; + = 130; + = 131; + = 132; + = 133; + = 134; + = 135; + = 136; + = 137; + = 138; + = 139; + = 140; + = 141; + = 142; + = 143; + = 144; + = 145; + = 146; + = 147; + = 148; + = 149; + = 150; + = 151; + = 152; + = 153; + = 154; + = 155; + = 156; + = 157; + = 158; + = 159; + = 160; + = 161; + = 162; + = 163; + = 164; + = 165; + = 166; + = 167; + = 168; + = 169; + = 170; + = 171; + = 172; + = 173; + = 174; + = 175; + = 176; + = 177; + = 178; + = 179; + = 180; + = 181; + = 182; + = 183; + = 184; + = 185; + = 186; + = 187; + = 188; + = 189; + = 190; + = 191; + = 192; + = 193; + = 194; + = 195; + = 196; + = 197; + = 198; + = 199; + = 200; + = 201; + = 202; + = 203; + = 204; + = 205; + = 206; + = 207; + = 208; + = 209; + = 210; + = 211; + = 212; + = 213; + = 214; + = 215; + = 216; + = 217; + = 218; + = 219; + = 220; + = 221; + = 222; + = 223; + = 224; + = 225; + = 226; + = 227; + = 228; + = 229; + = 230; + = 231; + = 232; + = 233; + = 234; + = 235; + = 236; + = 237; + = 238; + = 239; + = 240; + = 241; + = 242; + = 243; + = 244; + = 245; + = 246; + = 247; + = 248; + = 249; + = 250; + = 251; + = 252; + = 253; + indicator 1 = "Caps Lock"; + indicator 2 = "Num Lock"; + indicator 3 = "Scroll Lock"; + indicator 4 = "Compose"; + indicator 5 = "Kana"; + indicator 6 = "Sleep"; + indicator 7 = "Suspend"; + indicator 8 = "Mute"; + indicator 9 = "Misc"; + indicator 10 = "Mail"; + indicator 11 = "Charging"; + indicator 12 = "Shift Lock"; + indicator 13 = "Group 2"; + indicator 14 = "Mouse Keys"; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; +}; + +xkb_types "complete" { + virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper; + + type "ONE_LEVEL" { + modifiers= none; + level_name[Level1]= "Any"; + }; + type "TWO_LEVEL" { + modifiers= Shift; + map[Shift]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + }; + type "ALPHABETIC" { + modifiers= Shift+Lock; + map[Shift]= Level2; + map[Lock]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Caps"; + }; + type "SHIFT+ALT" { + modifiers= Shift+Alt; + map[Shift+Alt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift+Alt"; + }; + type "PC_CONTROL_LEVEL2" { + modifiers= Control; + map[Control]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Control"; + }; + type "PC_LCONTROL_LEVEL2" { + modifiers= LControl; + map[LControl]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "LControl"; + }; + type "PC_RCONTROL_LEVEL2" { + modifiers= RControl; + map[RControl]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "RControl"; + }; + type "PC_ALT_LEVEL2" { + modifiers= Alt; + map[Alt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Alt"; + }; + type "PC_LALT_LEVEL2" { + modifiers= LAlt; + map[LAlt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "LAlt"; + }; + type "PC_RALT_LEVEL2" { + modifiers= RAlt; + map[RAlt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "RAlt"; + }; + type "CTRL+ALT" { + modifiers= Shift+Control+Alt+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Control+Alt]= Level5; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "Ctrl+Alt"; + }; + type "LOCAL_EIGHT_LEVEL" { + modifiers= Shift+Lock+Control+LevelThree; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+Lock+LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level4; + map[Control]= Level5; + map[Shift+Lock+Control]= Level5; + map[Shift+Control]= Level6; + map[Lock+Control]= Level6; + map[Control+LevelThree]= Level7; + map[Shift+Lock+Control+LevelThree]= Level7; + map[Shift+Control+LevelThree]= Level8; + map[Lock+Control+LevelThree]= Level8; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Level3"; + level_name[Level4]= "Shift Level3"; + level_name[Level5]= "Ctrl"; + level_name[Level6]= "Shift Ctrl"; + level_name[Level7]= "Level3 Ctrl"; + level_name[Level8]= "Shift Level3 Ctrl"; + }; + type "THREE_LEVEL" { + modifiers= Shift+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Level3"; + }; + type "EIGHT_LEVEL" { + modifiers= Shift+LevelThree+LevelFive; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[LevelFive]= Level5; + map[Shift+LevelFive]= Level6; + map[LevelThree+LevelFive]= Level7; + map[Shift+LevelThree+LevelFive]= Level8; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "X"; + level_name[Level6]= "X Shift"; + level_name[Level7]= "X Alt Base"; + level_name[Level8]= "X Shift Alt"; + }; + type "EIGHT_LEVEL_ALPHABETIC" { + modifiers= Shift+Lock+LevelThree+LevelFive; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level4; + map[Shift+Lock+LevelThree]= Level3; + map[LevelFive]= Level5; + map[Shift+LevelFive]= Level6; + map[Lock+LevelFive]= Level6; + map[LevelThree+LevelFive]= Level7; + map[Shift+LevelThree+LevelFive]= Level8; + map[Lock+LevelThree+LevelFive]= Level8; + map[Shift+Lock+LevelThree+LevelFive]= Level7; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "X"; + level_name[Level6]= "X Shift"; + level_name[Level7]= "X Alt Base"; + level_name[Level8]= "X Shift Alt"; + }; + type "EIGHT_LEVEL_SEMIALPHABETIC" { + modifiers= Shift+Lock+LevelThree+LevelFive; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level3; + preserve[Lock+LevelThree]= Lock; + map[Shift+Lock+LevelThree]= Level4; + preserve[Shift+Lock+LevelThree]= Lock; + map[LevelFive]= Level5; + map[Shift+LevelFive]= Level6; + map[Lock+LevelFive]= Level6; + preserve[Lock+LevelFive]= Lock; + map[LevelThree+LevelFive]= Level7; + map[Shift+LevelThree+LevelFive]= Level8; + map[Lock+LevelThree+LevelFive]= Level7; + preserve[Lock+LevelThree+LevelFive]= Lock; + map[Shift+Lock+LevelThree+LevelFive]= Level8; + preserve[Shift+Lock+LevelThree+LevelFive]= Lock; + map[Shift+Lock+LevelFive]= Level1; + preserve[Shift+Lock+LevelFive]= Lock; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "X"; + level_name[Level6]= "X Shift"; + level_name[Level7]= "X Alt Base"; + level_name[Level8]= "X Shift Alt"; + }; + type "FOUR_LEVEL" { + modifiers= Shift+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_ALPHABETIC" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level4; + map[Shift+Lock+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_SEMIALPHABETIC" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level3; + preserve[Lock+LevelThree]= Lock; + map[Shift+Lock+LevelThree]= Level4; + preserve[Shift+Lock+LevelThree]= Lock; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_MIXED_KEYPAD" { + modifiers= Shift+NumLock+LevelThree; + map[NumLock]= Level2; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[NumLock+LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Shift+NumLock+LevelThree]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Number"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_X" { + modifiers= Shift+Control+Alt+LevelThree; + map[LevelThree]= Level2; + map[Shift+LevelThree]= Level3; + map[Control+Alt]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Alt Base"; + level_name[Level3]= "Shift Alt"; + level_name[Level4]= "Ctrl+Alt"; + }; + type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[Lock]= Level4; + preserve[Lock]= Lock; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level3; + preserve[Lock+LevelThree]= Lock; + map[Shift+Lock+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "AltGr Base"; + level_name[Level4]= "Shift AltGr"; + }; + type "FOUR_LEVEL_PLUS_LOCK" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock]= Level5; + map[Shift+Lock]= Level2; + map[Lock+LevelThree]= Level3; + map[Shift+Lock+LevelThree]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "Lock"; + }; + type "KEYPAD" { + modifiers= Shift+NumLock; + map[Shift]= Level2; + map[NumLock]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Number"; + }; + type "FOUR_LEVEL_KEYPAD" { + modifiers= Shift+NumLock+LevelThree; + map[Shift]= Level2; + map[NumLock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[NumLock+LevelThree]= Level4; + map[Shift+NumLock+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Number"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Alt Number"; + }; +}; + +xkb_compatibility "complete_caps(caps_lock)_4_misc(assign_shift_left_action)_4_level5(level5_lock)_4" { + virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper; + + interpret.useModMapMods= AnyLevel; + interpret.repeat= False; + interpret ISO_Level2_Latch+Exactly(Shift) { + useModMapMods=level1; + action= LatchMods(modifiers=Shift,clearLocks,latchToLock); + }; + interpret Shift_Lock+AnyOf(Shift+Lock) { + action= LockMods(modifiers=Shift); + }; + interpret Num_Lock+AnyOf(all) { + virtualModifier= NumLock; + action= LockMods(modifiers=NumLock); + }; + interpret ISO_Lock+AnyOf(all) { + action= NoAction(); + }; + interpret ISO_Level3_Shift+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= SetMods(modifiers=LevelThree,clearLocks); + }; + interpret ISO_Level3_Latch+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock); + }; + interpret ISO_Level3_Lock+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= LockMods(modifiers=LevelThree); + }; + interpret Alt_L+AnyOf(all) { + virtualModifier= Alt; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Alt_R+AnyOf(all) { + virtualModifier= Alt; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Meta_L+AnyOf(all) { + virtualModifier= Meta; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Meta_R+AnyOf(all) { + virtualModifier= Meta; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Super_L+AnyOf(all) { + virtualModifier= Super; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Super_R+AnyOf(all) { + virtualModifier= Super; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Hyper_L+AnyOf(all) { + virtualModifier= Hyper; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Hyper_R+AnyOf(all) { + virtualModifier= Hyper; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Scroll_Lock+AnyOf(all) { + virtualModifier= ScrollLock; + action= LockMods(modifiers=modMapMods); + }; + interpret ISO_Level5_Shift+AnyOf(all) { + virtualModifier= LevelFive; + useModMapMods=level1; + action= SetMods(modifiers=LevelFive,clearLocks); + }; + interpret ISO_Level5_Latch+AnyOf(all) { + virtualModifier= LevelFive; + action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock); + }; + interpret ISO_Level5_Lock+AnyOf(all) { + virtualModifier= LevelFive; + action= LockMods(modifiers=LevelFive); + }; + interpret Mode_switch+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= SetGroup(group=+1); + }; + interpret ISO_Level3_Shift+AnyOfOrNone(all) { + action= SetMods(modifiers=LevelThree,clearLocks); + }; + interpret ISO_Level3_Latch+AnyOfOrNone(all) { + action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock); + }; + interpret ISO_Level3_Lock+AnyOfOrNone(all) { + action= LockMods(modifiers=LevelThree); + }; + interpret ISO_Group_Latch+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LatchGroup(group=2); + }; + interpret ISO_Next_Group+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LockGroup(group=+1); + }; + interpret ISO_Prev_Group+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LockGroup(group=-1); + }; + interpret ISO_First_Group+AnyOfOrNone(all) { + action= LockGroup(group=1); + }; + interpret ISO_Last_Group+AnyOfOrNone(all) { + action= LockGroup(group=2); + }; + interpret KP_1+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+1); + }; + interpret KP_End+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+1); + }; + interpret KP_2+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=+1); + }; + interpret KP_Down+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=+1); + }; + interpret KP_3+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+1); + }; + interpret KP_Next+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+1); + }; + interpret KP_4+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+0); + }; + interpret KP_Left+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+0); + }; + interpret KP_6+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+0); + }; + interpret KP_Right+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+0); + }; + interpret KP_7+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=-1); + }; + interpret KP_Home+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=-1); + }; + interpret KP_8+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=-1); + }; + interpret KP_Up+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=-1); + }; + interpret KP_9+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=-1); + }; + interpret KP_Prior+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=-1); + }; + interpret KP_5+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default); + }; + interpret KP_Begin+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default); + }; + interpret KP_F2+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=1); + }; + interpret KP_Divide+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=1); + }; + interpret KP_F3+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=2); + }; + interpret KP_Multiply+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=2); + }; + interpret KP_F4+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=3); + }; + interpret KP_Subtract+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=3); + }; + interpret KP_Separator+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default,count=2); + }; + interpret KP_Add+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default,count=2); + }; + interpret KP_0+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=lock); + }; + interpret KP_Insert+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=lock); + }; + interpret KP_Decimal+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=unlock); + }; + interpret KP_Delete+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=unlock); + }; + interpret F25+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=1); + }; + interpret F26+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=2); + }; + interpret F27+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=-1); + }; + interpret F29+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=-1); + }; + interpret F31+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default); + }; + interpret F33+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+1); + }; + interpret F35+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+1); + }; + interpret Pointer_Button_Dflt+AnyOfOrNone(all) { + action= PtrBtn(button=default); + }; + interpret Pointer_Button1+AnyOfOrNone(all) { + action= PtrBtn(button=1); + }; + interpret Pointer_Button2+AnyOfOrNone(all) { + action= PtrBtn(button=2); + }; + interpret Pointer_Button3+AnyOfOrNone(all) { + action= PtrBtn(button=3); + }; + interpret Pointer_DblClick_Dflt+AnyOfOrNone(all) { + action= PtrBtn(button=default,count=2); + }; + interpret Pointer_DblClick1+AnyOfOrNone(all) { + action= PtrBtn(button=1,count=2); + }; + interpret Pointer_DblClick2+AnyOfOrNone(all) { + action= PtrBtn(button=2,count=2); + }; + interpret Pointer_DblClick3+AnyOfOrNone(all) { + action= PtrBtn(button=3,count=2); + }; + interpret Pointer_Drag_Dflt+AnyOfOrNone(all) { + action= LockPtrBtn(button=default); + }; + interpret Pointer_Drag1+AnyOfOrNone(all) { + action= LockPtrBtn(button=1); + }; + interpret Pointer_Drag2+AnyOfOrNone(all) { + action= LockPtrBtn(button=2); + }; + interpret Pointer_Drag3+AnyOfOrNone(all) { + action= LockPtrBtn(button=3); + }; + interpret Pointer_EnableKeys+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeys); + }; + interpret Pointer_Accelerate+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeysAccel); + }; + interpret Pointer_DfltBtnNext+AnyOfOrNone(all) { + action= SetPtrDflt(affect=button,button=+1); + }; + interpret Pointer_DfltBtnPrev+AnyOfOrNone(all) { + action= SetPtrDflt(affect=button,button=-1); + }; + interpret AccessX_Enable+AnyOfOrNone(all) { + action= LockControls(controls=AccessXKeys); + }; + interpret AccessX_Feedback_Enable+AnyOfOrNone(all) { + action= LockControls(controls=AccessXFeedback); + }; + interpret RepeatKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=RepeatKeys); + }; + interpret SlowKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=SlowKeys); + }; + interpret BounceKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=BounceKeys); + }; + interpret StickyKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=StickyKeys); + }; + interpret MouseKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeys); + }; + interpret MouseKeys_Accel_Enable+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeysAccel); + }; + interpret Overlay1_Enable+AnyOfOrNone(all) { + action= LockControls(controls=none); + }; + interpret Overlay2_Enable+AnyOfOrNone(all) { + action= LockControls(controls=none); + }; + interpret AudibleBell_Enable+AnyOfOrNone(all) { + action= LockControls(controls=AudibleBell); + }; + interpret Terminate_Server+AnyOfOrNone(all) { + action= Terminate(); + }; + interpret Alt_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Alt,clearLocks); + }; + interpret Alt_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Alt,clearLocks); + }; + interpret Meta_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Meta,clearLocks); + }; + interpret Meta_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Meta,clearLocks); + }; + interpret Super_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Super,clearLocks); + }; + interpret Super_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Super,clearLocks); + }; + interpret Hyper_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Hyper,clearLocks); + }; + interpret Hyper_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Hyper,clearLocks); + }; + interpret Shift_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Shift); + }; + interpret XF86Switch_VT_1+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=1,!same); + }; + interpret XF86Switch_VT_2+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=2,!same); + }; + interpret XF86Switch_VT_3+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=3,!same); + }; + interpret XF86Switch_VT_4+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=4,!same); + }; + interpret XF86Switch_VT_5+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=5,!same); + }; + interpret XF86Switch_VT_6+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=6,!same); + }; + interpret XF86Switch_VT_7+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=7,!same); + }; + interpret XF86Switch_VT_8+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=8,!same); + }; + interpret XF86Switch_VT_9+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=9,!same); + }; + interpret XF86Switch_VT_10+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=10,!same); + }; + interpret XF86Switch_VT_11+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=11,!same); + }; + interpret XF86Switch_VT_12+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=12,!same); + }; + interpret XF86LogGrabInfo+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x47,data[3]=0x72,data[4]=0x62,data[5]=0x73,data[6]=0x00); + }; + interpret XF86LogWindowTree+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x57,data[3]=0x69,data[4]=0x6e,data[5]=0x73,data[6]=0x00); + }; + interpret XF86Next_VMode+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x2b,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00); + }; + interpret XF86Prev_VMode+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x2d,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00); + }; + interpret ISO_Level5_Shift+AnyOfOrNone(all) { + action= SetMods(modifiers=LevelFive,clearLocks); + }; + interpret ISO_Level5_Latch+AnyOfOrNone(all) { + action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock); + }; + interpret ISO_Level5_Lock+AnyOfOrNone(all) { + action= LockMods(modifiers=NumLock); + }; + interpret Caps_Lock+AnyOfOrNone(all) { + action= LockMods(modifiers=Lock); + }; + interpret Any+Exactly(Lock) { + action= LockMods(modifiers=Lock); + }; + interpret Any+AnyOf(all) { + action= SetMods(modifiers=modMapMods,clearLocks); + }; + indicator "Caps Lock" { + whichModState= locked; + modifiers= Lock; + }; + indicator "Num Lock" { + whichModState= locked; + modifiers= NumLock; + }; + indicator "Scroll Lock" { + whichModState= locked; + modifiers= ScrollLock; + }; + indicator "Shift Lock" { + whichModState= locked; + modifiers= Shift; + }; + indicator "Group 2" { + groups= 0xfe; + }; + indicator "Mouse Keys" { + controls= MouseKeys; + }; +}; + +xkb_symbols "pc_us_ru_2_ca(multix)_3_de(neo)_4_inet(evdev)" { + name[group1]="English (US)"; + name[group2]="Russian"; + name[group3]="Canadian Multilingual"; + name[group4]="German (Neo 2)"; + + key { [ Escape ] }; + key { + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ 1, exclam ], + symbols[Group2]= [ 1, exclam ], + symbols[Group3]= [ 1, exclam, plusminus, NoSymbol, onesuperior, exclamdown, NoSymbol, NoSymbol ], + symbols[Group4]= [ 1, degree, onesuperior, onesubscript, ordfeminine, NoSymbol, notsign, NoSymbol ] + }; + key { + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ 2, at ], + symbols[Group2]= [ 2, quotedbl ], + symbols[Group3]= [ 2, at, at, NoSymbol, twosuperior, NoSymbol, NoSymbol, NoSymbol ], + symbols[Group4]= [ 2, section, twosuperior, twosubscript, masculine, NoSymbol, logicalor, NoSymbol ] + }; + key { + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ 3, numbersign ], + symbols[Group2]= [ 3, numerosign ], + symbols[Group3]= [ 3, numbersign, sterling, NoSymbol, threesuperior, sterling, NoSymbol, NoSymbol ], + symbols[Group4]= [ 3, U2113, threesuperior, threesubscript, numerosign, NoSymbol, logicaland, NoSymbol ] + }; + key { + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ 4, dollar ], + symbols[Group2]= [ 4, semicolon ], + symbols[Group3]= [ 4, dollar, cent, NoSymbol, onequarter, currency, NoSymbol, NoSymbol ], + symbols[Group4]= [ 4, guillemotright, U203A, femalesymbol, NoSymbol, NoSymbol, U22A5, NoSymbol ] + }; + key { + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ 5, percent ], + symbols[Group2]= [ 5, percent ], + symbols[Group3]= [ 5, percent, currency, NoSymbol, onehalf, threeeighths, NoSymbol, NoSymbol ], + symbols[Group4]= [ 5, guillemotleft, U2039, malesymbol, periodcentered, NoSymbol, U2221, NoSymbol ] + }; + key { + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ { H, E, L, L, O }, asciicircum ], + symbols[Group2]= [ 6, colon ], + symbols[Group3]= [ 6, question, notsign, NoSymbol, threequarters, fiveeighths, NoSymbol, NoSymbol ], + symbols[Group4]= [ 6, dollar, cent, U26A5, sterling, NoSymbol, U2225, NoSymbol ] + }; + key { + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ { Y, E, S, space, T, H, I, S, space, I, S, space, D, O, G }, ampersand ], + symbols[Group2]= [ 7, question ], + symbols[Group3]= [ 7, ampersand, braceleft, NoSymbol, NoSymbol, seveneighths, NoSymbol, NoSymbol ], + symbols[Group4]= [ 7, EuroSign, yen, U03F0, currency, NoSymbol, rightarrow, NoSymbol ] + }; + key { + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ 8, asterisk ], + symbols[Group2]= [ 8, asterisk ], + symbols[Group3]= [ 8, asterisk, braceright, NoSymbol, NoSymbol, trademark, NoSymbol, NoSymbol ], + symbols[Group4]= [ 8, doublelowquotemark, singlelowquotemark, U27E8, Tab, ISO_Left_Tab, U221E, NoSymbol ] + }; + key { + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ 9, parenleft ], + symbols[Group2]= [ 9, parenleft ], + symbols[Group3]= [ 9, parenleft, bracketleft, NoSymbol, NoSymbol, plusminus, NoSymbol, NoSymbol ], + symbols[Group4]= [ 9, leftdoublequotemark, leftsinglequotemark, U27E9, KP_Divide, KP_Divide, variation, NoSymbol ] + }; + key { + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ 0, parenright ], + symbols[Group2]= [ 0, parenright ], + symbols[Group3]= [ 0, parenright, bracketright, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol ], + symbols[Group4]= [ 0, rightdoublequotemark, rightsinglequotemark, zerosubscript, KP_Multiply, KP_Multiply, emptyset, NoSymbol ] + }; + key { + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ minus, underscore ], + symbols[Group2]= [ minus, underscore ], + symbols[Group3]= [ minus, underscore, onehalf, NoSymbol, NoSymbol, questiondown, NoSymbol, NoSymbol ], + symbols[Group4]= [ minus, emdash, NoSymbol, U2011, KP_Subtract, KP_Subtract, hyphen, NoSymbol ] + }; + key { + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ equal, plus ], + symbols[Group2]= [ equal, plus ], + symbols[Group3]= [ equal, plus, notsign, NoSymbol, dead_cedilla, dead_ogonek, NoSymbol, NoSymbol ], + symbols[Group4]= [ dead_grave, dead_cedilla, dead_abovering, dead_abovereversedcomma, dead_diaeresis, NoSymbol, dead_macron, NoSymbol ] + }; + key { [ BackSpace, BackSpace ] }; + key { + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ Tab, ISO_Left_Tab ], + symbols[Group2]= [ Tab, ISO_Left_Tab ], + symbols[Group3]= [ Tab, ISO_Left_Tab ], + symbols[Group4]= [ Tab, ISO_Left_Tab, Multi_key, ISO_Level5_Lock, NoSymbol, NoSymbol, NoSymbol, ISO_Level5_Lock ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ q, Q ], + symbols[Group2]= [ Cyrillic_shorti, Cyrillic_SHORTI ], + symbols[Group3]= [ q, Q, NoSymbol, NoSymbol, NoSymbol, Greek_OMEGA, NoSymbol, NoSymbol ], + symbols[Group4]= [ x, X, ellipsis, Greek_xi, Prior, Prior, Greek_XI, NoSymbol ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ w, W ], + symbols[Group2]= [ Cyrillic_tse, Cyrillic_TSE ], + symbols[Group3]= [ w, W, NoSymbol, NoSymbol, lstroke, Lstroke, NoSymbol, NoSymbol ], + symbols[Group4]= [ v, V, underscore, NoSymbol, BackSpace, BackSpace, radical, NoSymbol ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ e, E ], + symbols[Group2]= [ Cyrillic_u, Cyrillic_U ], + symbols[Group3]= [ e, E, NoSymbol, NoSymbol, oe, OE, NoSymbol, NoSymbol ], + symbols[Group4]= [ l, L, bracketleft, Greek_lamda, Up, Up, Greek_LAMDA, NoSymbol ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ r, R ], + symbols[Group2]= [ Cyrillic_ka, Cyrillic_KA ], + symbols[Group3]= [ r, R, NoSymbol, NoSymbol, paragraph, registered, NoSymbol, NoSymbol ], + symbols[Group4]= [ c, C, bracketright, Greek_chi, Delete, Delete, U2102, NoSymbol ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ t, T ], + symbols[Group2]= [ Cyrillic_ie, Cyrillic_IE ], + symbols[Group3]= [ t, T, NoSymbol, NoSymbol, tslash, Tslash, NoSymbol, NoSymbol ], + symbols[Group4]= [ w, W, asciicircum, Greek_omega, Next, Next, Greek_OMEGA, NoSymbol ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ y, Y ], + symbols[Group2]= [ Cyrillic_en, Cyrillic_EN ], + symbols[Group3]= [ y, Y, NoSymbol, NoSymbol, leftarrow, yen, NoSymbol, NoSymbol ], + symbols[Group4]= [ k, K, exclam, Greek_kappa, exclamdown, NoSymbol, multiply, NoSymbol ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ u, U ], + symbols[Group2]= [ Cyrillic_ghe, Cyrillic_GHE ], + symbols[Group3]= [ u, U, NoSymbol, NoSymbol, downarrow, uparrow, NoSymbol, NoSymbol ], + symbols[Group4]= [ h, H, less, Greek_psi, KP_7, KP_7, Greek_PSI, NoSymbol ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ i, I ], + symbols[Group2]= [ Cyrillic_sha, Cyrillic_SHA ], + symbols[Group3]= [ i, I, NoSymbol, NoSymbol, rightarrow, idotless, NoSymbol, NoSymbol ], + symbols[Group4]= [ g, G, greater, Greek_gamma, KP_8, KP_8, Greek_GAMMA, NoSymbol ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ o, O ], + symbols[Group2]= [ Cyrillic_shcha, Cyrillic_SHCHA ], + symbols[Group3]= [ o, O, section, NoSymbol, oslash, Oslash, NoSymbol, NoSymbol ], + symbols[Group4]= [ f, F, equal, Greek_phi, KP_9, KP_9, Greek_PHI, NoSymbol ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ p, P ], + symbols[Group2]= [ Cyrillic_ze, Cyrillic_ZE ], + symbols[Group3]= [ p, P, paragraph, NoSymbol, thorn, THORN, NoSymbol, NoSymbol ], + symbols[Group4]= [ q, Q, ampersand, U03D5, KP_Add, KP_Add, U211A, NoSymbol ] + }; + key { + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ bracketleft, braceleft ], + symbols[Group2]= [ Cyrillic_ha, Cyrillic_HA ], + symbols[Group3]= [ dead_circumflex, dead_diaeresis, dead_grave, NoSymbol, NoSymbol, dead_abovering, NoSymbol, NoSymbol ], + symbols[Group4]= [ ssharp, U1E9E, U017F, Greek_finalsmallsigma, U2212, NoSymbol, jot, NoSymbol ] + }; + key { + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ bracketright, braceright ], + symbols[Group2]= [ Cyrillic_hardsign, Cyrillic_HARDSIGN ], + symbols[Group3]= [ ccedilla, Ccedilla, asciitilde, NoSymbol, dead_tilde, dead_macron, NoSymbol, NoSymbol ], + symbols[Group4]= [ dead_acute, dead_tilde, dead_stroke, dead_abovecomma, dead_doubleacute, NoSymbol, dead_breve, NoSymbol ] + }; + key { [ Return ] }; + key { [ Control_L ] }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ a, A ], + symbols[Group2]= [ Cyrillic_ef, Cyrillic_EF ], + symbols[Group3]= [ a, A, NoSymbol, NoSymbol, ae, AE, NoSymbol, NoSymbol ], + symbols[Group4]= [ u, U, backslash, NoSymbol, Home, Home, includedin, NoSymbol ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ s, S ], + symbols[Group2]= [ Cyrillic_yeru, Cyrillic_YERU ], + symbols[Group3]= [ s, S, NoSymbol, NoSymbol, ssharp, section, NoSymbol, NoSymbol ], + symbols[Group4]= [ i, I, slash, Greek_iota, Left, Left, integral, NoSymbol ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ d, D ], + symbols[Group2]= [ Cyrillic_ve, Cyrillic_VE ], + symbols[Group3]= [ d, D, NoSymbol, NoSymbol, eth, ETH, NoSymbol, NoSymbol ], + symbols[Group4]= [ a, A, braceleft, Greek_alpha, Down, Down, U2200, NoSymbol ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ f, F ], + symbols[Group2]= [ Cyrillic_a, Cyrillic_A ], + symbols[Group3]= [ f, F, NoSymbol, NoSymbol, NoSymbol, ordfeminine, NoSymbol, NoSymbol ], + symbols[Group4]= [ e, E, braceright, Greek_epsilon, Right, Right, U2203, NoSymbol ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ g, G ], + symbols[Group2]= [ Cyrillic_pe, Cyrillic_PE ], + symbols[Group3]= [ g, G, NoSymbol, NoSymbol, eng, ENG, NoSymbol, NoSymbol ], + symbols[Group4]= [ o, O, asterisk, Greek_omicron, End, End, elementof, NoSymbol ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ h, H ], + symbols[Group2]= [ Cyrillic_er, Cyrillic_ER ], + symbols[Group3]= [ h, H, NoSymbol, NoSymbol, hstroke, Hstroke, NoSymbol, NoSymbol ], + symbols[Group4]= [ s, S, question, Greek_sigma, questiondown, NoSymbol, Greek_SIGMA, NoSymbol ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ j, J ], + symbols[Group2]= [ Cyrillic_o, Cyrillic_O ], + symbols[Group3]= [ j, J, NoSymbol, NoSymbol, U0133, U0132, NoSymbol, NoSymbol ], + symbols[Group4]= [ n, N, parenleft, Greek_nu, KP_4, KP_4, U2115, NoSymbol ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ k, K ], + symbols[Group2]= [ Cyrillic_el, Cyrillic_EL ], + symbols[Group3]= [ k, K, NoSymbol, NoSymbol, kra, NoSymbol, NoSymbol, NoSymbol ], + symbols[Group4]= [ r, R, parenright, Greek_rho, KP_5, KP_5, U211D, NoSymbol ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ l, L ], + symbols[Group2]= [ Cyrillic_de, Cyrillic_DE ], + symbols[Group3]= [ l, L, NoSymbol, NoSymbol, U0140, U013F, NoSymbol, NoSymbol ], + symbols[Group4]= [ t, T, minus, Greek_tau, KP_6, KP_6, partialderivative, NoSymbol ] + }; + key { + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ semicolon, colon ], + symbols[Group2]= [ Cyrillic_zhe, Cyrillic_ZHE ], + symbols[Group3]= [ semicolon, colon, degree, NoSymbol, dead_acute, dead_doubleacute, NoSymbol, NoSymbol ], + symbols[Group4]= [ d, D, colon, Greek_delta, KP_Separator, comma, Greek_DELTA, NoSymbol ] + }; + key { + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ apostrophe, quotedbl ], + symbols[Group2]= [ Cyrillic_e, Cyrillic_E ], + symbols[Group3]= [ egrave, Egrave, braceleft, NoSymbol, NoSymbol, dead_caron, NoSymbol, NoSymbol ], + symbols[Group4]= [ y, Y, at, Greek_upsilon, period, KP_Decimal, nabla, NoSymbol ] + }; + key { + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ grave, asciitilde ], + symbols[Group2]= [ Cyrillic_io, Cyrillic_IO ], + symbols[Group3]= [ slash, backslash, bar, NoSymbol, NoSymbol, hyphen, NoSymbol, NoSymbol ], + symbols[Group4]= [ dead_circumflex, dead_caron, U21BB, U02DE, dead_abovedot, Pointer_EnableKeys, dead_belowdot, NoSymbol ] + }; + key { + type[group4]= "TWO_LEVEL", + symbols[Group1]= [ Shift_L ], + symbols[Group2]= [ Shift_L ], + symbols[Group3]= [ Shift_L ], + symbols[Group4]= [ Shift_L, Caps_Lock ] + }; + key { + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "ONE_LEVEL", + symbols[Group1]= [ backslash, bar ], + symbols[Group2]= [ backslash, slash ], + symbols[Group3]= [ agrave, Agrave, braceright, NoSymbol, NoSymbol, dead_breve, NoSymbol, NoSymbol ], + symbols[Group4]= [ ISO_Level3_Shift ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "FOUR_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ z, Z ], + symbols[Group2]= [ Cyrillic_ya, Cyrillic_YA ], + symbols[Group3]= [ z, Z, guillemotleft, NoSymbol ], + symbols[Group4]= [ udiaeresis, Udiaeresis, numbersign, NoSymbol, Escape, Escape, union, NoSymbol ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "FOUR_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ x, X ], + symbols[Group2]= [ Cyrillic_che, Cyrillic_CHE ], + symbols[Group3]= [ x, X, guillemotright, NoSymbol ], + symbols[Group4]= [ odiaeresis, Odiaeresis, dollar, U03F5, Tab, Tab, intersection, NoSymbol ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ c, C ], + symbols[Group2]= [ Cyrillic_es, Cyrillic_ES ], + symbols[Group3]= [ c, C, NoSymbol, NoSymbol, cent, copyright, NoSymbol, NoSymbol ], + symbols[Group4]= [ adiaeresis, Adiaeresis, bar, Greek_eta, Insert, Insert, U2135, NoSymbol ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ v, V ], + symbols[Group2]= [ Cyrillic_em, Cyrillic_EM ], + symbols[Group3]= [ v, V, NoSymbol, NoSymbol, leftdoublequotemark, leftsinglequotemark, NoSymbol, NoSymbol ], + symbols[Group4]= [ p, P, asciitilde, Greek_pi, Return, Return, Greek_PI, NoSymbol ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ b, B ], + symbols[Group2]= [ Cyrillic_i, Cyrillic_I ], + symbols[Group3]= [ b, B, NoSymbol, NoSymbol, rightdoublequotemark, rightsinglequotemark, NoSymbol, NoSymbol ], + symbols[Group4]= [ z, Z, grave, Greek_zeta, Undo, Undo, U2124, NoSymbol ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ n, N ], + symbols[Group2]= [ Cyrillic_te, Cyrillic_TE ], + symbols[Group3]= [ n, N, NoSymbol, NoSymbol, U0149, U266A, NoSymbol, NoSymbol ], + symbols[Group4]= [ b, B, plus, Greek_beta, colon, NoSymbol, U21D0, NoSymbol ] + }; + key { + type[group1]= "ALPHABETIC", + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ m, M ], + symbols[Group2]= [ Cyrillic_softsign, Cyrillic_SOFTSIGN ], + symbols[Group3]= [ m, M, mu, NoSymbol, mu, masculine, NoSymbol, NoSymbol ], + symbols[Group4]= [ m, M, percent, Greek_mu, KP_1, KP_1, ifonlyif, NoSymbol ] + }; + key { + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ comma, less ], + symbols[Group2]= [ Cyrillic_be, Cyrillic_BE ], + symbols[Group3]= [ comma, apostrophe, less, NoSymbol, Greek_horizbar, multiply, NoSymbol, NoSymbol ], + symbols[Group4]= [ comma, endash, quotedbl, U03F1, KP_2, KP_2, U21D2, NoSymbol ] + }; + key { + type[group2]= "ALPHABETIC", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ period, greater ], + symbols[Group2]= [ Cyrillic_yu, Cyrillic_YU ], + symbols[Group3]= [ period, quotedbl, greater, NoSymbol, periodcentered, division, NoSymbol, NoSymbol ], + symbols[Group4]= [ period, enfilledcircbullet, apostrophe, U03D1, KP_3, KP_3, U21A6, NoSymbol ] + }; + key { + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ slash, question ], + symbols[Group2]= [ period, comma ], + symbols[Group3]= [ eacute, Eacute, dead_acute, NoSymbol, NoSymbol, dead_abovedot, NoSymbol, NoSymbol ], + symbols[Group4]= [ j, J, semicolon, Greek_theta, semicolon, NoSymbol, Greek_THETA, NoSymbol ] + }; + key { + type[group4]= "TWO_LEVEL", + symbols[Group1]= [ Shift_R ], + symbols[Group2]= [ Shift_R ], + symbols[Group3]= [ Shift_R ], + symbols[Group4]= [ Shift_R, Caps_Lock ] + }; + key { + type[group1]= "CTRL+ALT", + type[group2]= "CTRL+ALT", + type[group3]= "CTRL+ALT", + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86ClearGrab ], + symbols[Group2]= [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86ClearGrab ], + symbols[Group3]= [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86ClearGrab ], + symbols[Group4]= [ KP_Multiply, KP_Multiply, U2219, U2299, multiply, NoSymbol, U2297, NoSymbol ] + }; + key { [ Alt_L, Meta_L ] }; + key { + type[group3]= "FOUR_LEVEL", + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ space ], + symbols[Group2]= [ space ], + symbols[Group3]= [ space, space, nobreakspace, NoSymbol ], + symbols[Group4]= [ space, space, space, nobreakspace, KP_0, KP_0, U202F, NoSymbol ] + }; + key { + type= "ONE_LEVEL", + symbols[Group1]= [ Caps_Lock ], + symbols[Group2]= [ Caps_Lock ], + symbols[Group3]= [ Caps_Lock ], + symbols[Group4]= [ ISO_Level3_Shift ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F1, F1, F1, F1, XF86Switch_VT_1 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F2, F2, F2, F2, XF86Switch_VT_2 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F3, F3, F3, F3, XF86Switch_VT_3 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F4, F4, F4, F4, XF86Switch_VT_4 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F5, F5, F5, F5, XF86Switch_VT_5 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F6, F6, F6, F6, XF86Switch_VT_6 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F7, F7, F7, F7, XF86Switch_VT_7 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F8, F8, F8, F8, XF86Switch_VT_8 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F9, F9, F9, F9, XF86Switch_VT_9 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F10, F10, F10, F10, XF86Switch_VT_10 ] + }; + key { + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ Num_Lock ], + symbols[Group2]= [ Num_Lock ], + symbols[Group3]= [ Num_Lock ], + symbols[Group4]= [ Tab, ISO_Left_Tab, equal, approxeq, notequal, Pointer_EnableKeys, identical, NoSymbol ] + }; + key { [ Scroll_Lock ] }; + key { + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ KP_Home, KP_7 ], + symbols[Group2]= [ KP_Home, KP_7 ], + symbols[Group3]= [ KP_Home, KP_7 ], + symbols[Group4]= [ KP_7, U2714, U2195, U226A, KP_Home, KP_Home, upstile, NoSymbol ] + }; + key { + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ KP_Up, KP_8 ], + symbols[Group2]= [ KP_Up, KP_8 ], + symbols[Group3]= [ KP_Up, KP_8 ], + symbols[Group4]= [ KP_8, U2718, uparrow, intersection, KP_Up, KP_Up, U22C2, NoSymbol ] + }; + key { + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ KP_Prior, KP_9 ], + symbols[Group2]= [ KP_Prior, KP_9 ], + symbols[Group3]= [ KP_Prior, KP_9 ], + symbols[Group4]= [ KP_9, dagger, U20D7, U226B, KP_Prior, KP_Prior, U2309, NoSymbol ] + }; + key { + type[group1]= "CTRL+ALT", + type[group2]= "CTRL+ALT", + type[group3]= "CTRL+ALT", + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86Prev_VMode ], + symbols[Group2]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86Prev_VMode ], + symbols[Group3]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86Prev_VMode ], + symbols[Group4]= [ KP_Subtract, KP_Subtract, U2212, U2296, U2216, NoSymbol, U2238, NoSymbol ] + }; + key { + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ KP_Left, KP_4 ], + symbols[Group2]= [ KP_Left, KP_4 ], + symbols[Group3]= [ KP_Left, KP_4 ], + symbols[Group4]= [ KP_4, club, leftarrow, includedin, KP_Left, KP_Left, U2286, NoSymbol ] + }; + key { + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ KP_Begin, KP_5 ], + symbols[Group2]= [ KP_Begin, KP_5 ], + symbols[Group3]= [ KP_Begin, KP_5 ], + symbols[Group4]= [ KP_5, EuroSign, colon, U22B6, KP_Begin, KP_Begin, U22B7, NoSymbol ] + }; + key { + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ KP_Right, KP_6 ], + symbols[Group2]= [ KP_Right, KP_6 ], + symbols[Group3]= [ KP_Right, KP_6 ], + symbols[Group4]= [ KP_6, U2023, rightarrow, includes, KP_Right, KP_Right, U2287, NoSymbol ] + }; + key { + type[group1]= "CTRL+ALT", + type[group2]= "CTRL+ALT", + type[group3]= "CTRL+ALT", + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ KP_Add, KP_Add, KP_Add, KP_Add, XF86Next_VMode ], + symbols[Group2]= [ KP_Add, KP_Add, KP_Add, KP_Add, XF86Next_VMode ], + symbols[Group3]= [ KP_Add, KP_Add, KP_Add, KP_Add, XF86Next_VMode ], + symbols[Group4]= [ KP_Add, KP_Add, plusminus, U2295, U2213, NoSymbol, U2214, NoSymbol ] + }; + key { + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ KP_End, KP_1 ], + symbols[Group2]= [ KP_End, KP_1 ], + symbols[Group3]= [ KP_End, KP_1 ], + symbols[Group4]= [ KP_1, diamond, U2194, lessthanequal, KP_End, KP_End, downstile, NoSymbol ] + }; + key { + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ KP_Down, KP_2 ], + symbols[Group2]= [ KP_Down, KP_2 ], + symbols[Group3]= [ KP_Down, KP_2 ], + symbols[Group4]= [ KP_2, heart, downarrow, union, KP_Down, KP_Down, U22C3, NoSymbol ] + }; + key { + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ KP_Next, KP_3 ], + symbols[Group2]= [ KP_Next, KP_3 ], + symbols[Group3]= [ KP_Next, KP_3 ], + symbols[Group4]= [ KP_3, U2660, U21CC, greaterthanequal, KP_Next, KP_Next, U230B, NoSymbol ] + }; + key { + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ KP_Insert, KP_0 ], + symbols[Group2]= [ KP_Insert, KP_0 ], + symbols[Group3]= [ KP_Insert, KP_0 ], + symbols[Group4]= [ KP_0, U2423, percent, U2030, KP_Insert, KP_Insert, U25A1, NoSymbol ] + }; + key { + type[group2]= "KEYPAD", + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ KP_Delete, KP_Decimal ], + symbols[Group2]= [ KP_Delete, KP_Separator ], + symbols[Group3]= [ KP_Delete, KP_Decimal ], + symbols[Group4]= [ KP_Separator, period, comma, minutes, KP_Delete, KP_Delete, seconds, NoSymbol ] + }; + key { [ ISO_Level3_Shift ] }; + key { + type[group1]= "FOUR_LEVEL", + type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC", + type[group4]= "ONE_LEVEL", + symbols[Group1]= [ less, greater, bar, brokenbar ], + symbols[Group2]= [ slash, bar ], + symbols[Group3]= [ ugrave, Ugrave, degree, NoSymbol, NoSymbol, brokenbar, NoSymbol, NoSymbol ], + symbols[Group4]= [ ISO_Level5_Shift ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F11, F11, F11, F11, XF86Switch_VT_11 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F12, F12, F12, F12, XF86Switch_VT_12 ] + }; + key { [ Katakana ] }; + key { [ Hiragana ] }; + key { [ Henkan_Mode ] }; + key { [ Hiragana_Katakana ] }; + key { [ Muhenkan ] }; + key { + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ KP_Enter ], + symbols[Group2]= [ KP_Enter ], + symbols[Group3]= [ KP_Enter ], + symbols[Group4]= [ KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, NoSymbol ] + }; + key { + type= "ONE_LEVEL", + symbols[Group1]= [ Control_R ], + symbols[Group2]= [ Control_R ], + symbols[Group3]= [ ISO_Level5_Shift ] + }; + key { + type[group1]= "CTRL+ALT", + type[group2]= "CTRL+ALT", + type[group3]= "CTRL+ALT", + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86Ungrab ], + symbols[Group2]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86Ungrab ], + symbols[Group3]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86Ungrab ], + symbols[Group4]= [ KP_Divide, KP_Divide, division, U2300, U2215, NoSymbol, U2223, NoSymbol ] + }; + key { + type= "PC_ALT_LEVEL2", + symbols[Group1]= [ Print, Sys_Req ] + }; + key { + type[group1]= "TWO_LEVEL", + type[group2]= "TWO_LEVEL", + type[group3]= "ONE_LEVEL", + type[group4]= "ONE_LEVEL", + symbols[Group1]= [ Alt_R, Meta_R ], + symbols[Group2]= [ Alt_R, Meta_R ], + symbols[Group3]= [ ISO_Level3_Shift ], + symbols[Group4]= [ ISO_Level5_Shift ] + }; + key { [ Linefeed ] }; + key { [ Home ] }; + key { [ Up ] }; + key { [ Prior ] }; + key { [ Left ] }; + key { [ Right ] }; + key { [ End ] }; + key { [ Down ] }; + key { [ Next ] }; + key { [ Insert ] }; + key { [ Delete ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86PowerOff ] }; + key { + type[group4]= "EIGHT_LEVEL", + symbols[Group1]= [ KP_Equal ], + symbols[Group2]= [ KP_Equal ], + symbols[Group3]= [ KP_Equal ], + symbols[Group4]= [ KP_Equal, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol ] + }; + key { [ plusminus ] }; + key { + type= "PC_CONTROL_LEVEL2", + symbols[Group1]= [ Pause, Break ] + }; + key { [ XF86LaunchA ] }; + key { [ KP_Decimal, KP_Decimal ] }; + key { [ Hangul ] }; + key { [ Hangul_Hanja ] }; + key { [ Super_L ] }; + key { [ Super_R ] }; + key { [ Menu ] }; + key { [ Cancel ] }; + key { [ Redo ] }; + key { [ SunProps ] }; + key { [ Undo ] }; + key { [ SunFront ] }; + key { [ XF86Copy ] }; + key { [ SunOpen ] }; + key { [ XF86Paste ] }; + key { [ Find ] }; + key { [ XF86Cut ] }; + key { [ Help ] }; + key { [ XF86MenuKB ] }; + key { [ XF86Calculator ] }; + key { [ XF86Sleep ] }; + key { [ XF86WakeUp ] }; + key { [ XF86Explorer ] }; + key { [ XF86Send ] }; + key { [ XF86Xfer ] }; + key { [ XF86Launch1 ] }; + key { [ XF86Launch2 ] }; + key { [ XF86WWW ] }; + key { [ XF86DOS ] }; + key { [ XF86ScreenSaver ] }; + key { [ XF86RotateWindows ] }; + key { [ XF86Mail ] }; + key { [ XF86Favorites ] }; + key { [ XF86MyComputer ] }; + key { [ XF86Back ] }; + key { [ XF86Forward ] }; + key { [ XF86Eject ] }; + key { [ XF86Eject, XF86Eject ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioStop, XF86Eject ] }; + key { [ XF86AudioRecord ] }; + key { [ XF86AudioRewind ] }; + key { [ XF86Phone ] }; + key { [ XF86Tools ] }; + key { [ XF86HomePage ] }; + key { [ XF86Reload ] }; + key { [ XF86Close ] }; + key { [ XF86ScrollUp ] }; + key { [ XF86ScrollDown ] }; + key { [ parenleft ] }; + key { [ parenright ] }; + key { [ XF86New ] }; + key { [ Redo ] }; + key { [ XF86Tools ] }; + key { [ XF86Launch5 ] }; + key { [ XF86Launch6 ] }; + key { [ XF86Launch7 ] }; + key { [ XF86Launch8 ] }; + key { [ XF86Launch9 ] }; + key { [ XF86TouchpadToggle ] }; + key { [ XF86TouchpadOn ] }; + key { [ XF86TouchpadOff ] }; + key { [ Mode_switch ] }; + key { [ NoSymbol, Alt_L ] }; + key { [ NoSymbol, Meta_L ] }; + key { [ NoSymbol, Super_L ] }; + key { [ NoSymbol, Hyper_L ] }; + key { [ XF86AudioPlay ] }; + key { [ XF86AudioPause ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Launch4 ] }; + key { [ XF86LaunchB ] }; + key { [ XF86Suspend ] }; + key { [ XF86Close ] }; + key { [ XF86AudioPlay ] }; + key { [ XF86AudioForward ] }; + key { [ Print ] }; + key { [ XF86WebCam ] }; + key { [ XF86Mail ] }; + key { [ XF86Messenger ] }; + key { [ XF86Search ] }; + key { [ XF86Go ] }; + key { [ XF86Finance ] }; + key { [ XF86Game ] }; + key { [ XF86Shop ] }; + key { [ Cancel ] }; + key { [ XF86MonBrightnessDown ] }; + key { [ XF86MonBrightnessUp ] }; + key { [ XF86AudioMedia ] }; + key { [ XF86Display ] }; + key { [ XF86KbdLightOnOff ] }; + key { [ XF86KbdBrightnessDown ] }; + key { [ XF86KbdBrightnessUp ] }; + key { [ XF86Send ] }; + key { [ XF86Reply ] }; + key { [ XF86MailForward ] }; + key { [ XF86Save ] }; + key { [ XF86Documents ] }; + key { [ XF86Battery ] }; + key { [ XF86Bluetooth ] }; + key { [ XF86WLAN ] }; + modifier_map Shift { , }; + modifier_map Lock { }; + modifier_map Control { }; + modifier_map Mod1 { , , }; + modifier_map Mod2 { }; + modifier_map Mod3 { }; + modifier_map Mod4 { , , , }; + modifier_map Mod5 { , }; +}; + +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/syntax-error.xkb b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/syntax-error.xkb new file mode 100644 index 0000000..6c1cb38 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/syntax-error.xkb @@ -0,0 +1,1814 @@ +xkb_keymap { +xkb_keycodes "evdev+aliases(qwerty)" { + minimum = 8; + maximum = 255; + = 9; + = 10; + = 11; + = 12; + = 13; + = 14; + = 15; + = 16; + = 17; + = 18; + = 19; + = 20; + = 21; + = 22; + = 23; + = 24; + = 25; + = 26; + = 27; + = 28; + = 29; + = 30; + = 31; + = 32; + = 33; + = 34; + = 35; + = 36; + = 37; + = 38; + = 39; + = 40; + = 41; + = 42; + = 43; + = 44; + = 45; + = 46; + = 47; + = 48; + = 49; + = 50; + = 51; + = 52; + = 53; + = 54; + = 55; + = 56; + = 57; + = 58; + = 59; + = 60; + = 61; + = 62; + = 63; + = 64; + = 65; + = 66; + = 67; + = 68; + = 69; + = 70; + = 71; + = 72; + = 73; + = 74; + = 75; + = 76; + = 77; + = 78; + = 79; + = 80; + = 81; + = 82; + = 83; + = 84; + = 85; + = 86; + = 87; + = 88; + = 89; + = 90; + = 91; + = 92; + = 94; + = 95; + = 96; + = 97; + = 98; + = 99; + = 100; + = 101; + = 102; + = 103; + = 104; + = 105; + = 106; + = 107; + = 108; + = 109; + = 110; + = 111; + = 112; + = 113; + = 114; + = 115; + = 116; + = 117; + = 118; + = 119; + = 120; + = 121; + = 122; + = 123; + = 124; + = 125; + = 126; + = 127; + = 128; + = 129; + = 130; + = 131; + = 132; + = 133; + = 134; + = 135; + = 136; + = 137; + = 138; + = 139; + = 140; + = 141; + = 142; + = 143; + = 144; + = 145; + = 146; + = 147; + = 148; + = 149; + = 150; + = 151; + = 152; + = 153; + = 154; + = 155; + = 156; + = 157; + = 158; + = 159; + = 160; + = 161; + = 162; + = 163; + = 164; + = 165; + = 166; + = 167; + = 168; + = 169; + = 170; + = 171; + = 172; + = 173; + = 174; + = 175; + = 176; + = 177; + = 178; + = 179; + = 180; + = 181; + = 182; + = 183; + = 184; + = 185; + = 186; + = 187; + = 188; + = 189; + = 190; + = 191; + = 192; + = 193; + = 194; + = 195; + = 196; + = 197; + = 198; + = 199; + = 200; + = 201; + = 202; + = 203; + = 204; + = 205; + = 206; + = 207; + = 208; + = 209; + = 210; + = 211; + = 212; + = 213; + = 214; + = 215; + = 216; + = 217; + = 218; + = 219; + = 220; + = 221; + = 222; + = 223; + = 224; + = 225; + = 226; + = 227; + = 228; + = 229; + = 230; + = 231; + = 232; + = 233; + = 234; + = 235; + = 236; + = 237; + = 238; + = 239; + = 240; + = 241; + = 242; + = 243; + = 244; + = 245; + = 246; + = 247; + = 248; + = 249; + = 250; + = 251; + = 252; + = 253; + indicator 1 = "Caps Lock"; + indicator 2 = "Num Lock"; + indicator 3 = "Scroll Lock"; + indicator 4 = "Compose"; + indicator 5 = "Kana"; + indicator 6 = "Sleep"; + indicator 7 = "Suspend"; + indicator 8 = "Mute"; + indicator 9 = "Misc"; + indicator 10 = "Mail"; + indicator 11 = "Charging"; + virtual indicator 12 = "Shift Lock"; + virtual indicator 13 = "Group 2"; + virtual indicator 14 = "Mouse Keys"; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; +}; + +xkb_types "complete" { + + virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper; + + type "ONE_LEVEL" { + modifiers= none; + level_name[Level1]= "Any"; + }; + type "TWO_LEVEL" { + modifiers= Shift; + map[Shift]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + }; + type "ALPHABETIC" { + modifiers= Shift+Lock; + map[Shift]= Level2; + map[Lock]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Caps"; + }; + type "KEYPAD" { + modifiers= Shift+NumLock; + map[Shift]= Level2; + map[NumLock]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Number"; + }; + type "SHIFT+ALT" { + modifiers= Shift+Alt; + map[Shift+Alt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift+Alt"; + }; + type "PC_CONTROL_LEVEL2" { + modifiers= Control; + map[Control]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Control"; + }; + type "PC_LCONTROL_LEVEL2" { + modifiers= LControl; + map[LControl]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "LControl"; + }; + type "PC_RCONTROL_LEVEL2" { + modifiers= RControl; + map[RControl]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "RControl"; + }; + type "PC_ALT_LEVEL2" { + modifiers= Alt; + map[Alt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Alt"; + }; + type "PC_LALT_LEVEL2" { + modifiers= LAlt; + map[LAlt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "LAlt"; + }; + type "PC_RALT_LEVEL2" { + modifiers= RAlt; + map[RAlt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "RAlt"; + }; + type "CTRL+ALT" { + modifiers= Shift+Control+Alt+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Control+Alt]= Level5; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "Ctrl+Alt"; + }; + type "LOCAL_EIGHT_LEVEL" { + modifiers= Shift+Lock+Control+LevelThree; + map[Shift+Lock]= Level1; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+Lock+LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level4; + map[Control]= Level5; + map[Shift+Lock+Control]= Level5; + map[Shift+Control]= Level6; + map[Lock+Control]= Level6; + map[Control+LevelThree]= Level7; + map[Shift+Lock+Control+LevelThree]= Level7; + map[Shift+Control+LevelThree]= Level8; + map[Lock+Control+LevelThree]= Level8; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Level3"; + level_name[Level4]= "Shift Level3"; + level_name[Level5]= "Ctrl"; + level_name[Level6]= "Shift Ctrl"; + level_name[Level7]= "Level3 Ctrl"; + level_name[Level8]= "Shift Level3 Ctrl"; + }; + type "THREE_LEVEL" { + modifiers= Shift+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Level3"; + }; + type "EIGHT_LEVEL" { + modifiers= Shift+LevelThree+LevelFive; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[LevelFive]= Level5; + map[Shift+LevelFive]= Level6; + map[LevelThree+LevelFive]= Level7; + map[Shift+LevelThree+LevelFive]= Level8; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "X"; + level_name[Level6]= "X Shift"; + level_name[Level7]= "X Alt Base"; + level_name[Level8]= "X Shift Alt"; + }; + type "EIGHT_LEVEL_ALPHABETIC" { + modifiers= Shift+Lock+LevelThree+LevelFive; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level4; + map[Shift+Lock+LevelThree]= Level3; + map[LevelFive]= Level5; + map[Shift+LevelFive]= Level6; + map[Lock+LevelFive]= Level6; + map[LevelThree+LevelFive]= Level7; + map[Shift+LevelThree+LevelFive]= Level8; + map[Lock+LevelThree+LevelFive]= Level8; + map[Shift+Lock+LevelThree+LevelFive]= Level7; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "X"; + level_name[Level6]= "X Shift"; + level_name[Level7]= "X Alt Base"; + level_name[Level8]= "X Shift Alt"; + }; + type "EIGHT_LEVEL_SEMIALPHABETIC" { + modifiers= Shift+Lock+LevelThree+LevelFive; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level3; + preserve[Lock+LevelThree]= Lock; + map[Shift+Lock+LevelThree]= Level4; + preserve[Shift+Lock+LevelThree]= Lock; + map[LevelFive]= Level5; + map[Shift+LevelFive]= Level6; + map[Lock+LevelFive]= Level6; + preserve[Lock+LevelFive]= Lock; + map[LevelThree+LevelFive]= Level7; + map[Shift+LevelThree+LevelFive]= Level8; + map[Lock+LevelThree+LevelFive]= Level7; + preserve[Lock+LevelThree+LevelFive]= Lock; + map[Shift+Lock+LevelThree+LevelFive]= Level8; + preserve[Shift+Lock+LevelThree+LevelFive]= Lock; + map[Shift+Lock+LevelFive]= Level1; + preserve[Shift+Lock+LevelFive]= Lock; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "X"; + level_name[Level6]= "X Shift"; + level_name[Level7]= "X Alt Base"; + level_name[Level8]= "X Shift Alt"; + }; + type "FOUR_LEVEL" { + modifiers= Shift+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_ALPHABETIC" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level4; + map[Shift+Lock+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_SEMIALPHABETIC" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level3; + preserve[Lock+LevelThree]= Lock; + map[Shift+Lock+LevelThree]= Level4; + preserve[Shift+Lock+LevelThree]= Lock; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_MIXED_KEYPAD" { + modifiers= Shift+NumLock+LevelThree; + map[Shift+NumLock]= Level1; + map[NumLock]= Level2; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[NumLock+LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Shift+NumLock+LevelThree]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Number"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_X" { + modifiers= Shift+Control+Alt+LevelThree; + map[LevelThree]= Level2; + map[Shift+LevelThree]= Level3; + map[Control+Alt]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Alt Base"; + level_name[Level3]= "Shift Alt"; + level_name[Level4]= "Ctrl+Alt"; + }; + type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[Lock]= Level4; + preserve[Lock]= Lock; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level3; + preserve[Lock+LevelThree]= Lock; + map[Shift+Lock+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "AltGr Base"; + level_name[Level4]= "Shift AltGr"; + }; + type "FOUR_LEVEL_PLUS_LOCK" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock]= Level5; + map[Shift+Lock]= Level2; + map[Lock+LevelThree]= Level3; + map[Shift+Lock+LevelThree]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "Lock"; + }; + type "FOUR_LEVEL_KEYPAD" { + modifiers= Shift+NumLock+LevelThree; + map[Shift]= Level2; + map[NumLock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[NumLock+LevelThree]= Level4; + map[Shift+NumLock+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Number"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Alt Number"; + }; +}; + +xkb_compatibility "complete" { + + virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper; + + interpret.useModMapMods= AnyLevel; + interpret.repeat= False; + interpret.locking= False; + interpret ISO_Level2_Latch+Exactly(Shift) { + useModMapMods=level1; + action= LatchMods(modifiers=Shift,clearLocks,latchToLock); + }; + interpret Shift_Lock+AnyOf(Shift+Lock) { + action= LockMods(modifiers=Shift); + }; + interpret Num_Lock+AnyOf(all) { + virtualModifier= NumLock; + action= LockMods(modifiers=NumLock); + }; + interpret ISO_Lock+AnyOf(all) { + action= ISOLock(modifiers=modMapMods,affect=all); + }; + interpret ISO_Level3_Shift+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= SetMods(modifiers=LevelThree,clearLocks); + }; + interpret ISO_Level3_Latch+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock); + }; + interpret ISO_Level3_Lock+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= LockMods(modifiers=LevelThree); + }; + interpret Alt_L+AnyOf(all) { + virtualModifier= Alt; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Alt_R+AnyOf(all) { + virtualModifier= Alt; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Meta_L+AnyOf(all) { + virtualModifier= Meta; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Meta_R+AnyOf(all) { + virtualModifier= Meta; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Super_L+AnyOf(all) { + virtualModifier= Super; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Super_R+AnyOf(all) { + virtualModifier= Super; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Hyper_L+AnyOf(all) { + virtualModifier= Hyper; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Hyper_R+AnyOf(all) { + virtualModifier= Hyper; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Scroll_Lock+AnyOf(all) { + virtualModifier= ScrollLock; + action= LockMods(modifiers=modMapMods); + }; + interpret ISO_Level5_Shift+AnyOf(all) { + virtualModifier= LevelFive; + useModMapMods=level1; + action= SetMods(modifiers=LevelFive,clearLocks); + }; + interpret ISO_Level5_Latch+AnyOf(all) { + virtualModifier= LevelFive; + action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock); + }; + interpret ISO_Level5_Lock+AnyOf(all) { + virtualModifier= LevelFive; + action= LockMods(modifiers=LevelFive); + }; + interpret Mode_switch+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= SetGroup(group=+1); + }; + interpret ISO_Level3_Shift+AnyOfOrNone(all) { + action= SetMods(modifiers=LevelThree,clearLocks); + }; + interpret ISO_Level3_Latch+AnyOfOrNone(all) { + action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock); + }; + interpret ISO_Level3_Lock+AnyOfOrNone(all) { + action= LockMods(modifiers=LevelThree); + }; + interpret ISO_Group_Latch+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LatchGroup(group=2); + }; + interpret ISO_Next_Group+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LockGroup(group=+1); + }; + interpret ISO_Prev_Group+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LockGroup(group=-1); + }; + interpret ISO_First_Group+AnyOfOrNone(all) { + action= LockGroup(group=1); + }; + interpret ISO_Last_Group+AnyOfOrNone(all) { + action= LockGroup(group=2); + }; + interpret KP_1+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+1); + }; + interpret KP_End+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+1); + }; + interpret KP_2+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=+1); + }; + interpret KP_Down+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=+1); + }; + interpret KP_3+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+1); + }; + interpret KP_Next+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+1); + }; + interpret KP_4+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+0); + }; + interpret KP_Left+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+0); + }; + interpret KP_6+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+0); + }; + interpret KP_Right+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+0); + }; + interpret KP_7+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=-1); + }; + interpret KP_Home+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=-1); + }; + interpret KP_8+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=-1); + }; + interpret KP_Up+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=-1); + }; + interpret KP_9+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=-1); + }; + interpret KP_Prior+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=-1); + }; + interpret KP_5+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default); + }; + interpret KP_Begin+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default); + }; + interpret KP_F2+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=1); + }; + interpret KP_Divide+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=1); + }; + interpret KP_F3+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=2); + }; + interpret KP_Multiply+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=2); + }; + interpret KP_F4+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=3); + }; + interpret KP_Subtract+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=3); + }; + interpret KP_Separator+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default,count=2); + }; + interpret KP_Add+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default,count=2); + }; + interpret KP_0+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=lock); + }; + interpret KP_Insert+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=lock); + }; + interpret KP_Decimal+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=unlock); + }; + interpret KP_Delete+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=unlock); + }; + interpret F25+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=1); + }; + interpret F26+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=2); + }; + interpret F27+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=-1); + }; + interpret F29+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=-1); + }; + interpret F31+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default); + }; + interpret F33+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+1); + }; + interpret F35+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+1); + }; + interpret Pointer_Button_Dflt+AnyOfOrNone(all) { + action= PtrBtn(button=default); + }; + interpret Pointer_Button1+AnyOfOrNone(all) { + action= PtrBtn(button=1); + }; + interpret Pointer_Button2+AnyOfOrNone(all) { + action= PtrBtn(button=2); + }; + interpret Pointer_Button3+AnyOfOrNone(all) { + action= PtrBtn(button=3); + }; + interpret Pointer_DblClick_Dflt+AnyOfOrNone(all) { + action= PtrBtn(button=default,count=2); + }; + interpret Pointer_DblClick1+AnyOfOrNone(all) { + action= PtrBtn(button=1,count=2); + }; + interpret Pointer_DblClick2+AnyOfOrNone(all) { + action= PtrBtn(button=2,count=2); + }; + interpret Pointer_DblClick3+AnyOfOrNone(all) { + action= PtrBtn(button=3,count=2); + }; + interpret Pointer_Drag_Dflt+AnyOfOrNone(all) { + action= LockPtrBtn(button=default,affect=both); + }; + interpret Pointer_Drag1+AnyOfOrNone(all) { + action= LockPtrBtn(button=1,affect=both); + }; + interpret Pointer_Drag2+AnyOfOrNone(all) { + action= LockPtrBtn(button=2,affect=both); + }; + interpret Pointer_Drag3+AnyOfOrNone(all) { + action= LockPtrBtn(button=3,affect=both); + }; + interpret Pointer_EnableKeys+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeys); + }; + interpret Pointer_Accelerate+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeysAccel); + }; + interpret Pointer_DfltBtnNext+AnyOfOrNone(all) { + action= SetPtrDflt(affect=button,button=+1); + }; + interpret Pointer_DfltBtnPrev+AnyOfOrNone(all) { + action= SetPtrDflt(affect=button,button=-1); + }; + interpret AccessX_Enable+AnyOfOrNone(all) { + action= LockControls(controls=AccessXKeys); + }; + interpret AccessX_Feedback_Enable+AnyOfOrNone(all) { + action= LockControls(controls=AccessXFeedback); + }; + interpret RepeatKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=RepeatKeys); + }; + interpret SlowKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=SlowKeys); + }; + interpret BounceKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=BounceKeys); + }; + interpret StickyKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=StickyKeys); + }; + interpret MouseKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeys); + }; + interpret MouseKeys_Accel_Enable+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeysAccel); + }; + interpret Overlay1_Enable+AnyOfOrNone(all) { + action= LockControls(controls=Overlay1); + }; + interpret Overlay2_Enable+AnyOfOrNone(all) { + action= LockControls(controls=Overlay2); + }; + interpret AudibleBell_Enable+AnyOfOrNone(all) { + action= LockControls(controls=AudibleBell); + }; + interpret Terminate_Server+AnyOfOrNone(all) { + action= Terminate(); + }; + interpret Alt_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Alt,clearLocks); + }; + interpret Alt_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Alt,clearLocks); + }; + interpret Meta_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Meta,clearLocks); + }; + interpret Meta_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Meta,clearLocks); + }; + interpret Super_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Super,clearLocks); + }; + interpret Super_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Super,clearLocks); + }; + interpret Hyper_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Hyper,clearLocks); + }; + interpret Hyper_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Hyper,clearLocks); + }; + interpret Shift_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Shift,clearLocks); + }; + interpret XF86Switch_VT_1+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=1,!same); + }; + interpret XF86Switch_VT_2+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=2,!same); + }; + interpret XF86Switch_VT_3+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=3,!same); + }; + interpret XF86Switch_VT_4+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=4,!same); + }; + interpret XF86Switch_VT_5+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=5,!same); + }; + interpret XF86Switch_VT_6+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=6,!same); + }; + interpret XF86Switch_VT_7+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=7,!same); + }; + interpret XF86Switch_VT_8+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=8,!same); + }; + interpret XF86Switch_VT_9+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=9,!same); + }; + interpret XF86Switch_VT_10+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=10,!same); + }; + interpret XF86Switch_VT_11+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=11,!same); + }; + interpret XF86Switch_VT_12+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=12,!same); + }; + interpret XF86LogGrabInfo+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x47,data[3]=0x72,data[4]=0x62,data[5]=0x73,data[6]=0x00); + }; + interpret XF86LogWindowTree+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x57,data[3]=0x69,data[4]=0x6e,data[5]=0x73,data[6]=0x00); + }; + interpret XF86Next_VMode+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x2b,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00); + }; + interpret XF86Prev_VMode+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x2d,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00); + }; + interpret ISO_Level5_Shift+AnyOfOrNone(all) { + action= SetMods(modifiers=LevelFive,clearLocks); + }; + interpret ISO_Level5_Latch+AnyOfOrNone(all) { + action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock); + }; + interpret ISO_Level5_Lock+AnyOfOrNone(all) { + action= LockMods(modifiers=LevelFive); + }; + interpret Caps_Lock+AnyOfOrNone(all) { + action= LockMods(modifiers=Lock); + }; + interpret Any+Exactly(Lock) { + action= LockMods(modifiers=Lock); + }; + interpret Any+AnyOf(all) { + action= SetMods(modifiers=modMapMods,clearLocks); + }; + indicator "Caps Lock" { + !allowExplicit; + whichModState= locked; + modifiers= Lock; + }; + indicator "Num Lock" { + !allowExplicit; + whichModState= locked; + modifiers= NumLock; + }; + indicator "Scroll Lock" { + whichModState= locked; + modifiers= ScrollLock; + }; + indicator "Shift Lock" { + !allowExplicit; + whichModState= locked; + modifiers= Shift; + }; + indicator "Group 2" { + !allowExplicit; + groups= 0xfe; + }; + indicator "Mouse Keys" { + indicatorDrivesKeyboard; + controls= mouseKeys; + }; +}; + +xkb_symbols "pc+us+inet(evdev)+ctrl(nocaps)+compose(rwin)+terminate(ctrl_alt_bksp)" { + + name[group1]="English (US)"; + + key { [ Escape ] }; + key { [ 1, exclam ] }; + key { [ 2, at ] }; + key { [ 3, numbersign ] }; + key { [ 4, dollar ] }; + key { [ 5, percent ] }; + key { [ 6, asciicircum ] }; + key { [ 7, ampersand ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ BackSpace, BackSpace, NoSymbol, NoSymbol, Terminate_Server ] + SYNTAX ERROR + }; + key { [ Tab, ISO_Left_Tab ] }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ q, Q ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ w, W ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ e, E ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ r, R ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ t, T ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ y, Y ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ u, U ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ i, I ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ o, O ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ p, P ] + }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + key { [ Return ] }; + key { [ Control_L ] }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ a, A ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ s, S ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ d, D ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ f, F ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ g, G ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ h, H ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ j, J ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ k, K ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ l, L ] + }; + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + key { [ grave, asciitilde ] }; + key { [ Shift_L ] }; + key { [ backslash, bar ] }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ z, Z ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ x, X ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ c, C ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ v, V ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ b, B ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ n, N ] + }; + key { + type= "ALPHABETIC", + symbols[Group1]= [ m, M ] + }; + key { [ comma, less ] }; + key { [ period, greater ] }; + key { [ slash, question ] }; + key { [ Shift_R ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86ClearGrab ] + }; + key { [ Alt_L, Meta_L ] }; + key { [ space ] }; + key { [ Control_L, Control_L ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F1, F1, F1, F1, XF86Switch_VT_1 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F2, F2, F2, F2, XF86Switch_VT_2 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F3, F3, F3, F3, XF86Switch_VT_3 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F4, F4, F4, F4, XF86Switch_VT_4 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F5, F5, F5, F5, XF86Switch_VT_5 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F6, F6, F6, F6, XF86Switch_VT_6 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F7, F7, F7, F7, XF86Switch_VT_7 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F8, F8, F8, F8, XF86Switch_VT_8 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F9, F9, F9, F9, XF86Switch_VT_9 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F10, F10, F10, F10, XF86Switch_VT_10 ] + }; + key { [ Num_Lock ] }; + key { [ Scroll_Lock ] }; + key { [ KP_Home, KP_7 ] }; + key { [ KP_Up, KP_8 ] }; + key { [ KP_Prior, KP_9 ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86Prev_VMode ] + }; + key { [ KP_Left, KP_4 ] }; + key { [ KP_Begin, KP_5 ] }; + key { [ KP_Right, KP_6 ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Add, KP_Add, KP_Add, KP_Add, XF86Next_VMode ] + }; + key { [ KP_End, KP_1 ] }; + key { [ KP_Down, KP_2 ] }; + key { [ KP_Next, KP_3 ] }; + key { [ KP_Insert, KP_0 ] }; + key { [ KP_Delete, KP_Decimal ] }; + key { [ ISO_Level3_Shift ] }; + key { + type= "FOUR_LEVEL", + symbols[Group1]= [ less, greater, bar, brokenbar ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F11, F11, F11, F11, XF86Switch_VT_11 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F12, F12, F12, F12, XF86Switch_VT_12 ] + }; + key { [ Katakana ] }; + key { [ Hiragana ] }; + key { [ Henkan_Mode ] }; + key { [ Hiragana_Katakana ] }; + key { [ Muhenkan ] }; + key { [ KP_Enter ] }; + key { [ Control_R ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86Ungrab ] + }; + key { + type= "PC_ALT_LEVEL2", + symbols[Group1]= [ Print, Sys_Req ] + }; + key { + type= "TWO_LEVEL", + symbols[Group1]= [ Alt_R, Meta_R ] + }; + key { [ Linefeed ] }; + key { [ Home ] }; + key { [ Up ] }; + key { [ Prior ] }; + key { [ Left ] }; + key { [ Right ] }; + key { [ End ] }; + key { [ Down ] }; + key { [ Next ] }; + key { [ Insert ] }; + key { [ Delete ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86PowerOff ] }; + key { [ KP_Equal ] }; + key { [ plusminus ] }; + key { + type= "PC_CONTROL_LEVEL2", + symbols[Group1]= [ Pause, Break ] + }; + key { [ XF86LaunchA ] }; + key { [ KP_Decimal, KP_Decimal ] }; + key { [ Hangul ] }; + key { [ Hangul_Hanja ] }; + key { [ Super_L ] }; + key { + type= "TWO_LEVEL", + symbols[Group1]= [ Multi_key, Multi_key ] + }; + key { [ Menu ] }; + key { [ Cancel ] }; + key { [ Redo ] }; + key { [ SunProps ] }; + key { [ Undo ] }; + key { [ SunFront ] }; + key { [ XF86Copy ] }; + key { [ SunOpen ] }; + key { [ XF86Paste ] }; + key { [ Find ] }; + key { [ XF86Cut ] }; + key { [ Help ] }; + key { [ XF86MenuKB ] }; + key { [ XF86Calculator ] }; + key { [ XF86Sleep ] }; + key { [ XF86WakeUp ] }; + key { [ XF86Explorer ] }; + key { [ XF86Send ] }; + key { [ XF86Xfer ] }; + key { [ XF86Launch1 ] }; + key { [ XF86Launch2 ] }; + key { [ XF86WWW ] }; + key { [ XF86DOS ] }; + key { [ XF86ScreenSaver ] }; + key { [ XF86RotateWindows ] }; + key { [ XF86Mail ] }; + key { [ XF86Favorites ] }; + key { [ XF86MyComputer ] }; + key { [ XF86Back ] }; + key { [ XF86Forward ] }; + key { [ XF86Eject ] }; + key { [ XF86Eject, XF86Eject ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioStop, XF86Eject ] }; + key { [ XF86AudioRecord ] }; + key { [ XF86AudioRewind ] }; + key { [ XF86Phone ] }; + key { [ XF86Tools ] }; + key { [ XF86HomePage ] }; + key { [ XF86Reload ] }; + key { [ XF86Close ] }; + key { [ XF86ScrollUp ] }; + key { [ XF86ScrollDown ] }; + key { [ parenleft ] }; + key { [ parenright ] }; + key { [ XF86New ] }; + key { [ Redo ] }; + key { [ XF86Tools ] }; + key { [ XF86Launch5 ] }; + key { [ XF86Launch6 ] }; + key { [ XF86Launch7 ] }; + key { [ XF86Launch8 ] }; + key { [ XF86Launch9 ] }; + key { [ XF86TouchpadToggle ] }; + key { [ XF86TouchpadOn ] }; + key { [ XF86TouchpadOff ] }; + key { [ Mode_switch ] }; + key { [ NoSymbol, Alt_L ] }; + key { [ NoSymbol, Meta_L ] }; + key { [ NoSymbol, Super_L ] }; + key { [ NoSymbol, Hyper_L ] }; + key { [ XF86AudioPlay ] }; + key { [ XF86AudioPause ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Launch4 ] }; + key { [ XF86LaunchB ] }; + key { [ XF86Suspend ] }; + key { [ XF86Close ] }; + key { [ XF86AudioPlay ] }; + key { [ XF86AudioForward ] }; + key { [ Print ] }; + key { [ XF86WebCam ] }; + key { [ XF86Mail ] }; + key { [ XF86Messenger ] }; + key { [ XF86Search ] }; + key { [ XF86Go ] }; + key { [ XF86Finance ] }; + key { [ XF86Game ] }; + key { [ XF86Shop ] }; + key { [ Cancel ] }; + key { [ XF86MonBrightnessDown ] }; + key { [ XF86MonBrightnessUp ] }; + key { [ XF86AudioMedia ] }; + key { [ XF86Display ] }; + key { [ XF86KbdLightOnOff ] }; + key { [ XF86KbdBrightnessDown ] }; + key { [ XF86KbdBrightnessUp ] }; + key { [ XF86Send ] }; + key { [ XF86Reply ] }; + key { [ XF86MailForward ] }; + key { [ XF86Save ] }; + key { [ XF86Documents ] }; + key { [ XF86Battery ] }; + key { [ XF86Bluetooth ] }; + key { [ XF86WLAN ] }; + modifier_map Control { }; + modifier_map Shift { }; + modifier_map Shift { }; + modifier_map Mod1 { }; + modifier_map Control { }; + modifier_map Mod2 { }; + modifier_map Mod5 { }; + modifier_map Control { }; + modifier_map Mod1 { }; + modifier_map Mod4 { }; + modifier_map Mod5 { }; + modifier_map Mod1 { }; + modifier_map Mod4 { }; + modifier_map Mod4 { }; +}; + +xkb_geometry "pc(pc105)" { + + width= 470; + height= 180; + + alias = ; + alias = ; + + baseColor= "white"; + labelColor= "black"; + xfont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1"; + description= "Generic 105"; + + shape "NORM" { + corner= 1, + { [ 18, 18 ] }, + { [ 2, 1 ], [ 16, 16 ] } + }; + shape "BKSP" { + corner= 1, + { [ 38, 18 ] }, + { [ 2, 1 ], [ 36, 16 ] } + }; + shape "TABK" { + corner= 1, + { [ 28, 18 ] }, + { [ 2, 1 ], [ 26, 16 ] } + }; + shape "BKSL" { + corner= 1, + { [ 28, 18 ] }, + { [ 2, 1 ], [ 26, 16 ] } + }; + shape "RTRN" { + corner= 1, + { [ 0, 0 ], [ 28, 0 ], [ 28, 37 ], [ 5, 37 ], + [ 5, 18 ], [ 0, 18 ] }, + { [ 2, 1 ], [ 26, 1 ], [ 26, 35 ], [ 7, 35 ], + [ 7, 16 ], [ 2, 16 ] }, + approx= { [ 5, 0 ], [ 28, 37 ] } + }; + shape "CAPS" { + corner= 1, + { [ 33, 18 ] }, + { [ 2, 1 ], [ 31, 16 ] } + }; + shape "LFSH" { + corner= 1, + { [ 25, 18 ] }, + { [ 2, 1 ], [ 23, 16 ] } + }; + shape "RTSH" { + corner= 1, + { [ 50, 18 ] }, + { [ 2, 1 ], [ 48, 16 ] } + }; + shape "MODK" { + corner= 1, + { [ 27, 18 ] }, + { [ 2, 1 ], [ 25, 16 ] } + }; + shape "SMOD" { + corner= 1, + { [ 23, 18 ] }, + { [ 2, 1 ], [ 21, 16 ] } + }; + shape "SPCE" { + corner= 1, + { [ 113, 18 ] }, + { [ 2, 1 ], [ 111, 16 ] } + }; + shape "KP0" { + corner= 1, + { [ 37, 18 ] }, + { [ 2, 1 ], [ 35, 16 ] } + }; + shape "KPAD" { + corner= 1, + { [ 18, 37 ] }, + { [ 2, 1 ], [ 16, 35 ] } + }; + shape "LEDS" { { [ 75, 20 ] } }; + shape "LED" { { [ 5, 1 ] } }; + section "Function" { + key.color= "grey20"; + priority= 7; + top= 22; + left= 19; + width= 351; + height= 19; + row { + top= 1; + left= 1; + keys { + { , "NORM", 1 }, + { , "NORM", 20, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 11, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 11, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 8, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" } + }; + }; + }; // End of "Function" section + + section "Alpha" { + key.color= "white"; + priority= 8; + top= 61; + left= 19; + width= 287; + height= 95; + row { + top= 1; + left= 1; + keys { + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, + { , "BKSP", 1, color="grey20" } + }; + }; + row { + top= 20; + left= 1; + keys { + { , "TABK", 1, color="grey20" }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "RTRN", 1, color="grey20" } + }; + }; + row { + top= 39; + left= 1; + keys { + { , "CAPS", 1, color="grey20" }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 } + }; + }; + row { + top= 58; + left= 1; + keys { + { , "LFSH", 1, color="grey20" }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, + { , "RTSH", 1, color="grey20" } + }; + }; + row { + top= 77; + left= 1; + keys { + { , "MODK", 1, color="grey20" }, + { , "SMOD", 1, color="grey20" }, + { , "SMOD", 1, color="grey20" }, + { , "SPCE", 1 }, + { , "SMOD", 1, color="grey20" }, + { , "SMOD", 1, color="grey20" }, + { , "SMOD", 1, color="grey20" }, + { , "SMOD", 1, color="grey20" } + }; + }; + }; // End of "Alpha" section + + section "Editing" { + key.color= "grey20"; + priority= 9; + top= 61; + left= 312; + width= 58; + height= 95; + row { + top= 1; + left= 1; + keys { + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 } + }; + }; + row { + top= 20; + left= 1; + keys { + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 } + }; + }; + row { + top= 58; + left= 20; + keys { + { , "NORM", 1 } + }; + }; + row { + top= 77; + left= 1; + keys { + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 } + }; + }; + }; // End of "Editing" section + + section "Keypad" { + key.color= "grey20"; + priority= 10; + top= 61; + left= 376; + width= 77; + height= 95; + row { + top= 1; + left= 1; + keys { + { , "NORM", 1 }, { , "NORM", 1 }, + { , "NORM", 1 }, { , "NORM", 1 } + }; + }; + row { + top= 20; + left= 1; + keys { + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "KPAD", 1 } + }; + }; + row { + top= 39; + left= 1; + keys { + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" } + }; + }; + row { + top= 58; + left= 1; + keys { + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "NORM", 1, color="white" }, + { , "KPAD", 1 } + }; + }; + row { + top= 77; + left= 1; + keys { + { , "KP0", 1, color="white" }, + { , "NORM", 1, color="white" } + }; + }; + }; // End of "Keypad" section + + solid "LedPanel" { + top= 22; + left= 377; + priority= 0; + color= "grey10"; + shape= "LEDS"; + }; + indicator "Num Lock" { + top= 37; + left= 382; + priority= 1; + onColor= "green"; + offColor= "green30"; + shape= "LED"; + }; + indicator "Caps Lock" { + top= 37; + left= 407; + priority= 2; + onColor= "green"; + offColor= "green30"; + shape= "LED"; + }; + indicator "Scroll Lock" { + top= 37; + left= 433; + priority= 3; + onColor= "green"; + offColor= "green30"; + shape= "LED"; + }; + text "NumLockLabel" { + top= 25; + left= 378; + priority= 4; + width= 19.8; + height= 10; + XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1"; + text= "Num\nLock"; + }; + text "CapsLockLabel" { + top= 25; + left= 403; + priority= 5; + width= 26.4; + height= 10; + XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1"; + text= "Caps\nLock"; + }; + text "ScrollLockLabel" { + top= 25; + left= 428; + priority= 6; + width= 39.6; + height= 10; + XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1"; + text= "Scroll\nLock"; + }; +}; + +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/syntax-error2.xkb b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/syntax-error2.xkb new file mode 100644 index 0000000..0ca28f2 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/syntax-error2.xkb @@ -0,0 +1,7 @@ +xkb_keymap { +xkb_compatibility "complete" { + interpret ISO_Level2_Latch+Exactly(Shift) { + action == LatchMods(modifiers=Shift,clearLocks,latchToLock); + }; +}; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/unbound-vmod.xkb b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/unbound-vmod.xkb new file mode 100644 index 0000000..a1733c1 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keymaps/unbound-vmod.xkb @@ -0,0 +1,1533 @@ +xkb_keymap { +xkb_keycodes "evdev+aliases(qwertz)" { + minimum = 8; + maximum = 255; + = 9; + = 10; + = 11; + = 12; + = 13; + = 14; + = 15; + = 16; + = 17; + = 18; + = 19; + = 20; + = 21; + = 22; + = 23; + = 24; + = 25; + = 26; + = 27; + = 28; + = 29; + = 30; + = 31; + = 32; + = 33; + = 34; + = 35; + = 36; + = 37; + = 38; + = 39; + = 40; + = 41; + = 42; + = 43; + = 44; + = 45; + = 46; + = 47; + = 48; + = 49; + = 50; + = 51; + = 52; + = 53; + = 54; + = 55; + = 56; + = 57; + = 58; + = 59; + = 60; + = 61; + = 62; + = 63; + = 64; + = 65; + = 66; + = 67; + = 68; + = 69; + = 70; + = 71; + = 72; + = 73; + = 74; + = 75; + = 76; + = 77; + = 78; + = 79; + = 80; + = 81; + = 82; + = 83; + = 84; + = 85; + = 86; + = 87; + = 88; + = 89; + = 90; + = 91; + = 92; + = 94; + = 95; + = 96; + = 97; + = 98; + = 99; + = 100; + = 101; + = 102; + = 103; + = 104; + = 105; + = 106; + = 107; + = 108; + = 109; + = 110; + = 111; + = 112; + = 113; + = 114; + = 115; + = 116; + = 117; + = 118; + = 119; + = 120; + = 121; + = 122; + = 123; + = 124; + = 125; + = 126; + = 127; + = 128; + = 129; + = 130; + = 131; + = 132; + = 133; + = 134; + = 135; + = 136; + = 137; + = 138; + = 139; + = 140; + = 141; + = 142; + = 143; + = 144; + = 145; + = 146; + = 147; + = 148; + = 149; + = 150; + = 151; + = 152; + = 153; + = 154; + = 155; + = 156; + = 157; + = 158; + = 159; + = 160; + = 161; + = 162; + = 163; + = 164; + = 165; + = 166; + = 167; + = 168; + = 169; + = 170; + = 171; + = 172; + = 173; + = 174; + = 175; + = 176; + = 177; + = 178; + = 179; + = 180; + = 181; + = 182; + = 183; + = 184; + = 185; + = 186; + = 187; + = 188; + = 189; + = 190; + = 191; + = 192; + = 193; + = 194; + = 195; + = 196; + = 197; + = 198; + = 199; + = 200; + = 201; + = 202; + = 203; + = 204; + = 205; + = 206; + = 207; + = 208; + = 209; + = 210; + = 211; + = 212; + = 213; + = 214; + = 215; + = 216; + = 217; + = 218; + = 219; + = 220; + = 221; + = 222; + = 223; + = 224; + = 225; + = 226; + = 227; + = 228; + = 229; + = 230; + = 231; + = 232; + = 233; + = 234; + = 235; + = 236; + = 237; + = 238; + = 239; + = 240; + = 241; + = 242; + = 243; + = 244; + = 245; + = 246; + = 247; + = 248; + = 249; + = 250; + = 251; + = 252; + = 253; + indicator 1 = "Caps Lock"; + indicator 2 = "Num Lock"; + indicator 3 = "Scroll Lock"; + indicator 4 = "Compose"; + indicator 5 = "Kana"; + indicator 6 = "Sleep"; + indicator 7 = "Suspend"; + indicator 8 = "Mute"; + indicator 9 = "Misc"; + indicator 10 = "Mail"; + indicator 11 = "Charging"; + virtual indicator 12 = "Shift Lock"; + virtual indicator 13 = "Group 2"; + virtual indicator 14 = "Mouse Keys"; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; +}; + +xkb_types "complete" { + + virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper; + + type "ONE_LEVEL" { + modifiers= none; + level_name[Level1]= "Any"; + }; + type "TWO_LEVEL" { + modifiers= Shift; + map[Shift]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + }; + type "ALPHABETIC" { + modifiers= Shift+Lock; + map[Shift]= Level2; + map[Lock]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Caps"; + }; + type "KEYPAD" { + modifiers= Shift+NumLock; + map[Shift]= Level2; + map[NumLock]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Number"; + }; + type "SHIFT+ALT" { + modifiers= Shift+Alt; + map[Shift+Alt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift+Alt"; + }; + type "PC_CONTROL_LEVEL2" { + modifiers= Control; + map[Control]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Control"; + }; + type "PC_LCONTROL_LEVEL2" { + modifiers= LControl; + map[LControl]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "LControl"; + }; + type "PC_RCONTROL_LEVEL2" { + modifiers= RControl; + map[RControl]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "RControl"; + }; + type "PC_ALT_LEVEL2" { + modifiers= Alt; + map[Alt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Alt"; + }; + type "PC_LALT_LEVEL2" { + modifiers= LAlt; + map[LAlt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "LAlt"; + }; + type "PC_RALT_LEVEL2" { + modifiers= RAlt; + map[RAlt]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "RAlt"; + }; + type "CTRL+ALT" { + modifiers= Shift+Control+Alt+LevelThree; + map[Shift]= Level2; + preserve[Shift]= Shift; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + preserve[Shift+LevelThree]= Shift; + map[Control+Alt]= Level5; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "Ctrl+Alt"; + }; + type "LOCAL_EIGHT_LEVEL" { + modifiers= Shift+Lock+Control+LevelThree; + map[Shift+Lock]= Level1; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+Lock+LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level4; + map[Control]= Level5; + map[Shift+Lock+Control]= Level5; + map[Shift+Control]= Level6; + map[Lock+Control]= Level6; + map[Control+LevelThree]= Level7; + map[Shift+Lock+Control+LevelThree]= Level7; + map[Shift+Control+LevelThree]= Level8; + map[Lock+Control+LevelThree]= Level8; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Level3"; + level_name[Level4]= "Shift Level3"; + level_name[Level5]= "Ctrl"; + level_name[Level6]= "Shift Ctrl"; + level_name[Level7]= "Level3 Ctrl"; + level_name[Level8]= "Shift Level3 Ctrl"; + }; + type "THREE_LEVEL" { + modifiers= Shift+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Level3"; + }; + type "EIGHT_LEVEL" { + modifiers= Shift+LevelThree+LevelFive; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[LevelFive]= Level5; + map[Shift+LevelFive]= Level6; + map[LevelThree+LevelFive]= Level7; + map[Shift+LevelThree+LevelFive]= Level8; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "X"; + level_name[Level6]= "X Shift"; + level_name[Level7]= "X Alt Base"; + level_name[Level8]= "X Shift Alt"; + }; + type "EIGHT_LEVEL_ALPHABETIC" { + modifiers= Shift+Lock+LevelThree+LevelFive; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level4; + map[Shift+Lock+LevelThree]= Level3; + map[LevelFive]= Level5; + map[Shift+LevelFive]= Level6; + map[Lock+LevelFive]= Level6; + map[LevelThree+LevelFive]= Level7; + map[Shift+LevelThree+LevelFive]= Level8; + map[Lock+LevelThree+LevelFive]= Level8; + map[Shift+Lock+LevelThree+LevelFive]= Level7; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "X"; + level_name[Level6]= "X Shift"; + level_name[Level7]= "X Alt Base"; + level_name[Level8]= "X Shift Alt"; + }; + type "EIGHT_LEVEL_SEMIALPHABETIC" { + modifiers= Shift+Lock+LevelThree+LevelFive; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level3; + preserve[Lock+LevelThree]= Lock; + map[Shift+Lock+LevelThree]= Level4; + preserve[Shift+Lock+LevelThree]= Lock; + map[LevelFive]= Level5; + map[Shift+LevelFive]= Level6; + map[Lock+LevelFive]= Level6; + preserve[Lock+LevelFive]= Lock; + map[Shift+Lock+LevelFive]= Level6; + preserve[Shift+Lock+LevelFive]= Lock; + map[LevelThree+LevelFive]= Level7; + map[Shift+LevelThree+LevelFive]= Level8; + map[Lock+LevelThree+LevelFive]= Level7; + preserve[Lock+LevelThree+LevelFive]= Lock; + map[Shift+Lock+LevelThree+LevelFive]= Level8; + preserve[Shift+Lock+LevelThree+LevelFive]= Lock; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "X"; + level_name[Level6]= "X Shift"; + level_name[Level7]= "X Alt Base"; + level_name[Level8]= "X Shift Alt"; + }; + type "FOUR_LEVEL" { + modifiers= Shift+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_ALPHABETIC" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level4; + map[Shift+Lock+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_SEMIALPHABETIC" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[Lock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level3; + preserve[Lock+LevelThree]= Lock; + map[Shift+Lock+LevelThree]= Level4; + preserve[Shift+Lock+LevelThree]= Lock; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_MIXED_KEYPAD" { + modifiers= Shift+NumLock+LevelThree; + map[Shift+NumLock]= Level1; + map[NumLock]= Level2; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[NumLock+LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Shift+NumLock+LevelThree]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Number"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + }; + type "FOUR_LEVEL_X" { + modifiers= Shift+Control+Alt+LevelThree; + map[LevelThree]= Level2; + map[Shift+LevelThree]= Level3; + map[Control+Alt]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Alt Base"; + level_name[Level3]= "Shift Alt"; + level_name[Level4]= "Ctrl+Alt"; + }; + type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[Lock]= Level4; + preserve[Lock]= Lock; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock+LevelThree]= Level3; + preserve[Lock+LevelThree]= Lock; + map[Shift+Lock+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "AltGr Base"; + level_name[Level4]= "Shift AltGr"; + }; + type "FOUR_LEVEL_PLUS_LOCK" { + modifiers= Shift+Lock+LevelThree; + map[Shift]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[Lock]= Level5; + map[Shift+Lock]= Level2; + map[Lock+LevelThree]= Level3; + map[Shift+Lock+LevelThree]= Level4; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Shift Alt"; + level_name[Level5]= "Lock"; + }; + type "FOUR_LEVEL_KEYPAD" { + modifiers= Shift+NumLock+LevelThree; + map[Shift]= Level2; + map[NumLock]= Level2; + map[LevelThree]= Level3; + map[Shift+LevelThree]= Level4; + map[NumLock+LevelThree]= Level4; + map[Shift+NumLock+LevelThree]= Level3; + level_name[Level1]= "Base"; + level_name[Level2]= "Number"; + level_name[Level3]= "Alt Base"; + level_name[Level4]= "Alt Number"; + }; +}; + +xkb_compatibility "complete" { + + virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper; + + interpret.useModMapMods= AnyLevel; + interpret.repeat= False; + interpret.locking= False; + interpret ISO_Level2_Latch+Exactly(Shift) { + useModMapMods=level1; + action= LatchMods(modifiers=Shift,clearLocks,latchToLock); + }; + interpret Shift_Lock+AnyOf(Shift+Lock) { + action= LockMods(modifiers=Shift); + }; + interpret Num_Lock+AnyOf(all) { + virtualModifier= NumLock; + action= LockMods(modifiers=NumLock); + }; + interpret ISO_Level3_Shift+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= SetMods(modifiers=LevelThree,clearLocks); + }; + interpret ISO_Level3_Latch+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock); + }; + interpret ISO_Level3_Lock+AnyOf(all) { + virtualModifier= LevelThree; + useModMapMods=level1; + action= LockMods(modifiers=LevelThree); + }; + interpret Alt_L+AnyOf(all) { + virtualModifier= Alt; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Alt_R+AnyOf(all) { + virtualModifier= Alt; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Meta_L+AnyOf(all) { + virtualModifier= Meta; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Meta_R+AnyOf(all) { + virtualModifier= Meta; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Super_L+AnyOf(all) { + virtualModifier= Super; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Super_R+AnyOf(all) { + virtualModifier= Super; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Hyper_L+AnyOf(all) { + virtualModifier= Hyper; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Hyper_R+AnyOf(all) { + virtualModifier= Hyper; + action= SetMods(modifiers=modMapMods,clearLocks); + }; + interpret Scroll_Lock+AnyOf(all) { + virtualModifier= ScrollLock; + action= LockMods(modifiers=modMapMods); + }; + interpret ISO_Level5_Shift+AnyOf(all) { + virtualModifier= LevelFive; + useModMapMods=level1; + action= SetMods(modifiers=LevelFive,clearLocks); + }; + interpret ISO_Level5_Latch+AnyOf(all) { + virtualModifier= LevelFive; + action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock); + }; + interpret ISO_Level5_Lock+AnyOf(all) { + virtualModifier= LevelFive; + action= LockMods(modifiers=LevelFive); + }; + interpret Mode_switch+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= SetGroup(group=+1); + }; + interpret ISO_Level3_Shift+AnyOfOrNone(all) { + action= SetMods(modifiers=LevelThree,clearLocks); + }; + interpret ISO_Level3_Latch+AnyOfOrNone(all) { + action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock); + }; + interpret ISO_Level3_Lock+AnyOfOrNone(all) { + action= LockMods(modifiers=LevelThree); + }; + interpret ISO_Group_Latch+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LatchGroup(group=2); + }; + interpret ISO_Next_Group+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LockGroup(group=+1); + }; + interpret ISO_Prev_Group+AnyOfOrNone(all) { + virtualModifier= AltGr; + useModMapMods=level1; + action= LockGroup(group=-1); + }; + interpret ISO_First_Group+AnyOfOrNone(all) { + action= LockGroup(group=1); + }; + interpret ISO_Last_Group+AnyOfOrNone(all) { + action= LockGroup(group=2); + }; + interpret KP_1+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+1); + }; + interpret KP_End+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+1); + }; + interpret KP_2+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=+1); + }; + interpret KP_Down+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=+1); + }; + interpret KP_3+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+1); + }; + interpret KP_Next+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+1); + }; + interpret KP_4+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+0); + }; + interpret KP_Left+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+0); + }; + interpret KP_6+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+0); + }; + interpret KP_Right+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+0); + }; + interpret KP_7+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=-1); + }; + interpret KP_Home+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=-1); + }; + interpret KP_8+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=-1); + }; + interpret KP_Up+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+0,y=-1); + }; + interpret KP_9+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=-1); + }; + interpret KP_Prior+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=-1); + }; + interpret KP_5+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default); + }; + interpret KP_Begin+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default); + }; + interpret KP_F2+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=1); + }; + interpret KP_Divide+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=1); + }; + interpret KP_F3+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=2); + }; + interpret KP_Multiply+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=2); + }; + interpret KP_F4+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=3); + }; + interpret KP_Subtract+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=3); + }; + interpret KP_Separator+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default,count=2); + }; + interpret KP_Add+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default,count=2); + }; + interpret KP_0+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=lock); + }; + interpret KP_Insert+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=lock); + }; + interpret KP_Decimal+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=unlock); + }; + interpret KP_Delete+AnyOfOrNone(all) { + repeat= True; + action= LockPtrBtn(button=default,affect=unlock); + }; + interpret F25+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=1); + }; + interpret F26+AnyOfOrNone(all) { + repeat= True; + action= SetPtrDflt(affect=button,button=2); + }; + interpret F27+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=-1); + }; + interpret F29+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=-1); + }; + interpret F31+AnyOfOrNone(all) { + repeat= True; + action= PtrBtn(button=default); + }; + interpret F33+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=-1,y=+1); + }; + interpret F35+AnyOfOrNone(all) { + repeat= True; + action= MovePtr(x=+1,y=+1); + }; + interpret Pointer_Button_Dflt+AnyOfOrNone(all) { + action= PtrBtn(button=default); + }; + interpret Pointer_Button1+AnyOfOrNone(all) { + action= PtrBtn(button=1); + }; + interpret Pointer_Button2+AnyOfOrNone(all) { + action= PtrBtn(button=2); + }; + interpret Pointer_Button3+AnyOfOrNone(all) { + action= PtrBtn(button=3); + }; + interpret Pointer_DblClick_Dflt+AnyOfOrNone(all) { + action= PtrBtn(button=default,count=2); + }; + interpret Pointer_DblClick1+AnyOfOrNone(all) { + action= PtrBtn(button=1,count=2); + }; + interpret Pointer_DblClick2+AnyOfOrNone(all) { + action= PtrBtn(button=2,count=2); + }; + interpret Pointer_DblClick3+AnyOfOrNone(all) { + action= PtrBtn(button=3,count=2); + }; + interpret Pointer_Drag_Dflt+AnyOfOrNone(all) { + action= LockPtrBtn(button=default,affect=both); + }; + interpret Pointer_Drag1+AnyOfOrNone(all) { + action= LockPtrBtn(button=1,affect=both); + }; + interpret Pointer_Drag2+AnyOfOrNone(all) { + action= LockPtrBtn(button=2,affect=both); + }; + interpret Pointer_Drag3+AnyOfOrNone(all) { + action= LockPtrBtn(button=3,affect=both); + }; + interpret Pointer_EnableKeys+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeys); + }; + interpret Pointer_Accelerate+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeysAccel); + }; + interpret Pointer_DfltBtnNext+AnyOfOrNone(all) { + action= SetPtrDflt(affect=button,button=+1); + }; + interpret Pointer_DfltBtnPrev+AnyOfOrNone(all) { + action= SetPtrDflt(affect=button,button=-1); + }; + interpret AccessX_Enable+AnyOfOrNone(all) { + action= LockControls(controls=AccessXKeys); + }; + interpret AccessX_Feedback_Enable+AnyOfOrNone(all) { + action= LockControls(controls=AccessXFeedback); + }; + interpret RepeatKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=RepeatKeys); + }; + interpret SlowKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=SlowKeys); + }; + interpret BounceKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=BounceKeys); + }; + interpret StickyKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=StickyKeys); + }; + interpret MouseKeys_Enable+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeys); + }; + interpret MouseKeys_Accel_Enable+AnyOfOrNone(all) { + action= LockControls(controls=MouseKeysAccel); + }; + interpret Overlay1_Enable+AnyOfOrNone(all) { + action= LockControls(controls=Overlay1); + }; + interpret Overlay2_Enable+AnyOfOrNone(all) { + action= LockControls(controls=Overlay2); + }; + interpret AudibleBell_Enable+AnyOfOrNone(all) { + action= LockControls(controls=AudibleBell); + }; + interpret Terminate_Server+AnyOfOrNone(all) { + action= Terminate(); + }; + interpret Alt_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Alt,clearLocks); + }; + interpret Alt_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Alt,clearLocks); + }; + interpret Meta_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Meta,clearLocks); + }; + interpret Meta_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Meta,clearLocks); + }; + interpret Super_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Super,clearLocks); + }; + interpret Super_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Super,clearLocks); + }; + interpret Hyper_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Hyper,clearLocks); + }; + interpret Hyper_R+AnyOfOrNone(all) { + action= SetMods(modifiers=Hyper,clearLocks); + }; + interpret Shift_L+AnyOfOrNone(all) { + action= SetMods(modifiers=Shift,clearLocks); + }; + interpret XF86Switch_VT_1+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=1,!same); + }; + interpret XF86Switch_VT_2+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=2,!same); + }; + interpret XF86Switch_VT_3+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=3,!same); + }; + interpret XF86Switch_VT_4+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=4,!same); + }; + interpret XF86Switch_VT_5+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=5,!same); + }; + interpret XF86Switch_VT_6+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=6,!same); + }; + interpret XF86Switch_VT_7+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=7,!same); + }; + interpret XF86Switch_VT_8+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=8,!same); + }; + interpret XF86Switch_VT_9+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=9,!same); + }; + interpret XF86Switch_VT_10+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=10,!same); + }; + interpret XF86Switch_VT_11+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=11,!same); + }; + interpret XF86Switch_VT_12+AnyOfOrNone(all) { + repeat= True; + action= SwitchScreen(screen=12,!same); + }; + interpret XF86LogGrabInfo+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x47,data[3]=0x72,data[4]=0x62,data[5]=0x73,data[6]=0x00); + }; + interpret XF86LogWindowTree+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x57,data[3]=0x69,data[4]=0x6e,data[5]=0x73,data[6]=0x00); + }; + interpret XF86Next_VMode+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x2b,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00); + }; + interpret XF86Prev_VMode+AnyOfOrNone(all) { + repeat= True; + action= Private(type=0x86,data[0]=0x2d,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00); + }; + interpret ISO_Level5_Shift+AnyOfOrNone(all) { + action= SetMods(modifiers=LevelFive,clearLocks); + }; + interpret ISO_Level5_Latch+AnyOfOrNone(all) { + action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock); + }; + interpret ISO_Level5_Lock+AnyOfOrNone(all) { + action= LockMods(modifiers=LevelFive); + }; + interpret Caps_Lock+AnyOfOrNone(all) { + action= LockMods(modifiers=Lock); + }; + interpret Any+Exactly(Lock) { + action= LockMods(modifiers=Lock); + }; + interpret Any+AnyOf(all) { + action= SetMods(modifiers=modMapMods,clearLocks); + }; + group 2 = AltGr; + group 3 = AltGr; + group 4 = AltGr; + indicator "Caps Lock" { + !allowExplicit; + whichModState= locked; + modifiers= Lock; + }; + indicator "Num Lock" { + !allowExplicit; + whichModState= locked; + modifiers= NumLock; + }; + indicator "Scroll Lock" { + whichModState= locked; + modifiers= ScrollLock; + }; + indicator "Shift Lock" { + !allowExplicit; + whichModState= locked; + modifiers= Shift; + }; + indicator "Group 2" { + !allowExplicit; + groups= 0xfe; + }; + indicator "Mouse Keys" { + indicatorDrivesKeyboard; + controls= mouseKeys; + }; +}; + +xkb_symbols "pc+de+inet(evdev)+group(menu_toggle)+ctrl(nocaps)" { + + name[group1]="German"; + + key { [ Escape ] }; + key { + type= "FOUR_LEVEL", + symbols[Group1]= [ 1, exclam, onesuperior, exclamdown ] + }; + key { + type= "FOUR_LEVEL", + symbols[Group1]= [ 2, quotedbl, twosuperior, oneeighth ] + }; + key { + type= "FOUR_LEVEL", + symbols[Group1]= [ 3, section, threesuperior, sterling ] + }; + key { + type= "FOUR_LEVEL", + symbols[Group1]= [ 4, dollar, onequarter, currency ] + }; + key { + type= "FOUR_LEVEL", + symbols[Group1]= [ 5, percent, onehalf, threeeighths ] + }; + key { + type= "FOUR_LEVEL", + symbols[Group1]= [ 6, ampersand, notsign, fiveeighths ] + }; + key { + type= "FOUR_LEVEL", + symbols[Group1]= [ 7, slash, braceleft, seveneighths ] + }; + key { + type= "FOUR_LEVEL", + symbols[Group1]= [ 8, parenleft, bracketleft, trademark ] + }; + key { + type= "FOUR_LEVEL", + symbols[Group1]= [ 9, parenright, bracketright, plusminus ] + }; + key { + type= "FOUR_LEVEL", + symbols[Group1]= [ 0, equal, braceright, degree ] + }; + key { + type= "FOUR_LEVEL_PLUS_LOCK", + symbols[Group1]= [ ssharp, question, backslash, questiondown, U1E9E ] + }; + key { + type= "FOUR_LEVEL", + symbols[Group1]= [ dead_acute, dead_grave, dead_cedilla, dead_ogonek ] + }; + key { [ BackSpace, BackSpace ] }; + key { [ Tab, ISO_Left_Tab ] }; + key { + type= "FOUR_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ q, Q, at, Greek_OMEGA ] + }; + key { + type= "FOUR_LEVEL_ALPHABETIC", + symbols[Group1]= [ w, W, lstroke, Lstroke ] + }; + key { + type= "FOUR_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ e, E, EuroSign, EuroSign ] + }; + key { + type= "FOUR_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ r, R, paragraph, registered ] + }; + key { + type= "FOUR_LEVEL_ALPHABETIC", + symbols[Group1]= [ t, T, tslash, Tslash ] + }; + key { + type= "FOUR_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ z, Z, leftarrow, yen ] + }; + key { + type= "FOUR_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ u, U, downarrow, uparrow ] + }; + key { + type= "FOUR_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ i, I, rightarrow, idotless ] + }; + key { + type= "FOUR_LEVEL_ALPHABETIC", + symbols[Group1]= [ o, O, oslash, Oslash ] + }; + key { + type= "FOUR_LEVEL_ALPHABETIC", + symbols[Group1]= [ p, P, thorn, THORN ] + }; + key { + type= "FOUR_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ] + }; + key { + type= "FOUR_LEVEL", + symbols[Group1]= [ plus, asterisk, asciitilde, macron ] + }; + key { [ Return ] }; + key { [ Control_L ] }; + key { + type= "FOUR_LEVEL_ALPHABETIC", + symbols[Group1]= [ a, A, ae, AE ] + }; + key { + type= "FOUR_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ s, S, U017F, U1E9E ] + }; + key { + type= "FOUR_LEVEL_ALPHABETIC", + symbols[Group1]= [ d, D, eth, ETH ] + }; + key { + type= "FOUR_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ f, F, dstroke, ordfeminine ] + }; + key { + type= "FOUR_LEVEL_ALPHABETIC", + symbols[Group1]= [ g, G, eng, ENG ] + }; + key { + type= "FOUR_LEVEL_ALPHABETIC", + symbols[Group1]= [ h, H, hstroke, Hstroke ] + }; + key { + type= "FOUR_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ j, J, dead_belowdot, dead_abovedot ] + }; + key { + type= "FOUR_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ k, K, kra, ampersand ] + }; + key { + type= "FOUR_LEVEL_ALPHABETIC", + symbols[Group1]= [ l, L, lstroke, Lstroke ] + }; + key { + type= "FOUR_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ odiaeresis, Odiaeresis, dead_doubleacute, dead_belowdot ] + }; + key { + type= "FOUR_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ adiaeresis, Adiaeresis, dead_circumflex, dead_caron ] + }; + key { + type= "FOUR_LEVEL", + symbols[Group1]= [ dead_circumflex, degree, U2032, U2033 ] + }; + key { [ Shift_L ] }; + key { + type= "FOUR_LEVEL", + symbols[Group1]= [ numbersign, apostrophe, rightsinglequotemark, dead_breve ] + }; + key { + type= "FOUR_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ y, Y, guillemotright, U203A ] + }; + key { + type= "FOUR_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ x, X, guillemotleft, U2039 ] + }; + key { + type= "FOUR_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ c, C, cent, copyright ] + }; + key { + type= "FOUR_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ v, V, doublelowquotemark, singlelowquotemark ] + }; + key { + type= "FOUR_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ b, B, leftdoublequotemark, leftsinglequotemark ] + }; + key { + type= "FOUR_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ n, N, rightdoublequotemark, rightsinglequotemark ] + }; + key { + type= "FOUR_LEVEL_SEMIALPHABETIC", + symbols[Group1]= [ m, M, mu, masculine ] + }; + key { + type= "FOUR_LEVEL", + symbols[Group1]= [ comma, semicolon, periodcentered, multiply ] + }; + key { + type= "FOUR_LEVEL", + symbols[Group1]= [ period, colon, U2026, division ] + }; + key { + type= "FOUR_LEVEL", + symbols[Group1]= [ minus, underscore, endash, emdash ] + }; + key { [ Shift_R ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86ClearGrab ] + }; + key { [ Alt_L, Meta_L ] }; + key { [ space ] }; + key { [ Control_L, Control_L ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F1, F1, F1, F1, XF86Switch_VT_1 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F2, F2, F2, F2, XF86Switch_VT_2 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F3, F3, F3, F3, XF86Switch_VT_3 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F4, F4, F4, F4, XF86Switch_VT_4 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F5, F5, F5, F5, XF86Switch_VT_5 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F6, F6, F6, F6, XF86Switch_VT_6 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F7, F7, F7, F7, XF86Switch_VT_7 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F8, F8, F8, F8, XF86Switch_VT_8 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F9, F9, F9, F9, XF86Switch_VT_9 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F10, F10, F10, F10, XF86Switch_VT_10 ] + }; + key { [ Num_Lock ] }; + key { [ Scroll_Lock ] }; + key { [ KP_Home, KP_7 ] }; + key { [ KP_Up, KP_8 ] }; + key { [ KP_Prior, KP_9 ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86Prev_VMode ] + }; + key { [ KP_Left, KP_4 ] }; + key { [ KP_Begin, KP_5 ] }; + key { [ KP_Right, KP_6 ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Add, KP_Add, KP_Add, KP_Add, XF86Next_VMode ] + }; + key { [ KP_End, KP_1 ] }; + key { [ KP_Down, KP_2 ] }; + key { [ KP_Next, KP_3 ] }; + key { [ KP_Insert, KP_0 ] }; + key { + type= "KEYPAD", + symbols[Group1]= [ KP_Delete, KP_Separator ] + }; + key { + type= "ONE_LEVEL", + symbols[Group1]= [ ISO_Level3_Shift ], + actions[Group1]= [ SetMods(modifiers=LevelThree) ] + }; + key { + type= "FOUR_LEVEL", + symbols[Group1]= [ less, greater, bar, brokenbar ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F11, F11, F11, F11, XF86Switch_VT_11 ] + }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ F12, F12, F12, F12, XF86Switch_VT_12 ] + }; + key { [ Katakana ] }; + key { [ Hiragana ] }; + key { [ Henkan_Mode ] }; + key { [ Hiragana_Katakana ] }; + key { [ Muhenkan ] }; + key { [ KP_Enter ] }; + key { [ Control_R ] }; + key { + type= "CTRL+ALT", + symbols[Group1]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86Ungrab ] + }; + key { + type= "PC_ALT_LEVEL2", + symbols[Group1]= [ Print, Sys_Req ] + }; + key { + type= "ONE_LEVEL", + symbols[Group1]= [ ISO_Level3_Shift ] + }; + key { [ Linefeed ] }; + key { [ Home ] }; + key { [ Up ] }; + key { [ Prior ] }; + key { [ Left ] }; + key { [ Right ] }; + key { [ End ] }; + key { [ Down ] }; + key { [ Next ] }; + key { [ Insert ] }; + key { [ Delete ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86PowerOff ] }; + key { [ KP_Equal ] }; + key { [ plusminus ] }; + key { + type= "PC_CONTROL_LEVEL2", + symbols[Group1]= [ Pause, Break ] + }; + key { [ XF86LaunchA ] }; + key { [ KP_Decimal, KP_Decimal ] }; + key { [ Hangul ] }; + key { [ Hangul_Hanja ] }; + key { [ Super_L ] }; + key { [ Super_R ] }; + key { [ ISO_Next_Group, Menu ] }; + key { [ Cancel ] }; + key { [ Redo ] }; + key { [ SunProps ] }; + key { [ Undo ] }; + key { [ SunFront ] }; + key { [ XF86Copy ] }; + key { [ XF86Open ] }; + key { [ XF86Paste ] }; + key { [ Find ] }; + key { [ XF86Cut ] }; + key { [ Help ] }; + key { [ XF86MenuKB ] }; + key { [ XF86Calculator ] }; + key { [ XF86Sleep ] }; + key { [ XF86WakeUp ] }; + key { [ XF86Explorer ] }; + key { [ XF86Send ] }; + key { [ XF86Xfer ] }; + key { [ XF86Launch1 ] }; + key { [ XF86Launch2 ] }; + key { [ XF86WWW ] }; + key { [ XF86DOS ] }; + key { [ XF86ScreenSaver ] }; + key { [ XF86RotateWindows ] }; + key { [ XF86Mail ] }; + key { [ XF86Favorites ] }; + key { [ XF86MyComputer ] }; + key { [ XF86Back ] }; + key { [ XF86Forward ] }; + key { [ XF86Eject ] }; + key { [ XF86Eject, XF86Eject ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioStop, XF86Eject ] }; + key { [ XF86AudioRecord ] }; + key { [ XF86AudioRewind ] }; + key { [ XF86Phone ] }; + key { [ XF86Tools ] }; + key { [ XF86HomePage ] }; + key { [ XF86Reload ] }; + key { [ XF86Close ] }; + key { [ XF86ScrollUp ] }; + key { [ XF86ScrollDown ] }; + key { [ parenleft ] }; + key { [ parenright ] }; + key { [ XF86New ] }; + key { [ Redo ] }; + key { [ XF86Tools ] }; + key { [ XF86Launch5 ] }; + key { [ XF86Launch6 ] }; + key { [ XF86Launch7 ] }; + key { [ XF86Launch8 ] }; + key { [ XF86Launch9 ] }; + key { [ XF86TouchpadToggle ] }; + key { [ XF86TouchpadOn ] }; + key { [ XF86TouchpadOff ] }; + key { [ Mode_switch ] }; + key { [ NoSymbol, Alt_L ] }; + key { [ NoSymbol, Meta_L ] }; + key { [ NoSymbol, Super_L ] }; + key { [ NoSymbol, Hyper_L ] }; + key { [ XF86AudioPlay ] }; + key { [ XF86AudioPause ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Launch4 ] }; + key { [ XF86LaunchB ] }; + key { [ XF86Suspend ] }; + key { [ XF86Close ] }; + key { [ XF86AudioPlay ] }; + key { [ XF86AudioForward ] }; + key { [ Print ] }; + key { [ XF86WebCam ] }; + key { [ XF86Mail ] }; + key { [ XF86Messenger ] }; + key { [ XF86Search ] }; + key { [ XF86Go ] }; + key { [ XF86Finance ] }; + key { [ XF86Game ] }; + key { [ XF86Shop ] }; + key { [ Cancel ] }; + key { [ XF86MonBrightnessDown ] }; + key { [ XF86MonBrightnessUp ] }; + key { [ XF86AudioMedia ] }; + key { [ XF86Display ] }; + key { [ XF86KbdLightOnOff ] }; + key { [ XF86KbdBrightnessDown ] }; + key { [ XF86KbdBrightnessUp ] }; + key { [ XF86Send ] }; + key { [ XF86Reply ] }; + key { [ XF86MailForward ] }; + key { [ XF86Save ] }; + key { [ XF86Documents ] }; + key { [ XF86Battery ] }; + key { [ XF86Bluetooth ] }; + key { [ XF86WLAN ] }; + modifier_map Control { }; + modifier_map Shift { }; + modifier_map Shift { }; + modifier_map Mod1 { }; + modifier_map Control { }; + modifier_map Mod2 { }; + modifier_map Mod5 { }; + modifier_map Control { }; + modifier_map Mod4 { }; + modifier_map Mod4 { }; + modifier_map Mod5 { }; + modifier_map Mod1 { }; + modifier_map Mod4 { }; + modifier_map Mod4 { }; +}; + +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/base b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/base new file mode 100644 index 0000000..5f02efa --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/base @@ -0,0 +1,1226 @@ +// DO NOT EDIT THIS FILE - IT WAS AUTOGENERATED BY merge.sh FROM rules/*.part +// +// Rules for resolving XKB components for use with XFree86 +// Copyright 1996 by Joseph Moss +// +// 2002 Modifier: Ivan Pascal The XFree86 Project +// + +// If you want non-latin layouts implicitly include the en_US layout +// uncomment lines below +//! $nonlatin = am ara ben bd bg bt by cs deva ge gh gr guj guru il \ +// in ir iku jp kan kh kr la lao lk mk mm mn mv mal ori pk \ +// ru scc sy syr tel th tj tam ua uz + +// PC models +! $pcmodels = pc101 pc102 pc104 pc105 + +// Microsoft models (using MS geometry) +! $msmodels = microsoft microsoft4000 microsoft7000 microsoftpro microsoftprousb microsoftprose + +// Nokia devices and keyboards +! $nokiamodels = nokiasu8w nokiarx44 nokiarx51 + +// PC geometries - they have special geometry but symbols are mostly pc105 +! $pcgeometries = latitude + +// TypeMatrix geometries +! $tmgeometries = tm2020 tm2030PS2 tm2030USB tm2030USB-102 tm2030USB-106 + +// Layouts that provide further specializations for the OLPC +! $olpclayouts = af am ara br ca es et fr it kh kz in mn np ru th tr us + +! $macbooks = macbook78 macbook79 +! $maclaptop = ibook powerbook macbook78 macbook79 +! $applealu = applealu_ansi applealu_iso applealu_jis +! $macs = macintosh macintosh_old ibook powerbook macbook78 macbook79 + +! $macvendorlayouts = ch de dk fi fr gb is it latam nl no pt se us + +! $azerty = be fr +! $qwertz = al cz de hr hu ro si sk + + +// all layouts with 3rd and 4th groups +! $threelevellayouts = al az \ + be br bt \ + ca ch cs cz \ + de dk \ + ee es \ + fi fo fr \ + gb gr \ + hu \ + ie ir is it \ + latam \ + lk lt \ + mn mt \ + nl no \ + pl pt \ + ro \ + se sk \ + tr \ + us \ + vn \ + za + +! $thinkpads = thinkpad thinkpad60 thinkpadz60 + +! $sun = sun_type6_jp sun_type6_usb sun_type6_euro_usb \ + sun_type6_jp_usb sun_type6_unix_usb sun_type7_jp_usb \ + sun_type7_usb sun_type7_euro_usb sun_type7_unix_usb + +! $sun_jp = sun_type6_jp sun_type6_jp_usb sun_type7_jp_usb + +// Sun Type_6_7 keyboards with custom layouts +! $sun_custom = ara be br ca ch cz de dk \ + ee es fi fr gb gr it jp \ + kr lt lv nl no pl pt ro \ + ru se sk tr tw ua us + +! $sun_var = sun_type6 sun_type6_suncompat sun_type6_de sun_type6_fr \ + sun_type7 sun_type7_suncompat suncompat + +! $sun_compat = sun_type6 sun_type6_suncompat sun_type7_suncompat suncompat + +! $htcdreamlayouts = us it de + +! $inetkbds = acer_c300 acer_ferrari4k acer_laptop \ + airkey \ + apple armada azonaRF2300 \ + benqx brother \ + btc5113rf btc9000 btc9000a btc9001ah btc5090 btc9019u \ + cherryblue cherrybluea cherryblueb \ + cherrycyboard cherrycmexpert \ + chicony chicony0108 chicony0420 chicony9885 \ + compalfl90 \ + compaqeak8 compaqik7 compaqik13 compaqik18 \ + creativedw7000 \ + cymotionlinux \ + dell dellm65 inspiron dellusbmm \ + emachines ennyah_dkb1008 evdev \ + genius geniuscomfy2 \ + gyration honeywell_euroboard \ + hp250x hp5xx hp500fa hpdv5 \ + hpi6 hpxe3gc hpxe3gf hpxe4xxx hpxt1000 hpzt11xx htcdream \ + ibm_spacesaver ipaq inspiron intel \ + logiaccess logicda logicink \ + logiex110 logiclx300 \ + logiinkse logiinkseusb logiitc logiik \ + logitech_base itouch logiultrax \ + logitech_g15 \ + logidinovo logidinovoedge \ + microsoft4000 microsoft7000 microsoftinet microsoftprousb microsoftprooem microsoftprose \ + microsoftoffice microsoftmult \ + mx1998 mx2500 mx2750 \ + oretec \ + pc105 \ + presario propeller \ + qtronix \ + rapidaccess rapidaccess2 thinkpad60 \ + samsung4500 samsung4510 \ + silvercrest \ + sk1300 sk2500 sk6200 sk7100 \ + sven sven303 symplon \ + toshiba_s3000 trust trustda \ + unitekkb1925 yahoo + +! $inetmediakbds = acer_ferrari4k acer_laptop btc5090 btc9019u cherryblueb \ + cherrybluea herrycyboard chicony042 compaqik13 compaqik18 \ + armada presario dellm65 inspiron dellusbmm diamond \ + ennyah_dkb1008 genius geniuscomfy2 hpi6 hpxe3gc hpxe3gf \ + hpxt1000 hpzt11xx hpdv5 hpxe4xxx hp5xx thinkpad60 ogitech_base \ + logidinovo logidinovoedge logitech_g15 mx1998 mx2500 mx2750 \ + microsoft4000 microsoft7000 microsoftprooem microsoftmult \ + propeller samsung4500 samsung4510 sk1300 sk2500 sk7100 \ + toshiba_s3000 trust trustda cymotionlinux silvercrest \ + emachines benqx unitekkb1925 creativedw7000 compalfl90 \ + pc105 a4techKB21 a4techKBS8 a4_rfkb23 asus_laptop btc6301urf \ + dexxa dtk2000 fscaa1667g geniuskb19e geniuscomfy latitude \ + microsoftpro precision_m scorpius sp_inet targa_v811 thinkpad \ + tm2030USB-102 tm2030USB-106 trust_slimline + +! $dvoraklayouts = br ca de ee es fr gb no pl se us + +! model = keycodes + amiga = amiga(de) + ataritt = ataritt(de) + empty = empty + $sun_jp = sun(type6_jp_usb) + $sun = sun(type6_usb) + pc98 = xfree98(pc98) + $applealu = macintosh(alukbd) + macintosh_hhk = macintosh(hhk) + macintosh_old = macintosh(old) + $macs = macintosh + thinkpadz60 = xfree86(thinkpadz60) + * = xfree86 + +! layout[1] = keycodes + $azerty = +aliases(azerty) + $qwertz = +aliases(qwertz) + * = +aliases(qwerty) + +! layout = keycodes + $azerty = +aliases(azerty) + $qwertz = +aliases(qwertz) + * = +aliases(qwerty) + +! option = keycodes + +! model layout = geometry + thinkpad us = thinkpad(us) + +! model = geometry + microsoftelite = microsoft(elite) + $msmodels = microsoft(natural) + dell101 = dell(dell101) + dellm65 = dell(dellm65) + latitude = dell(latitude) + flexpro = keytronic(FlexPro) + hp6000 = hp(omnibook) + hpmini110 = hp(mini110) + hpdv5 = hp(dv5) + omnikey101 = northgate(omnikey101) + sanwaskbkg3 = sanwa(sanwaskbkg3) + $pcmodels = pc(%m) + $pcgeometries = pc(%m) + everex = everex(STEPnote) + thinkpad = thinkpad(intl) + thinkpad60 = thinkpad(60) + thinkpadz60 = thinkpad(60) + $tmgeometries = typematrix(%m) + winbook = winbook(XP5) + pc98 = nec(pc98) + $applealu = macintosh(%m) + $macbooks = macintosh(%m) + $macs = macintosh(macintosh) + hhk = hhk(basic) + kinesis = kinesis(model100) + $nokiamodels = nokia(%m) + sun_type6_jp = sun(type6jp) + sun_type6_usb = sun(type6) + sun_type6_euro_usb = sun(type6tuv) + sun_type6_jp_usb = sun(type6jp) + sun_type6_unix_usb = sun(type6unix) + sun_type7_jp_usb = sun(type6jp) + sun_type7_usb = sun(type7) + sun_type7_euro_usb = sun(type7tuv) + sun_type7_unix_usb = sun(type7unix) + * = pc(pc104) + +! model layout variant = symbols + * ben basic = pc+in(ben) + * ben probhat = pc+in(ben_probhat) + * dev basic = pc+in(deva) + * dvorak $dvoraklayouts = pc+%v(dvorak) + * dvorak basic = pc+us(dvorak) + * dvorak pl_basic = pc+pl(dvorak) + * dvorak pl = pc+pl(dvorak_quotes) + * dvorak pl_altquotes = pc+pl(dvorak_altquotes) + * dzdwi basic = pc+bt(basic) + * fi basic = pc+fi(classic) + * ge azerty_tskapo = pc+fr(geo) + * guj basic = pc+in(guj) + * gur basic = pc+in(guru) + * ie laptop = pc+ie(basic) + * ie CloGaelachLaptop = pc+ie(CloGaelach) + * in urd = pc+in(urd-phonetic) + * iu basic = pc+ca(ike) + * lo basic = pc+la(basic) + * kan basic = pc+in(kan) + * mal basic = pc+in(mal) + * mal mlplusnum = pc+in(mal) + * ogham basic = pc+ie(ogam) + * ogham laptop = pc+ie(ogam) + * ogham is434 = pc+ie(ogam_is434) + * ogham is434laptop = pc+ie(ogam_is434) + * ori basic = pc+in(ori) + * ro de = pc+ro(winkeys) + * ro us = pc+ro(std) + * ro academic = pc+ro(std) + * ro std_comma = pc+ro(std) + * ro comma = pc+ro(basic) + * ru os = pc+ru(os_legacy) + * pk urd = pc+pk(urd-phonetic) + * sapmi basic = pc+no(smi) + * sapmi nodeadkeys = pc+no(smi_nodeadkeys) + * sapmi sefi = pc+fi(smi) + * sin phonetic-static = pc+in(sin_phonetic) + * syr basic = pc+sy(syc) + * syr phonetic = pc+sy(syc_phonetic) + * tam INSCRIPT = pc+in(tam) + * tam UNI = pc+in(tam_unicode) + * tam NUMERAL-KEYBOARD = pc+in(tam_keyboard_with_numerals) + * tam TAB = pc+in(tam_TAB) + * tam TSCII = pc+in(tam_TSCII) + * tel basic = pc+in(tel) + * yu basic = pc+srp(latin) + * yu unicode = pc+srp(latinunicode) + * yu yz = pc+srp(latinyz) + * yu unicodeyz = pc+srp(latinunicodeyz) + classmate us intl = pc+us(classmate-intl) + classmate us alt-intl = pc+us(classmate-alt-intl) + classmate us altgr-intl = pc+us(classmate-altgr-intl) + nokiarx51 cz qwerty = nokia_vndr/rx-51(cz_qwerty) + * $sun_custom $sun_var = pc+sun_vndr/%l%(v) + +! model layout = symbols + * ar = pc+ara + * ben = pc+in(ben) + * bs = pc+ba + * cs = pc+rs + * cz_qwerty = pc+cz(qwerty) + * dev = pc+in(deva) + * dvorak = pc+us(dvorak) + * dzdwi = pc+bt + * el = pc+gr + * en_US = pc+latin + * guj = pc+in(guj) + * gur = pc+in(guru) + * iu = pc+ca(ike) + * lo = pc+la + * kan = pc+in(kan) + * mi = pc+mao + * ogham = pc+ie(ogam) + * ori = pc+ie(ori) + * sapmi = pc+no(smi) + * sr = pc+srp + * syr = pc+sy(syc) + * tel = pc+in(tel) + * tml = pc+in(tam) + * yu = pc+srp + * fr-latin9 = pc+fr(latin9) + * us_intl = pc+us(alt-intl) + * ben(basic) = pc+in(ben) + * ben(probhat) = pc+in(ben_probhat) + * dev(basic) = pc+in(deva) + * dvorak($dvoraklayouts) = pc+%v(dvorak) + * dvorak(basic) = pc+us(dvorak) + * dvorak(pl_basic) = pc+pl(dvorak) + * dvorak(pl) = pc+pl(dvorak_quotes) + * dvorak(pl_altquotes) = pc+pl(dvorak_altquotes) + * dzdwi(basic) = pc+bt(basic) + * fi(basic) = pc+fi(classic) + * ge(azerty_tskapo) = pc+fr(geo) + * guj(basic) = pc+in(guj) + * gur(basic) = pc+in(guru) + * ie(laptop) = pc+ie(basic) + * ie(CloGaelachLaptop) = pc+ie(CloGaelach) + * in(urd) = pc+in(urd-phonetic) + * iu(basic) = pc+ca(ike) + * lo(basic) = pc+la(basic) + * kan(basic) = pc+in(kan) + * mal(basic) = pc+in(mal) + * mal(mlplusnum) = pc+in(mal) + * ogham(basic) = pc+ie(ogam) + * ogham(laptop) = pc+ie(ogam) + * ogham(is434) = pc+ie(ogam_is434) + * ogham(is434laptop) = pc+ie(ogam_is434) + * ori(basic) = pc+in(ori) + * ro(de) = pc+ro(winkeys) + * ro(us) = pc+ro(std) + * ro(academic) = pc+ro(std) + * ro(std_comma) = pc+ro(std) + * ro(comma) = pc+ro(basic) + * ru(os) = pc+ru(os_legacy) + * pk(urd) = pc+pk(urd-phonetic) + * sapmi(basic) = pc+no(smi) + * sapmi(nodeadkeys) = pc+no(smi_nodeadkeys) + * sapmi(sefi) = pc+fi(smi) + * sin(phonetic-static) = pc+in(sin_phonetic) + * syr(basic) = pc+sy(syc) + * syr(phonetic) = pc+sy(syc_phonetic) + * tam(INSCRIPT) = pc+in(tam) + * tam(UNI) = pc+in(tam_unicode) + * tam(NUMERAL-KEYBOARD) = pc+in(tam_keyboard_with_numerals) + * tam(TAB) = pc+in(tam_TAB) + * tam(TSCII) = pc+in(tam_TSCII) + * tel(basic) = pc+in(tel) + * yu(basic) = pc+srp(latin) + * yu(unicode) = pc+srp(latinunicode) + * yu(yz) = pc+srp(latinyz) + * yu(unicodeyz) = pc+srp(latinunicodeyz) + ataritt $nonlatin = xfree68_vndr/ataritt(us)+%l%(v):2 + ataritt * = xfree68_vndr/ataritt(us)+%l%(v) + amiga $nonlatin = xfree68_vndr/amiga(usa1)+%l%(v):2 + amiga * = xfree68_vndr/amiga(usa1)+%l%(v) + classmate us = pc+%l(classmate) + empty * = empty(basic) + * empty = empty(basic) + $sun $sun_custom = pc+sun_vndr/%l%(v) + pc98 nec_vndr/jp = nec_vndr/jp(pc98) + macintosh_old us = macintosh_vndr/us(oldmac) + macintosh_old en_US = macintosh_vndr/us(oldmac) + macintosh_old $macvendorlayouts = macintosh_vndr/us(oldmac)+macintosh_vndr/%l%(v) + macintosh_old $nonlatin = macintosh_vndr/us(oldmac)+%l%(v):2 + macintosh_old * = macintosh_vndr/us(oldmac)+%l%(v) + applealu_jis jp = macintosh_vndr/apple(alukbd)+macintosh_vndr/jp(usmac)+macintosh_vndr/jp(mac):2 + applealu_jis * = macintosh_vndr/apple(alukbd)+%l%(v)+macintosh_vndr/jp(mac):2 + $applealu $macvendorlayouts = macintosh_vndr/apple(alukbd)+macintosh_vndr/%l%(v) + $applealu * = macintosh_vndr/apple(alukbd)+%l%(v) + $macs en_US = pc+macintosh_vndr/us(extended) + $macs $macvendorlayouts = pc+macintosh_vndr/%l%(v) + nokiarx44 * = nokia_vndr/rx-44(%l) + nokiarx51 cz(qwerty) = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(cz_qwerty) + nokiarx51 * = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(%l%_v) + nokiasu8w * = nokia_vndr/su-8w(%l) + olpc $olpclayouts = olpc+%l%(m) + olpc * = olpc+%l%(v) + olpcm $olpclayouts = olpc+%l%(m) + olpcm * = olpc+%l%(v) + $thinkpads br = pc+br(thinkpad) + sl-c3x00 * = pc+sharp_vndr/sl-c3x00(basic) + ws003sh * = pc+sharp_vndr/ws003sh(basic) + ws007sh * = pc+sharp_vndr/ws007sh(basic) + ws011sh * = pc+sharp_vndr/ws011sh(basic) + ws020sh * = pc+sharp_vndr/ws020sh(basic) + htcdream $htcdreamlayouts = %l(htcdream) + * $nonlatin = pc+us+%l%(v):2 + * * = pc+%l%(v) + +! model layout[1] = symbols + * ar = pc+ara%(v[1]) + * ben = pc+in(ben) + * bs = pc+ba%(v[1]) + * cs = pc+rs%(v[1]) + * cz_qwerty = pc+cz(qwerty) + * dev = pc+in(deva) + * dvorak = pc+us(dvorak) + * dzdwi = pc+bt%(v[1]) + * el = pc+gr%(v[1]) + * en_US = pc+latin%(v[1]) + * guj = pc+in(guj) + * gur = pc+in(guru) + * iu = pc+ca(ike) + * lo = pc+la%(v[1]) + * kan = pc+in(kan) + * mi = pc+mao%(v[1]) + * ogham = pc+ie(ogam) + * ori = pc+ie(ori) + * sapmi = pc+no(smi) + * sr = pc+srp%(v[1]) + * syr = pc+sy(syc) + * tel = pc+in(tel) + * tml = pc+in(tam) + * yu = pc+srp%(v[1]) + * fr-latin9 = pc+fr(latin9) + * us_intl = pc+us(alt-intl) + * ben(basic) = pc+in(ben) + * ben(probhat) = pc+in(ben_probhat) + * dev(basic) = pc+in(deva) + * dvorak($dvoraklayouts) = pc+%v(dvorak) + * dvorak(basic) = pc+us(dvorak) + * dvorak(pl_basic) = pc+pl(dvorak) + * dvorak(pl) = pc+pl(dvorak_quotes) + * dvorak(pl_altquotes) = pc+pl(dvorak_altquotes) + * dzdwi(basic) = pc+bt(basic) + * fi(basic) = pc+fi(classic) + * ge(azerty_tskapo) = pc+fr(geo) + * guj(basic) = pc+in(guj) + * gur(basic) = pc+in(guru) + * ie(laptop) = pc+ie(basic) + * ie(CloGaelachLaptop) = pc+ie(CloGaelach) + * in(urd) = pc+in(urd-phonetic) + * iu(basic) = pc+ca(ike) + * lo(basic) = pc+la(basic) + * kan(basic) = pc+in(kan) + * mal(basic) = pc+in(mal) + * mal(mlplusnum) = pc+in(mal) + * ogham(basic) = pc+ie(ogam) + * ogham(laptop) = pc+ie(ogam) + * ogham(is434) = pc+ie(ogam_is434) + * ogham(is434laptop) = pc+ie(ogam_is434) + * ori(basic) = pc+in(ori) + * ro(de) = pc+ro(winkeys) + * ro(us) = pc+ro(std) + * ro(academic) = pc+ro(std) + * ro(std_comma) = pc+ro(std) + * ro(comma) = pc+ro(basic) + * ru(os) = pc+ru(os_legacy) + * pk(urd) = pc+pk(urd-phonetic) + * sapmi(basic) = pc+no(smi) + * sapmi(nodeadkeys) = pc+no(smi_nodeadkeys) + * sapmi(sefi) = pc+fi(smi) + * sin(phonetic-static) = pc+in(sin_phonetic) + * syr(basic) = pc+sy(syc) + * syr(phonetic) = pc+sy(syc_phonetic) + * tam(INSCRIPT) = pc+in(tam) + * tam(UNI) = pc+in(tam_unicode) + * tam(NUMERAL-KEYBOARD) = pc+in(tam_keyboard_with_numerals) + * tam(TAB) = pc+in(tam_TAB) + * tam(TSCII) = pc+in(tam_TSCII) + * tel(basic) = pc+in(tel) + * yu(basic) = pc+srp(latin) + * yu(unicode) = pc+srp(latinunicode) + * yu(yz) = pc+srp(latinyz) + * yu(unicodeyz) = pc+srp(latinunicodeyz) + ataritt * = xfree68_vndr/ataritt(us)+%l[1]%(v[1]) + amiga * = xfree68_vndr/amiga(usa1)+%l[1]%(v[1]) + $sun $sun_custom = pc+sun_vndr/%l[1]%(v[1]) + macintosh_old us = macintosh_vndr/us(oldmac) + macintosh_old $macvendorlayouts = macintosh_vndr/us(oldmac)+macintosh_vndr/%l[1]%(v[1]) + macintosh_old * = macintosh_vndr/us(oldmac)+%l[1]%(v[1]) + applealu_jis us = macintosh_vndr/apple(alukbd)+macintosh_vndr/jp(usmac) + $applealu $macvendorlayouts = macintosh_vndr/apple(alukbd)+macintosh_vndr/%l[1]%(v[1]) + $applealu * = macintosh_vndr/apple(alukbd)+%l[1]%(v[1]) + $macs $macvendorlayouts = pc+macintosh_vndr/%l[1]%(v[1]) + nokiarx51 cz(qwerty) = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(cz_qwerty) + nokiarx51 * = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(%l[1]%_v[1]) + $thinkpads br = pc+%l[1](thinkpad) + * * = pc+%l[1]%(v[1]) + +! model layout[1] variant[1] = symbols + * ben basic = pc+in(ben) + * ben probhat = pc+in(ben_probhat) + * dev basic = pc+in(deva) + * dvorak $dvoraklayouts = pc+%v(dvorak) + * dvorak basic = pc+us(dvorak) + * dvorak pl_basic = pc+pl(dvorak) + * dvorak pl = pc+pl(dvorak_quotes) + * dvorak pl_altquotes = pc+pl(dvorak_altquotes) + * dzdwi basic = pc+bt(basic) + * fi basic = pc+fi(classic) + * ge azerty_tskapo = pc+fr(geo) + * guj basic = pc+in(guj) + * gur basic = pc+in(guru) + * ie laptop = pc+ie(basic) + * ie CloGaelachLaptop = pc+ie(CloGaelach) + * in urd = pc+in(urd-phonetic) + * iu basic = pc+ca(ike) + * lo basic = pc+la(basic) + * kan basic = pc+in(kan) + * mal basic = pc+in(mal) + * mal mlplusnum = pc+in(mal) + * ogham basic = pc+ie(ogam) + * ogham laptop = pc+ie(ogam) + * ogham is434 = pc+ie(ogam_is434) + * ogham is434laptop = pc+ie(ogam_is434) + * ori basic = pc+in(ori) + * ro de = pc+ro(winkeys) + * ro us = pc+ro(std) + * ro academic = pc+ro(std) + * ro std_comma = pc+ro(std) + * ro comma = pc+ro(basic) + * ru os = pc+ru(os_legacy) + * pk urd = pc+pk(urd-phonetic) + * sapmi basic = pc+no(smi) + * sapmi nodeadkeys = pc+no(smi_nodeadkeys) + * sapmi sefi = pc+fi(smi) + * sin phonetic-static = pc+in(sin_phonetic) + * syr basic = pc+sy(syc) + * syr phonetic = pc+sy(syc_phonetic) + * tam INSCRIPT = pc+in(tam) + * tam UNI = pc+in(tam_unicode) + * tam NUMERAL-KEYBOARD = pc+in(tam_keyboard_with_numerals) + * tam TAB = pc+in(tam_TAB) + * tam TSCII = pc+in(tam_TSCII) + * tel basic = pc+in(tel) + * yu basic = pc+srp(latin) + * yu unicode = pc+srp(latinunicode) + * yu yz = pc+srp(latinyz) + * yu unicodeyz = pc+srp(latinunicodeyz) + +! model layout[2] = symbols + * ar = +ara%(v[2]):2 + * ben = +in(ben):2 + * bs = +ba%(v[2]):2 + * cs = +rs%(v[2]):2 + * cz_qwerty = +cz(qwerty):2 + * dev = +in(deva):2 + * dvorak = +us(dvorak):2 + * dzdwi = +bt%(v[2]):2 + * el = +gr%(v[2]):2 + * en_US = +latin%(v[2]):2 + * guj = +in(guj):2 + * gur = +in(guru):2 + * iu = +ca(ike):2 + * lo = +la%(v[2]):2 + * kan = +in(kan):2 + * mi = +mao%(v[2]):2 + * ogham = +ie(ogam):2 + * ori = +ie(ori):2 + * sapmi = +no(smi):2 + * sr = +srp%(v[2]):2 + * syr = +sy(syc):2 + * tel = +in(tel):2 + * tml = +in(tam):2 + * yu = +srp%(v[2]):2 + * fr-latin9 = +fr(latin9):2 + * us_intl = +us(alt-intl):2 + * ben(basic) = +in(ben):2 + * ben(probhat) = +in(ben_probhat):2 + * dev(basic) = +in(deva):2 + * dvorak($dvoraklayouts) = +%v(dvorak):2 + * dvorak(basic) = +us(dvorak):2 + * dvorak(pl_basic) = +pl(dvorak):2 + * dvorak(pl) = +pl(dvorak_quotes):2 + * dvorak(pl_altquotes) = +pl(dvorak_altquotes):2 + * dzdwi(basic) = +bt(basic):2 + * fi(basic) = +fi(classic):2 + * ge(azerty_tskapo) = +fr(geo):2 + * guj(basic) = +in(guj):2 + * gur(basic) = +in(guru):2 + * ie(laptop) = +ie(basic):2 + * ie(CloGaelachLaptop) = +ie(CloGaelach):2 + * in(urd) = +in(urd-phonetic):2 + * iu(basic) = +ca(ike):2 + * lo(basic) = +la(basic):2 + * kan(basic) = +in(kan):2 + * mal(basic) = +in(mal):2 + * mal(mlplusnum) = +in(mal):2 + * ogham(basic) = +ie(ogam):2 + * ogham(laptop) = +ie(ogam):2 + * ogham(is434) = +ie(ogam_is434):2 + * ogham(is434laptop) = +ie(ogam_is434):2 + * ori(basic) = +in(ori):2 + * ro(de) = +ro(winkeys):2 + * ro(us) = +ro(std):2 + * ro(academic) = +ro(std):2 + * ro(std_comma) = +ro(std):2 + * ro(comma) = +ro(basic):2 + * ru(os) = +ru(os_legacy):2 + * pk(urd) = +pk(urd-phonetic):2 + * sapmi(basic) = +no(smi):2 + * sapmi(nodeadkeys) = +no(smi_nodeadkeys):2 + * sapmi(sefi) = +fi(smi):2 + * sin(phonetic-static) = +in(sin_phonetic):2 + * syr(basic) = +sy(syc):2 + * syr(phonetic) = +sy(syc_phonetic):2 + * tam(INSCRIPT) = +in(tam):2 + * tam(UNI) = +in(tam_unicode):2 + * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):2 + * tam(TAB) = +in(tam_TAB):2 + * tam(TSCII) = +in(tam_TSCII):2 + * tel(basic) = +in(tel):2 + * yu(basic) = +srp(latin):2 + * yu(unicode) = +srp(latinunicode):2 + * yu(yz) = +srp(latinyz):2 + * yu(unicodeyz) = +srp(latinunicodeyz):2 + nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):2 + nokiarx51 * = +nokia_vndr/rx-51(%l[2]%_v[2]):2 + $sun $sun_custom = +sun_vndr/%l[2]%(v[2]):2 + * * = +%l[2]%(v[2]):2 + +! model layout[3] = symbols + * ar = +ara%(v[3]):3 + * ben = +in(ben):3 + * bs = +ba%(v[3]):3 + * cs = +rs%(v[3]):3 + * cz_qwerty = +cz(qwerty):3 + * dev = +in(deva):3 + * dvorak = +us(dvorak):3 + * dzdwi = +bt%(v[3]):3 + * el = +gr%(v[3]):3 + * en_US = +latin%(v[3]):3 + * guj = +in(guj):3 + * gur = +in(guru):3 + * iu = +ca(ike):3 + * lo = +la%(v[3]):3 + * kan = +in(kan):3 + * mi = +mao%(v[3]):3 + * ogham = +ie(ogam):3 + * ori = +ie(ori):3 + * sapmi = +no(smi):3 + * sr = +srp%(v[3]):3 + * syr = +sy(syc):3 + * tel = +in(tel):3 + * tml = +in(tam):3 + * yu = +srp%(v[3]):3 + * fr-latin9 = +fr(latin9):3 + * us_intl = +us(alt-intl):3 + * ben(basic) = +in(ben):3 + * ben(probhat) = +in(ben_probhat):3 + * dev(basic) = +in(deva):3 + * dvorak($dvoraklayouts) = +%v(dvorak):3 + * dvorak(basic) = +us(dvorak):3 + * dvorak(pl_basic) = +pl(dvorak):3 + * dvorak(pl) = +pl(dvorak_quotes):3 + * dvorak(pl_altquotes) = +pl(dvorak_altquotes):3 + * dzdwi(basic) = +bt(basic):3 + * fi(basic) = +fi(classic):3 + * ge(azerty_tskapo) = +fr(geo):3 + * guj(basic) = +in(guj):3 + * gur(basic) = +in(guru):3 + * ie(laptop) = +ie(basic):3 + * ie(CloGaelachLaptop) = +ie(CloGaelach):3 + * in(urd) = +in(urd-phonetic):3 + * iu(basic) = +ca(ike):3 + * lo(basic) = +la(basic):3 + * kan(basic) = +in(kan):3 + * mal(basic) = +in(mal):3 + * mal(mlplusnum) = +in(mal):3 + * ogham(basic) = +ie(ogam):3 + * ogham(laptop) = +ie(ogam):3 + * ogham(is434) = +ie(ogam_is434):3 + * ogham(is434laptop) = +ie(ogam_is434):3 + * ori(basic) = +in(ori):3 + * ro(de) = +ro(winkeys):3 + * ro(us) = +ro(std):3 + * ro(academic) = +ro(std):3 + * ro(std_comma) = +ro(std):3 + * ro(comma) = +ro(basic):3 + * ru(os) = +ru(os_legacy):3 + * pk(urd) = +pk(urd-phonetic):3 + * sapmi(basic) = +no(smi):3 + * sapmi(nodeadkeys) = +no(smi_nodeadkeys):3 + * sapmi(sefi) = +fi(smi):3 + * sin(phonetic-static) = +in(sin_phonetic):3 + * syr(basic) = +sy(syc):3 + * syr(phonetic) = +sy(syc_phonetic):3 + * tam(INSCRIPT) = +in(tam):3 + * tam(UNI) = +in(tam_unicode):3 + * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):3 + * tam(TAB) = +in(tam_TAB):3 + * tam(TSCII) = +in(tam_TSCII):3 + * tel(basic) = +in(tel):3 + * yu(basic) = +srp(latin):3 + * yu(unicode) = +srp(latinunicode):3 + * yu(yz) = +srp(latinyz):3 + * yu(unicodeyz) = +srp(latinunicodeyz):3 + nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):3 + nokiarx51 * = +nokia_vndr/rx-51(%l[3]%_v[3]):3 + $sun $sun_custom = +sun_vndr/%l[3]%(v[3]):3 + * * = +%l[3]%(v[3]):3 + +! model layout[4] = symbols + * ar = +ara%(v[4]):4 + * ben = +in(ben):4 + * bs = +ba%(v[4]):4 + * cs = +rs%(v[4]):4 + * cz_qwerty = +cz(qwerty):4 + * dev = +in(deva):4 + * dvorak = +us(dvorak):4 + * dzdwi = +bt%(v[4]):4 + * el = +gr%(v[4]):4 + * en_US = +latin%(v[4]):4 + * guj = +in(guj):4 + * gur = +in(guru):4 + * iu = +ca(ike):4 + * lo = +la%(v[4]):4 + * kan = +in(kan):4 + * mi = +mao%(v[4]):4 + * ogham = +ie(ogam):4 + * ori = +ie(ori):4 + * sapmi = +no(smi):4 + * sr = +srp%(v[4]):4 + * syr = +sy(syc):4 + * tel = +in(tel):4 + * tml = +in(tam):4 + * yu = +srp%(v[4]):4 + * fr-latin9 = +fr(latin9):4 + * us_intl = +us(alt-intl):4 + * ben(basic) = +in(ben):4 + * ben(probhat) = +in(ben_probhat):4 + * dev(basic) = +in(deva):4 + * dvorak($dvoraklayouts) = +%v(dvorak):4 + * dvorak(basic) = +us(dvorak):4 + * dvorak(pl_basic) = +pl(dvorak):4 + * dvorak(pl) = +pl(dvorak_quotes):4 + * dvorak(pl_altquotes) = +pl(dvorak_altquotes):4 + * dzdwi(basic) = +bt(basic):4 + * fi(basic) = +fi(classic):4 + * ge(azerty_tskapo) = +fr(geo):4 + * guj(basic) = +in(guj):4 + * gur(basic) = +in(guru):4 + * ie(laptop) = +ie(basic):4 + * ie(CloGaelachLaptop) = +ie(CloGaelach):4 + * in(urd) = +in(urd-phonetic):4 + * iu(basic) = +ca(ike):4 + * lo(basic) = +la(basic):4 + * kan(basic) = +in(kan):4 + * mal(basic) = +in(mal):4 + * mal(mlplusnum) = +in(mal):4 + * ogham(basic) = +ie(ogam):4 + * ogham(laptop) = +ie(ogam):4 + * ogham(is434) = +ie(ogam_is434):4 + * ogham(is434laptop) = +ie(ogam_is434):4 + * ori(basic) = +in(ori):4 + * ro(de) = +ro(winkeys):4 + * ro(us) = +ro(std):4 + * ro(academic) = +ro(std):4 + * ro(std_comma) = +ro(std):4 + * ro(comma) = +ro(basic):4 + * ru(os) = +ru(os_legacy):4 + * pk(urd) = +pk(urd-phonetic):4 + * sapmi(basic) = +no(smi):4 + * sapmi(nodeadkeys) = +no(smi_nodeadkeys):4 + * sapmi(sefi) = +fi(smi):4 + * sin(phonetic-static) = +in(sin_phonetic):4 + * syr(basic) = +sy(syc):4 + * syr(phonetic) = +sy(syc_phonetic):4 + * tam(INSCRIPT) = +in(tam):4 + * tam(UNI) = +in(tam_unicode):4 + * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):4 + * tam(TAB) = +in(tam_TAB):4 + * tam(TSCII) = +in(tam_TSCII):4 + * tel(basic) = +in(tel):4 + * yu(basic) = +srp(latin):4 + * yu(unicode) = +srp(latinunicode):4 + * yu(yz) = +srp(latinyz):4 + * yu(unicodeyz) = +srp(latinunicodeyz):4 + nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):4 + nokiarx51 * = +nokia_vndr/rx-51(%l[4]%_v[4]):4 + $sun $sun_custom = +sun_vndr/%l[4]%(v[4]):4 + * * = +%l[4]%(v[4]):4 + +! model layout[2] variant[2] = symbols + * ben basic = +in(ben):2 + * ben probhat = +in(ben_probhat):2 + * dev basic = +in(deva):2 + * dvorak $dvoraklayouts = +%v(dvorak):2 + * dvorak basic = +us(dvorak):2 + * dvorak pl_basic = +pl(dvorak):2 + * dvorak pl = +pl(dvorak_quotes):2 + * dvorak pl_altquotes = +pl(dvorak_altquotes):2 + * dzdwi basic = +bt(basic):2 + * fi basic = +fi(classic):2 + * ge azerty_tskapo = +fr(geo):2 + * guj basic = +in(guj):2 + * gur basic = +in(guru):2 + * ie laptop = +ie(basic):2 + * ie CloGaelachLaptop = +ie(CloGaelach):2 + * in urd = +in(urd-phonetic):2 + * iu basic = +ca(ike):2 + * lo basic = +la(basic):2 + * kan basic = +in(kan):2 + * mal basic = +in(mal):2 + * mal mlplusnum = +in(mal):2 + * ogham basic = +ie(ogam):2 + * ogham laptop = +ie(ogam):2 + * ogham is434 = +ie(ogam_is434):2 + * ogham is434laptop = +ie(ogam_is434):2 + * ori basic = +in(ori):2 + * ro de = +ro(winkeys):2 + * ro us = +ro(std):2 + * ro academic = +ro(std):2 + * ro std_comma = +ro(std):2 + * ro comma = +ro(basic):2 + * ru os = +ru(os_legacy):2 + * pk urd = +pk(urd-phonetic):2 + * sapmi basic = +no(smi):2 + * sapmi nodeadkeys = +no(smi_nodeadkeys):2 + * sapmi sefi = +fi(smi):2 + * sin phonetic-static = +in(sin_phonetic):2 + * syr basic = +sy(syc):2 + * syr phonetic = +sy(syc_phonetic):2 + * tam INSCRIPT = +in(tam):2 + * tam UNI = +in(tam_unicode):2 + * tam NUMERAL-KEYBOARD = +in(tam_keyboard_with_numerals):2 + * tam TAB = +in(tam_TAB):2 + * tam TSCII = +in(tam_TSCII):2 + * tel basic = +in(tel):2 + * yu basic = +srp(latin):2 + * yu unicode = +srp(latinunicode):2 + * yu yz = +srp(latinyz):2 + * yu unicodeyz = +srp(latinunicodeyz):2 + +! model layout[3] variant[3] = symbols + * ben basic = +in(ben):3 + * ben probhat = +in(ben_probhat):3 + * dev basic = +in(deva):3 + * dvorak $dvoraklayouts = +%v(dvorak):3 + * dvorak basic = +us(dvorak):3 + * dvorak pl_basic = +pl(dvorak):3 + * dvorak pl = +pl(dvorak_quotes):3 + * dvorak pl_altquotes = +pl(dvorak_altquotes):3 + * dzdwi basic = +bt(basic):3 + * fi basic = +fi(classic):3 + * ge azerty_tskapo = +fr(geo):3 + * guj basic = +in(guj):3 + * gur basic = +in(guru):3 + * ie laptop = +ie(basic):3 + * ie CloGaelachLaptop = +ie(CloGaelach):3 + * in urd = +in(urd-phonetic):3 + * iu basic = +ca(ike):3 + * lo basic = +la(basic):3 + * kan basic = +in(kan):3 + * mal basic = +in(mal):3 + * mal mlplusnum = +in(mal):3 + * ogham basic = +ie(ogam):3 + * ogham laptop = +ie(ogam):3 + * ogham is434 = +ie(ogam_is434):3 + * ogham is434laptop = +ie(ogam_is434):3 + * ori basic = +in(ori):3 + * ro de = +ro(winkeys):3 + * ro us = +ro(std):3 + * ro academic = +ro(std):3 + * ro std_comma = +ro(std):3 + * ro comma = +ro(basic):3 + * ru os = +ru(os_legacy):3 + * pk urd = +pk(urd-phonetic):3 + * sapmi basic = +no(smi):3 + * sapmi nodeadkeys = +no(smi_nodeadkeys):3 + * sapmi sefi = +fi(smi):3 + * sin phonetic-static = +in(sin_phonetic):3 + * syr basic = +sy(syc):3 + * syr phonetic = +sy(syc_phonetic):3 + * tam INSCRIPT = +in(tam):3 + * tam UNI = +in(tam_unicode):3 + * tam NUMERAL-KEYBOARD = +in(tam_keyboard_with_numerals):3 + * tam TAB = +in(tam_TAB):3 + * tam TSCII = +in(tam_TSCII):3 + * tel basic = +in(tel):3 + * yu basic = +srp(latin):3 + * yu unicode = +srp(latinunicode):3 + * yu yz = +srp(latinyz):3 + * yu unicodeyz = +srp(latinunicodeyz):3 + +! model layout[4] variant[4] = symbols + * ben basic = +in(ben):4 + * ben probhat = +in(ben_probhat):4 + * dev basic = +in(deva):4 + * dvorak $dvoraklayouts = +%v(dvorak):4 + * dvorak basic = +us(dvorak):4 + * dvorak pl_basic = +pl(dvorak):4 + * dvorak pl = +pl(dvorak_quotes):4 + * dvorak pl_altquotes = +pl(dvorak_altquotes):4 + * dzdwi basic = +bt(basic):4 + * fi basic = +fi(classic):4 + * ge azerty_tskapo = +fr(geo):4 + * guj basic = +in(guj):4 + * gur basic = +in(guru):4 + * ie laptop = +ie(basic):4 + * ie CloGaelachLaptop = +ie(CloGaelach):4 + * in urd = +in(urd-phonetic):4 + * iu basic = +ca(ike):4 + * lo basic = +la(basic):4 + * kan basic = +in(kan):4 + * mal basic = +in(mal):4 + * mal mlplusnum = +in(mal):4 + * ogham basic = +ie(ogam):4 + * ogham laptop = +ie(ogam):4 + * ogham is434 = +ie(ogam_is434):4 + * ogham is434laptop = +ie(ogam_is434):4 + * ori basic = +in(ori):4 + * ro de = +ro(winkeys):4 + * ro us = +ro(std):4 + * ro academic = +ro(std):4 + * ro std_comma = +ro(std):4 + * ro comma = +ro(basic):4 + * ru os = +ru(os_legacy):4 + * pk urd = +pk(urd-phonetic):4 + * sapmi basic = +no(smi):4 + * sapmi nodeadkeys = +no(smi_nodeadkeys):4 + * sapmi sefi = +fi(smi):4 + * sin phonetic-static = +in(sin_phonetic):4 + * syr basic = +sy(syc):4 + * syr phonetic = +sy(syc_phonetic):4 + * tam INSCRIPT = +in(tam):4 + * tam UNI = +in(tam_unicode):4 + * tam NUMERAL-KEYBOARD = +in(tam_keyboard_with_numerals):4 + * tam TAB = +in(tam_TAB):4 + * tam TSCII = +in(tam_TSCII):4 + * tel basic = +in(tel):4 + * yu basic = +srp(latin):4 + * yu unicode = +srp(latinunicode):4 + * yu yz = +srp(latinyz):4 + * yu unicodeyz = +srp(latinunicodeyz):4 + +! model = symbols + a4techKB21 = +inet(media_nav_common) + a4techKBS8 = +inet(media_nav_acpi_common) + a4_rfkb23 = +inet(media_nav_acpi_common) + asus_laptop = +inet(media_common) + acer_tm_800 = +inet(acer_laptop) + benqx730 = +inet(benqx) + benqx800 = +inet(benqx) + btc5126t = +inet(nav_acpi_common) + btc9116u = +inet(btc9019u) + btc6301urf = +inet(media_nav_acpi_common) + dellsk8125 = +inet(dell) + dellsk8135 = +inet(dell) + cherrybunlim = +inet(nav_common) + dexxa = +inet(media_nav_common) + dtk2000 = +inet(media_nav_acpi_common) + fscaa1667g = +inet(media_nav_common) + geniuskb19e = +inet(media_nav_acpi_common) + geniuscomfy = +inet(media_nav_acpi_common) + geniuskkb2050hs = +inet(dellusbmm) + hpnx9020 = +inet(hpi6) + latitude = +inet(media_common) + logicd = +inet(logitech_base) + logicd_it = +inet(logitech_base) + logicd_nav = +inet(logitech_base) + logicd_opt = +inet(logitech_base) + logiultrax = +inet(logitech_base) + logiclx300 = +inet(logiex110) + logii350 = +inet(logiex110) + logimel = +inet(logiex110) + logicdit = +inet(logicd) + logicdo = +inet(logicd) + logicdp = +inet(logicd) + logicdpa = +inet(logicda) + logiciink = +inet(logicink) + ltcd = +inet(logicda) + microsoftccurve2k = +inet(microsoftprooem) + microsoftpro = +inet(media_nav_acpi_common) + precision_m = +inet(media_nav_common) + scorpius = +inet(media_nav_acpi_common) + sp_inet = +inet(media_nav_acpi_common) + targa_v811 = +inet(media_nav_acpi_common) + thinkpad = +inet(media_nav_common) + thinkpadz60 = +inet(thinkpad60) + tm2030USB-102 = +inet(media_nav_acpi_common) + tm2030USB-106 = +inet(media_nav_acpi_common) + trust_slimline = +inet(media_nav_acpi_common) + vsonku306 = +inet(microsoftprooem) + $inetkbds = +inet(%m) + $maclaptop = +inet(apple)+level3(enter_switch) + $applealu = +inet(apple) + $macs = +inet(apple) + sun_type7_jp_usb = +sun_vndr/solaris(defaults_type7jp) + $sun = +sun_vndr/solaris(defaults) + +! model layout = symbols + $inetmediakbds jp = +jp(henkan) + +! layout variant = compat + de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de adnw = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + jp $sun_compat = complete+japan(kana_lock) + +! layout[1] variant[1] = compat + de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de adnw = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + jp $sun_compat = complete+japan(kana_lock) + +! layout[2] variant[2] = compat + de neo = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de adnw = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + jp $sun_compat = +complete+japan(kana_lock):2 + +! layout[3] variant[3] = compat + de neo = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de adnw = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + jp $sun_compat = +complete+japan(kana_lock):3 + +! layout[4] variant[4] = compat + de neo = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de adnw = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + jp $sun_compat = +complete+japan(kana_lock):4 + +! model layout = compat + pc98 nec_vndr/jp = pc98(basic) + * jp = complete+japan + olpc * = olpc + olpcm * = olpc + * * = complete + +! model layout[1] = compat + * * = complete + +! model = types + $macs = complete+numpad(mac) + $applealu = complete+numpad(mac) + $nokiamodels = complete+nokia + * = complete + +! layout option = symbols + $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle) + * misc:typo = +typo(base) + +! layout[1] option = symbols + $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):1 + * misc:typo = +typo(base):1 + +! layout[2] option = symbols + $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):2 + * misc:typo = +typo(base):2 + +! layout[3] option = symbols + $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):3 + * misc:typo = +typo(base):3 + +! layout[4] option = symbols + $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):4 + * misc:typo = +typo(base):4 + +! option = symbols + grp:shift_toggle = +group(shifts_toggle) + altwin:menu = +altwin(menu) + altwin:meta_alt = +altwin(meta_alt) + altwin:alt_win = +altwin(alt_win) + altwin:ctrl_win = +altwin(ctrl_win) + altwin:ctrl_alt_win = +altwin(ctrl_alt_win) + altwin:meta_win = +altwin(meta_win) + altwin:left_meta_win = +altwin(left_meta_win) + altwin:hyper_win = +altwin(hyper_win) + altwin:alt_super_win = +altwin(alt_super_win) + altwin:swap_alt_win = +altwin(swap_alt_win) + grab:debug = +srvr_ctrl(grab_debug) + grp:switch = +group(switch) + grp:lswitch = +group(lswitch) + grp:win_switch = +group(win_switch) + grp:lwin_switch = +group(lwin_switch) + grp:rwin_switch = +group(rwin_switch) + grp:toggle = +group(toggle) + grp:shifts_toggle = +group(shifts_toggle) + grp:ctrls_toggle = +group(ctrls_toggle) + grp:alts_toggle = +group(alts_toggle) + grp:caps_toggle = +capslock(grouplock) + grp:caps_switch = +capslock(groupshift) + grp:shift_caps_toggle = +group(shift_caps_toggle) + grp:shift_caps_switch = +group(shift_caps_switch) + grp:win_space_toggle = +group(win_space_toggle) + grp:win_menu_switch = +group(win_menu_switch) + grp:alt_caps_toggle = +group(alt_caps_toggle) + grp:alt_space_toggle = +group(alt_space_toggle) + grp:menu_toggle = +group(menu_toggle) + grp:lwin_toggle = +group(lwin_toggle) + grp:rwin_toggle = +group(rwin_toggle) + grp:lshift_toggle = +group(lshift_toggle) + grp:rshift_toggle = +group(rshift_toggle) + grp:rctrl_switch = +group(rctrl_switch) + grp:lctrl_toggle = +group(lctrl_toggle) + grp:rctrl_toggle = +group(rctrl_toggle) + grp:lalt_toggle = +group(lalt_toggle) + grp:sclk_toggle = +group(sclk_toggle) + grp:lctrl_rctrl_switch = +group(lctrl_rctrl_switch) + grp:lctrl_lwin_rctrl_menu = +group(lctrl_lwin_rctrl_menu) + grp:lctrl_lalt_toggle = +group(lctrl_lalt_toggle) + grp:rctrl_ralt_toggle = +group(rctrl_ralt_toggle) + grp:ctrl_alt_toggle = +group(ctrl_alt_toggle) + grp:ctrl_alt_toggle_bidir = +group(ctrl_alt_toggle_bidir) + grp:lctrl_lshift_toggle = +group(lctrl_lshift_toggle) + grp:rctrl_rshift_toggle = +group(rctrl_rshift_toggle) + grp:ctrl_shift_toggle = +group(ctrl_shift_toggle) + grp:ctrl_shift_toggle_bidir = +group(ctrl_shift_toggle_bidir) + grp:lalt_lshift_toggle = +group(lalt_lshift_toggle) + grp:ralt_rshift_toggle = +group(ralt_rshift_toggle) + grp:alt_shift_toggle = +group(alt_shift_toggle) + grp:alt_shift_toggle_bidir = +group(alt_shift_toggle_bidir) + lv3:switch = +level3(switch) + lv3:ralt_switch = +level3(ralt_switch) + lv3:ralt_switch_multikey = +level3(ralt_switch_multikey) + lv3:ralt_alt = +level3(ralt_alt) + lv3:lalt_switch = +level3(lalt_switch) + lv3:alt_switch = +level3(alt_switch) + lv3:menu_switch = +level3(menu_switch) + lv3:win_switch = +level3(win_switch) + lv3:lwin_switch = +level3(lwin_switch) + lv3:rwin_switch = +level3(rwin_switch) + lv3:enter_switch = +level3(enter_switch) + caps:capslock = +capslock(capslock) + caps:numlock = +capslock(numlock) + caps:shiftlock = +capslock(shiftlock) + caps:swapescape = +capslock(swapescape) + caps:escape = +capslock(escape) + caps:backspace = +capslock(backspace) + caps:super = +capslock(super) + caps:hyper = +capslock(hyper) + caps:none = +capslock(none) + caps:ctrl_modifier = +capslock(ctrl_modifier) + ctrl:nocaps = +ctrl(nocaps) + ctrl:lctrl_meta = +ctrl(lctrl_meta) + ctrl:swapcaps = +ctrl(swapcaps) + ctrl:ac_ctrl = +ctrl(ac_ctrl) + ctrl:aa_ctrl = +ctrl(aa_ctrl) + ctrl:rctrl_ralt = +ctrl(rctrl_ralt) + ctrl:menu_rctrl = +ctrl(menu_rctrl) + ctrl:ralt_rctrl = +ctrl(ralt_rctrl) + ctrl:swap_lalt_lctl = +ctrl(swap_lalt_lctl) + ctrl:swap_lwin_lctl = +ctrl(swap_lwin_lctl) + ctrl:swap_rwin_rctl = +ctrl(swap_rwin_rctl) + ctrl:swap_lalt_lctl_lwin = +ctrl(swap_lalt_lctl_lwin) + compose:ralt = +compose(ralt) + compose:lwin = +compose(lwin) + compose:lwin-altgr = +compose(lwin-altgr) + compose:rwin = +compose(rwin) + compose:rwin-altgr = +compose(rwin-altgr) + compose:menu = +compose(menu) + compose:menu-altgr = +compose(menu-altgr) + compose:lctrl = +compose(lctrl) + compose:lctrl-altgr = +compose(lctrl-altgr) + compose:rctrl = +compose(rctrl) + compose:rctrl-altgr = +compose(rctrl-altgr) + compose:caps = +compose(caps) + compose:caps-altgr = +compose(caps-altgr) + compose:102 = +compose(102) + compose:102-altgr = +compose(102-altgr) + compose:paus = +compose(paus) + compose:prsc = +compose(prsc) + compose:sclk = +compose(sclk) + srvrkeys:none = +srvr_ctrl(no_srvr_keys) + eurosign:e = +eurosign(e) + eurosign:2 = +eurosign(2) + eurosign:4 = +eurosign(4) + eurosign:5 = +eurosign(5) + rupeesign:4 = +rupeesign(4) + keypad:oss = +keypad(oss) + keypad:legacy = +keypad(legacy) + keypad:legacy_wang = +keypad(legacy_wang) + keypad:oss_wang = +keypad(oss_wang) + keypad:future = +keypad(future) + keypad:future_wang = +keypad(future_wang) + keypad:hex = +keypad(ops)+keypad(hex) + keypad:atm = +keypad(ops)+keypad(hex)+keypad(atm) + nbsp:none = +nbsp(none) + nbsp:level2 = +nbsp(level2) + nbsp:level3 = +nbsp(level3) + nbsp:level3s = +nbsp(level3s) + nbsp:level3n = +nbsp(level3n) + nbsp:level4 = +nbsp(level4) + nbsp:level4n = +nbsp(level4n) + nbsp:level4nl = +nbsp(level4nl) + japan:nicola_f_bs = +jp(nicola_f_bs) + japan:hztg_escape = +jp(hztg_escape) + kpdl:dot = +kpdl(dot) + kpdl:comma = +kpdl(comma) + kpdl:dotoss = +kpdl(dotoss) + kpdl:dotoss_latin9 = +kpdl(dotoss_latin9) + kpdl:commaoss = +kpdl(commaoss) + kpdl:momayyezoss = +kpdl(momayyezoss) + kpdl:kposs = +kpdl(kposs) + kpdl:semi = +kpdl(semi) + shift:breaks_caps = +shift(breaks_caps) + esperanto:qwerty = +epo(qwerty) + esperanto:dvorak = +epo(dvorak) + esperanto:colemak = +epo(colemak) + terminate:ctrl_alt_bksp = +terminate(ctrl_alt_bksp) + keypad:pointerkeys = +keypad(pointerkeys) + apple:alupckeys = +macintosh_vndr/apple(alupckeys) + shift:both_capslock = +shift(both_capslock) + shift:lshift_both_capslock = +shift(lshift_both_capslock) + shift:rshift_both_capslock = +shift(rshift_both_capslock) + shift:both_capslock_cancel = +shift(both_capslock_cancel) + shift:lshift_both_capslock_cancel = +shift(lshift_both_capslock_cancel) + shift:rshift_both_capslock_cancel = +shift(rshift_both_capslock_cancel) + shift:both_shiftlock = +shift(both_shiftlock) + shift:lshift_both_shiftlock = +shift(lshift_both_shiftlock) + shift:rshift_both_shiftlock = +shift(rshift_both_shiftlock) + solaris:sun_compat = +sun_vndr/solaris(sun_compat) + lv3:caps_switch = +level3(caps_switch) + lv3:bksl_switch = +level3(bksl_switch) + lv3:lsgt_switch = +level3(lsgt_switch) + lv3:caps_switch_latch = +level3(caps_switch_latch) + lv3:bksl_switch_latch = +level3(bksl_switch_latch) + lv3:lsgt_switch_latch = +level3(lsgt_switch_latch) + lv5:lsgt_switch_lock = +level5(lsgt_switch_lock) + lv5:ralt_switch_lock = +level5(ralt_switch_lock) + lv5:lwin_switch_lock = +level5(lwin_switch_lock) + lv5:rwin_switch_lock = +level5(rwin_switch_lock) + lv5:lsgt_switch_lock_cancel = +level5(lsgt_switch_lock_cancel) + lv5:ralt_switch_lock_cancel = +level5(ralt_switch_lock_cancel) + lv5:lwin_switch_lock_cancel = +level5(lwin_switch_lock_cancel) + lv5:rwin_switch_lock_cancel = +level5(rwin_switch_lock_cancel) + + + +! option = compat + grp_led:num = +lednum(group_lock) + grp_led:caps = +ledcaps(group_lock) + grp_led:scroll = +ledscroll(group_lock) + japan:kana_lock = +japan(kana_lock) + caps:shiftlock = +ledcaps(shift_lock) + grab:break_actions = +xfree86(grab_break) + + +! option = types + caps:internal = +caps(internal) + caps:internal_nocancel = +caps(internal_nocancel) + caps:shift = +caps(shift) + caps:shift_nocancel = +caps(shift_nocancel) + numpad:pc = +numpad(pc) + numpad:mac = +numpad(mac) + numpad:microsoft = +numpad(microsoft) + numpad:shift3 = +numpad(shift3) diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/evdev b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/evdev new file mode 100644 index 0000000..f58e5b2 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/evdev @@ -0,0 +1,1115 @@ +// DO NOT EDIT THIS FILE - IT WAS AUTOGENERATED BY merge.sh FROM rules/*.part +// +// Rules for resolving XKB components for use with XFree86 +// Copyright 1996 by Joseph Moss +// +// 2002 Modifier: Ivan Pascal The XFree86 Project +// + +// If you want non-latin layouts implicitly include the en_US layout +// uncomment lines below +//! $nonlatin = am ara ben bd bg bt by cs deva ge gh gr guj guru il \ +// in ir iku jp kan kh kr la lao lk mk mm mn mv mal ori pk \ +// ru scc sy syr tel th tj tam ua uz + +// PC models +! $pcmodels = pc101 pc102 pc104 pc105 + +// Microsoft models (using MS geometry) +! $msmodels = microsoft microsoft4000 microsoft7000 microsoftpro microsoftprousb microsoftprose + +// Nokia devices and keyboards +! $nokiamodels = nokiasu8w nokiarx44 nokiarx51 + +// PC geometries - they have special geometry but symbols are mostly pc105 +! $pcgeometries = latitude + +// TypeMatrix geometries +! $tmgeometries = tm2020 tm2030PS2 tm2030USB tm2030USB-102 tm2030USB-106 + +// Layouts that provide further specializations for the OLPC +! $olpclayouts = af am ara br ca es et fr it kh kz in mn np ru th tr us + +! $macbooks = macbook78 macbook79 +! $maclaptop = ibook powerbook macbook78 macbook79 +! $applealu = applealu_ansi applealu_iso applealu_jis +! $macs = macintosh macintosh_old ibook powerbook macbook78 macbook79 + +! $macvendorlayouts = ch de dk fi fr gb is it latam nl no pt se us + +! $azerty = be fr +! $qwertz = al cz de hr hu ro si sk + + +// all layouts with 3rd and 4th groups +! $threelevellayouts = al az \ + be br bt \ + ca ch cs cz \ + de dk \ + ee es \ + fi fo fr \ + gb gr \ + hu \ + ie ir is it \ + latam \ + lk lt \ + mn mt \ + nl no \ + pl pt \ + ro \ + se sk \ + tr \ + us \ + vn \ + za + +! $thinkpads = thinkpad thinkpad60 thinkpadz60 + +! $sun = sun_type6_jp sun_type6_usb sun_type6_euro_usb \ + sun_type6_jp_usb sun_type6_unix_usb sun_type7_jp_usb \ + sun_type7_usb sun_type7_euro_usb sun_type7_unix_usb + +! $sun_jp = sun_type6_jp sun_type6_jp_usb sun_type7_jp_usb + +// Sun Type_6_7 keyboards with custom layouts +! $sun_custom = ara be br ca ch cz de dk \ + ee es fi fr gb gr it jp \ + kr lt lv nl no pl pt ro \ + ru se sk tr tw ua us + +! $sun_var = sun_type6 sun_type6_suncompat sun_type6_de sun_type6_fr \ + sun_type7 sun_type7_suncompat suncompat + +! $sun_compat = sun_type6 sun_type6_suncompat sun_type7_suncompat suncompat + +! $htcdreamlayouts = us it de + +! $evdevkbds = ibm_spacesaver + +! $dvoraklayouts = br ca de ee es fr gb no pl se us + +! model = keycodes + pc98 = evdev(pc98) + applealu_jis = evdev+macintosh(jisevdev) + olpc = evdev+olpc(olpc) + olpcm = evdev+olpc(olpcm) + * = evdev + +! layout[1] = keycodes + $azerty = +aliases(azerty) + $qwertz = +aliases(qwertz) + * = +aliases(qwerty) + +! layout = keycodes + $azerty = +aliases(azerty) + $qwertz = +aliases(qwertz) + * = +aliases(qwerty) + +! option = keycodes + +! model layout = geometry + thinkpad us = thinkpad(us) + +! model = geometry + microsoftelite = microsoft(elite) + $msmodels = microsoft(natural) + dell101 = dell(dell101) + dellm65 = dell(dellm65) + latitude = dell(latitude) + flexpro = keytronic(FlexPro) + hp6000 = hp(omnibook) + hpmini110 = hp(mini110) + hpdv5 = hp(dv5) + omnikey101 = northgate(omnikey101) + sanwaskbkg3 = sanwa(sanwaskbkg3) + $pcmodels = pc(%m) + $pcgeometries = pc(%m) + everex = everex(STEPnote) + thinkpad = thinkpad(intl) + thinkpad60 = thinkpad(60) + thinkpadz60 = thinkpad(60) + $tmgeometries = typematrix(%m) + winbook = winbook(XP5) + pc98 = nec(pc98) + $applealu = macintosh(%m) + $macbooks = macintosh(%m) + $macs = macintosh(macintosh) + hhk = hhk(basic) + kinesis = kinesis(model100) + $nokiamodels = nokia(%m) + sun_type6_jp = sun(type6jp) + sun_type6_usb = sun(type6) + sun_type6_euro_usb = sun(type6tuv) + sun_type6_jp_usb = sun(type6jp) + sun_type6_unix_usb = sun(type6unix) + sun_type7_jp_usb = sun(type6jp) + sun_type7_usb = sun(type7) + sun_type7_euro_usb = sun(type7tuv) + sun_type7_unix_usb = sun(type7unix) + * = pc(pc104) + +! model layout variant = symbols + * ben basic = pc+in(ben) + * ben probhat = pc+in(ben_probhat) + * dev basic = pc+in(deva) + * dvorak $dvoraklayouts = pc+%v(dvorak) + * dvorak basic = pc+us(dvorak) + * dvorak pl_basic = pc+pl(dvorak) + * dvorak pl = pc+pl(dvorak_quotes) + * dvorak pl_altquotes = pc+pl(dvorak_altquotes) + * dzdwi basic = pc+bt(basic) + * fi basic = pc+fi(classic) + * ge azerty_tskapo = pc+fr(geo) + * guj basic = pc+in(guj) + * gur basic = pc+in(guru) + * ie laptop = pc+ie(basic) + * ie CloGaelachLaptop = pc+ie(CloGaelach) + * in urd = pc+in(urd-phonetic) + * iu basic = pc+ca(ike) + * lo basic = pc+la(basic) + * kan basic = pc+in(kan) + * mal basic = pc+in(mal) + * mal mlplusnum = pc+in(mal) + * ogham basic = pc+ie(ogam) + * ogham laptop = pc+ie(ogam) + * ogham is434 = pc+ie(ogam_is434) + * ogham is434laptop = pc+ie(ogam_is434) + * ori basic = pc+in(ori) + * ro de = pc+ro(winkeys) + * ro us = pc+ro(std) + * ro academic = pc+ro(std) + * ro std_comma = pc+ro(std) + * ro comma = pc+ro(basic) + * ru os = pc+ru(os_legacy) + * pk urd = pc+pk(urd-phonetic) + * sapmi basic = pc+no(smi) + * sapmi nodeadkeys = pc+no(smi_nodeadkeys) + * sapmi sefi = pc+fi(smi) + * sin phonetic-static = pc+in(sin_phonetic) + * syr basic = pc+sy(syc) + * syr phonetic = pc+sy(syc_phonetic) + * tam INSCRIPT = pc+in(tam) + * tam UNI = pc+in(tam_unicode) + * tam NUMERAL-KEYBOARD = pc+in(tam_keyboard_with_numerals) + * tam TAB = pc+in(tam_TAB) + * tam TSCII = pc+in(tam_TSCII) + * tel basic = pc+in(tel) + * yu basic = pc+srp(latin) + * yu unicode = pc+srp(latinunicode) + * yu yz = pc+srp(latinyz) + * yu unicodeyz = pc+srp(latinunicodeyz) + classmate us intl = pc+us(classmate-intl) + classmate us alt-intl = pc+us(classmate-alt-intl) + classmate us altgr-intl = pc+us(classmate-altgr-intl) + nokiarx51 cz qwerty = nokia_vndr/rx-51(cz_qwerty) + * $sun_custom $sun_var = pc+sun_vndr/%l%(v) + +! model layout = symbols + * ar = pc+ara + * ben = pc+in(ben) + * bs = pc+ba + * cs = pc+rs + * cz_qwerty = pc+cz(qwerty) + * dev = pc+in(deva) + * dvorak = pc+us(dvorak) + * dzdwi = pc+bt + * el = pc+gr + * en_US = pc+latin + * guj = pc+in(guj) + * gur = pc+in(guru) + * iu = pc+ca(ike) + * lo = pc+la + * kan = pc+in(kan) + * mi = pc+mao + * ogham = pc+ie(ogam) + * ori = pc+ie(ori) + * sapmi = pc+no(smi) + * sr = pc+srp + * syr = pc+sy(syc) + * tel = pc+in(tel) + * tml = pc+in(tam) + * yu = pc+srp + * fr-latin9 = pc+fr(latin9) + * us_intl = pc+us(alt-intl) + * ben(basic) = pc+in(ben) + * ben(probhat) = pc+in(ben_probhat) + * dev(basic) = pc+in(deva) + * dvorak($dvoraklayouts) = pc+%v(dvorak) + * dvorak(basic) = pc+us(dvorak) + * dvorak(pl_basic) = pc+pl(dvorak) + * dvorak(pl) = pc+pl(dvorak_quotes) + * dvorak(pl_altquotes) = pc+pl(dvorak_altquotes) + * dzdwi(basic) = pc+bt(basic) + * fi(basic) = pc+fi(classic) + * ge(azerty_tskapo) = pc+fr(geo) + * guj(basic) = pc+in(guj) + * gur(basic) = pc+in(guru) + * ie(laptop) = pc+ie(basic) + * ie(CloGaelachLaptop) = pc+ie(CloGaelach) + * in(urd) = pc+in(urd-phonetic) + * iu(basic) = pc+ca(ike) + * lo(basic) = pc+la(basic) + * kan(basic) = pc+in(kan) + * mal(basic) = pc+in(mal) + * mal(mlplusnum) = pc+in(mal) + * ogham(basic) = pc+ie(ogam) + * ogham(laptop) = pc+ie(ogam) + * ogham(is434) = pc+ie(ogam_is434) + * ogham(is434laptop) = pc+ie(ogam_is434) + * ori(basic) = pc+in(ori) + * ro(de) = pc+ro(winkeys) + * ro(us) = pc+ro(std) + * ro(academic) = pc+ro(std) + * ro(std_comma) = pc+ro(std) + * ro(comma) = pc+ro(basic) + * ru(os) = pc+ru(os_legacy) + * pk(urd) = pc+pk(urd-phonetic) + * sapmi(basic) = pc+no(smi) + * sapmi(nodeadkeys) = pc+no(smi_nodeadkeys) + * sapmi(sefi) = pc+fi(smi) + * sin(phonetic-static) = pc+in(sin_phonetic) + * syr(basic) = pc+sy(syc) + * syr(phonetic) = pc+sy(syc_phonetic) + * tam(INSCRIPT) = pc+in(tam) + * tam(UNI) = pc+in(tam_unicode) + * tam(NUMERAL-KEYBOARD) = pc+in(tam_keyboard_with_numerals) + * tam(TAB) = pc+in(tam_TAB) + * tam(TSCII) = pc+in(tam_TSCII) + * tel(basic) = pc+in(tel) + * yu(basic) = pc+srp(latin) + * yu(unicode) = pc+srp(latinunicode) + * yu(yz) = pc+srp(latinyz) + * yu(unicodeyz) = pc+srp(latinunicodeyz) + ataritt $nonlatin = xfree68_vndr/ataritt(us)+%l%(v):2 + ataritt * = xfree68_vndr/ataritt(us)+%l%(v) + amiga $nonlatin = xfree68_vndr/amiga(usa1)+%l%(v):2 + amiga * = xfree68_vndr/amiga(usa1)+%l%(v) + classmate us = pc+%l(classmate) + empty * = empty(basic) + * empty = empty(basic) + $sun $sun_custom = pc+sun_vndr/%l%(v) + pc98 nec_vndr/jp = nec_vndr/jp(pc98) + macintosh_old us = macintosh_vndr/us(oldmac) + macintosh_old en_US = macintosh_vndr/us(oldmac) + macintosh_old $macvendorlayouts = macintosh_vndr/us(oldmac)+macintosh_vndr/%l%(v) + macintosh_old $nonlatin = macintosh_vndr/us(oldmac)+%l%(v):2 + macintosh_old * = macintosh_vndr/us(oldmac)+%l%(v) + applealu_jis jp = macintosh_vndr/apple(alukbd)+macintosh_vndr/jp(usmac)+macintosh_vndr/jp(mac):2 + applealu_jis * = macintosh_vndr/apple(alukbd)+%l%(v)+macintosh_vndr/jp(mac):2 + $applealu $macvendorlayouts = macintosh_vndr/apple(alukbd)+macintosh_vndr/%l%(v) + $applealu * = macintosh_vndr/apple(alukbd)+%l%(v) + $macs en_US = pc+macintosh_vndr/us(extended) + $macs $macvendorlayouts = pc+macintosh_vndr/%l%(v) + nokiarx44 * = nokia_vndr/rx-44(%l) + nokiarx51 cz(qwerty) = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(cz_qwerty) + nokiarx51 * = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(%l%_v) + nokiasu8w * = nokia_vndr/su-8w(%l) + olpc $olpclayouts = olpc+%l%(m) + olpc * = olpc+%l%(v) + olpcm $olpclayouts = olpc+%l%(m) + olpcm * = olpc+%l%(v) + $thinkpads br = pc+br(thinkpad) + sl-c3x00 * = pc+sharp_vndr/sl-c3x00(basic) + ws003sh * = pc+sharp_vndr/ws003sh(basic) + ws007sh * = pc+sharp_vndr/ws007sh(basic) + ws011sh * = pc+sharp_vndr/ws011sh(basic) + ws020sh * = pc+sharp_vndr/ws020sh(basic) + htcdream $htcdreamlayouts = %l(htcdream) + * $nonlatin = pc+us+%l%(v):2 + * * = pc+%l%(v) + +! model layout[1] = symbols + * ar = pc+ara%(v[1]) + * ben = pc+in(ben) + * bs = pc+ba%(v[1]) + * cs = pc+rs%(v[1]) + * cz_qwerty = pc+cz(qwerty) + * dev = pc+in(deva) + * dvorak = pc+us(dvorak) + * dzdwi = pc+bt%(v[1]) + * el = pc+gr%(v[1]) + * en_US = pc+latin%(v[1]) + * guj = pc+in(guj) + * gur = pc+in(guru) + * iu = pc+ca(ike) + * lo = pc+la%(v[1]) + * kan = pc+in(kan) + * mi = pc+mao%(v[1]) + * ogham = pc+ie(ogam) + * ori = pc+ie(ori) + * sapmi = pc+no(smi) + * sr = pc+srp%(v[1]) + * syr = pc+sy(syc) + * tel = pc+in(tel) + * tml = pc+in(tam) + * yu = pc+srp%(v[1]) + * fr-latin9 = pc+fr(latin9) + * us_intl = pc+us(alt-intl) + * ben(basic) = pc+in(ben) + * ben(probhat) = pc+in(ben_probhat) + * dev(basic) = pc+in(deva) + * dvorak($dvoraklayouts) = pc+%v(dvorak) + * dvorak(basic) = pc+us(dvorak) + * dvorak(pl_basic) = pc+pl(dvorak) + * dvorak(pl) = pc+pl(dvorak_quotes) + * dvorak(pl_altquotes) = pc+pl(dvorak_altquotes) + * dzdwi(basic) = pc+bt(basic) + * fi(basic) = pc+fi(classic) + * ge(azerty_tskapo) = pc+fr(geo) + * guj(basic) = pc+in(guj) + * gur(basic) = pc+in(guru) + * ie(laptop) = pc+ie(basic) + * ie(CloGaelachLaptop) = pc+ie(CloGaelach) + * in(urd) = pc+in(urd-phonetic) + * iu(basic) = pc+ca(ike) + * lo(basic) = pc+la(basic) + * kan(basic) = pc+in(kan) + * mal(basic) = pc+in(mal) + * mal(mlplusnum) = pc+in(mal) + * ogham(basic) = pc+ie(ogam) + * ogham(laptop) = pc+ie(ogam) + * ogham(is434) = pc+ie(ogam_is434) + * ogham(is434laptop) = pc+ie(ogam_is434) + * ori(basic) = pc+in(ori) + * ro(de) = pc+ro(winkeys) + * ro(us) = pc+ro(std) + * ro(academic) = pc+ro(std) + * ro(std_comma) = pc+ro(std) + * ro(comma) = pc+ro(basic) + * ru(os) = pc+ru(os_legacy) + * pk(urd) = pc+pk(urd-phonetic) + * sapmi(basic) = pc+no(smi) + * sapmi(nodeadkeys) = pc+no(smi_nodeadkeys) + * sapmi(sefi) = pc+fi(smi) + * sin(phonetic-static) = pc+in(sin_phonetic) + * syr(basic) = pc+sy(syc) + * syr(phonetic) = pc+sy(syc_phonetic) + * tam(INSCRIPT) = pc+in(tam) + * tam(UNI) = pc+in(tam_unicode) + * tam(NUMERAL-KEYBOARD) = pc+in(tam_keyboard_with_numerals) + * tam(TAB) = pc+in(tam_TAB) + * tam(TSCII) = pc+in(tam_TSCII) + * tel(basic) = pc+in(tel) + * yu(basic) = pc+srp(latin) + * yu(unicode) = pc+srp(latinunicode) + * yu(yz) = pc+srp(latinyz) + * yu(unicodeyz) = pc+srp(latinunicodeyz) + ataritt * = xfree68_vndr/ataritt(us)+%l[1]%(v[1]) + amiga * = xfree68_vndr/amiga(usa1)+%l[1]%(v[1]) + $sun $sun_custom = pc+sun_vndr/%l[1]%(v[1]) + macintosh_old us = macintosh_vndr/us(oldmac) + macintosh_old $macvendorlayouts = macintosh_vndr/us(oldmac)+macintosh_vndr/%l[1]%(v[1]) + macintosh_old * = macintosh_vndr/us(oldmac)+%l[1]%(v[1]) + applealu_jis us = macintosh_vndr/apple(alukbd)+macintosh_vndr/jp(usmac) + $applealu $macvendorlayouts = macintosh_vndr/apple(alukbd)+macintosh_vndr/%l[1]%(v[1]) + $applealu * = macintosh_vndr/apple(alukbd)+%l[1]%(v[1]) + $macs $macvendorlayouts = pc+macintosh_vndr/%l[1]%(v[1]) + nokiarx51 cz(qwerty) = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(cz_qwerty) + nokiarx51 * = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(%l[1]%_v[1]) + $thinkpads br = pc+%l[1](thinkpad) + * * = pc+%l[1]%(v[1]) + +! model layout[1] variant[1] = symbols + * ben basic = pc+in(ben) + * ben probhat = pc+in(ben_probhat) + * dev basic = pc+in(deva) + * dvorak $dvoraklayouts = pc+%v(dvorak) + * dvorak basic = pc+us(dvorak) + * dvorak pl_basic = pc+pl(dvorak) + * dvorak pl = pc+pl(dvorak_quotes) + * dvorak pl_altquotes = pc+pl(dvorak_altquotes) + * dzdwi basic = pc+bt(basic) + * fi basic = pc+fi(classic) + * ge azerty_tskapo = pc+fr(geo) + * guj basic = pc+in(guj) + * gur basic = pc+in(guru) + * ie laptop = pc+ie(basic) + * ie CloGaelachLaptop = pc+ie(CloGaelach) + * in urd = pc+in(urd-phonetic) + * iu basic = pc+ca(ike) + * lo basic = pc+la(basic) + * kan basic = pc+in(kan) + * mal basic = pc+in(mal) + * mal mlplusnum = pc+in(mal) + * ogham basic = pc+ie(ogam) + * ogham laptop = pc+ie(ogam) + * ogham is434 = pc+ie(ogam_is434) + * ogham is434laptop = pc+ie(ogam_is434) + * ori basic = pc+in(ori) + * ro de = pc+ro(winkeys) + * ro us = pc+ro(std) + * ro academic = pc+ro(std) + * ro std_comma = pc+ro(std) + * ro comma = pc+ro(basic) + * ru os = pc+ru(os_legacy) + * pk urd = pc+pk(urd-phonetic) + * sapmi basic = pc+no(smi) + * sapmi nodeadkeys = pc+no(smi_nodeadkeys) + * sapmi sefi = pc+fi(smi) + * sin phonetic-static = pc+in(sin_phonetic) + * syr basic = pc+sy(syc) + * syr phonetic = pc+sy(syc_phonetic) + * tam INSCRIPT = pc+in(tam) + * tam UNI = pc+in(tam_unicode) + * tam NUMERAL-KEYBOARD = pc+in(tam_keyboard_with_numerals) + * tam TAB = pc+in(tam_TAB) + * tam TSCII = pc+in(tam_TSCII) + * tel basic = pc+in(tel) + * yu basic = pc+srp(latin) + * yu unicode = pc+srp(latinunicode) + * yu yz = pc+srp(latinyz) + * yu unicodeyz = pc+srp(latinunicodeyz) + +! model layout[2] = symbols + * ar = +ara%(v[2]):2 + * ben = +in(ben):2 + * bs = +ba%(v[2]):2 + * cs = +rs%(v[2]):2 + * cz_qwerty = +cz(qwerty):2 + * dev = +in(deva):2 + * dvorak = +us(dvorak):2 + * dzdwi = +bt%(v[2]):2 + * el = +gr%(v[2]):2 + * en_US = +latin%(v[2]):2 + * guj = +in(guj):2 + * gur = +in(guru):2 + * iu = +ca(ike):2 + * lo = +la%(v[2]):2 + * kan = +in(kan):2 + * mi = +mao%(v[2]):2 + * ogham = +ie(ogam):2 + * ori = +ie(ori):2 + * sapmi = +no(smi):2 + * sr = +srp%(v[2]):2 + * syr = +sy(syc):2 + * tel = +in(tel):2 + * tml = +in(tam):2 + * yu = +srp%(v[2]):2 + * fr-latin9 = +fr(latin9):2 + * us_intl = +us(alt-intl):2 + * ben(basic) = +in(ben):2 + * ben(probhat) = +in(ben_probhat):2 + * dev(basic) = +in(deva):2 + * dvorak($dvoraklayouts) = +%v(dvorak):2 + * dvorak(basic) = +us(dvorak):2 + * dvorak(pl_basic) = +pl(dvorak):2 + * dvorak(pl) = +pl(dvorak_quotes):2 + * dvorak(pl_altquotes) = +pl(dvorak_altquotes):2 + * dzdwi(basic) = +bt(basic):2 + * fi(basic) = +fi(classic):2 + * ge(azerty_tskapo) = +fr(geo):2 + * guj(basic) = +in(guj):2 + * gur(basic) = +in(guru):2 + * ie(laptop) = +ie(basic):2 + * ie(CloGaelachLaptop) = +ie(CloGaelach):2 + * in(urd) = +in(urd-phonetic):2 + * iu(basic) = +ca(ike):2 + * lo(basic) = +la(basic):2 + * kan(basic) = +in(kan):2 + * mal(basic) = +in(mal):2 + * mal(mlplusnum) = +in(mal):2 + * ogham(basic) = +ie(ogam):2 + * ogham(laptop) = +ie(ogam):2 + * ogham(is434) = +ie(ogam_is434):2 + * ogham(is434laptop) = +ie(ogam_is434):2 + * ori(basic) = +in(ori):2 + * ro(de) = +ro(winkeys):2 + * ro(us) = +ro(std):2 + * ro(academic) = +ro(std):2 + * ro(std_comma) = +ro(std):2 + * ro(comma) = +ro(basic):2 + * ru(os) = +ru(os_legacy):2 + * pk(urd) = +pk(urd-phonetic):2 + * sapmi(basic) = +no(smi):2 + * sapmi(nodeadkeys) = +no(smi_nodeadkeys):2 + * sapmi(sefi) = +fi(smi):2 + * sin(phonetic-static) = +in(sin_phonetic):2 + * syr(basic) = +sy(syc):2 + * syr(phonetic) = +sy(syc_phonetic):2 + * tam(INSCRIPT) = +in(tam):2 + * tam(UNI) = +in(tam_unicode):2 + * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):2 + * tam(TAB) = +in(tam_TAB):2 + * tam(TSCII) = +in(tam_TSCII):2 + * tel(basic) = +in(tel):2 + * yu(basic) = +srp(latin):2 + * yu(unicode) = +srp(latinunicode):2 + * yu(yz) = +srp(latinyz):2 + * yu(unicodeyz) = +srp(latinunicodeyz):2 + nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):2 + nokiarx51 * = +nokia_vndr/rx-51(%l[2]%_v[2]):2 + $sun $sun_custom = +sun_vndr/%l[2]%(v[2]):2 + * * = +%l[2]%(v[2]):2 + +! model layout[3] = symbols + * ar = +ara%(v[3]):3 + * ben = +in(ben):3 + * bs = +ba%(v[3]):3 + * cs = +rs%(v[3]):3 + * cz_qwerty = +cz(qwerty):3 + * dev = +in(deva):3 + * dvorak = +us(dvorak):3 + * dzdwi = +bt%(v[3]):3 + * el = +gr%(v[3]):3 + * en_US = +latin%(v[3]):3 + * guj = +in(guj):3 + * gur = +in(guru):3 + * iu = +ca(ike):3 + * lo = +la%(v[3]):3 + * kan = +in(kan):3 + * mi = +mao%(v[3]):3 + * ogham = +ie(ogam):3 + * ori = +ie(ori):3 + * sapmi = +no(smi):3 + * sr = +srp%(v[3]):3 + * syr = +sy(syc):3 + * tel = +in(tel):3 + * tml = +in(tam):3 + * yu = +srp%(v[3]):3 + * fr-latin9 = +fr(latin9):3 + * us_intl = +us(alt-intl):3 + * ben(basic) = +in(ben):3 + * ben(probhat) = +in(ben_probhat):3 + * dev(basic) = +in(deva):3 + * dvorak($dvoraklayouts) = +%v(dvorak):3 + * dvorak(basic) = +us(dvorak):3 + * dvorak(pl_basic) = +pl(dvorak):3 + * dvorak(pl) = +pl(dvorak_quotes):3 + * dvorak(pl_altquotes) = +pl(dvorak_altquotes):3 + * dzdwi(basic) = +bt(basic):3 + * fi(basic) = +fi(classic):3 + * ge(azerty_tskapo) = +fr(geo):3 + * guj(basic) = +in(guj):3 + * gur(basic) = +in(guru):3 + * ie(laptop) = +ie(basic):3 + * ie(CloGaelachLaptop) = +ie(CloGaelach):3 + * in(urd) = +in(urd-phonetic):3 + * iu(basic) = +ca(ike):3 + * lo(basic) = +la(basic):3 + * kan(basic) = +in(kan):3 + * mal(basic) = +in(mal):3 + * mal(mlplusnum) = +in(mal):3 + * ogham(basic) = +ie(ogam):3 + * ogham(laptop) = +ie(ogam):3 + * ogham(is434) = +ie(ogam_is434):3 + * ogham(is434laptop) = +ie(ogam_is434):3 + * ori(basic) = +in(ori):3 + * ro(de) = +ro(winkeys):3 + * ro(us) = +ro(std):3 + * ro(academic) = +ro(std):3 + * ro(std_comma) = +ro(std):3 + * ro(comma) = +ro(basic):3 + * ru(os) = +ru(os_legacy):3 + * pk(urd) = +pk(urd-phonetic):3 + * sapmi(basic) = +no(smi):3 + * sapmi(nodeadkeys) = +no(smi_nodeadkeys):3 + * sapmi(sefi) = +fi(smi):3 + * sin(phonetic-static) = +in(sin_phonetic):3 + * syr(basic) = +sy(syc):3 + * syr(phonetic) = +sy(syc_phonetic):3 + * tam(INSCRIPT) = +in(tam):3 + * tam(UNI) = +in(tam_unicode):3 + * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):3 + * tam(TAB) = +in(tam_TAB):3 + * tam(TSCII) = +in(tam_TSCII):3 + * tel(basic) = +in(tel):3 + * yu(basic) = +srp(latin):3 + * yu(unicode) = +srp(latinunicode):3 + * yu(yz) = +srp(latinyz):3 + * yu(unicodeyz) = +srp(latinunicodeyz):3 + nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):3 + nokiarx51 * = +nokia_vndr/rx-51(%l[3]%_v[3]):3 + $sun $sun_custom = +sun_vndr/%l[3]%(v[3]):3 + * * = +%l[3]%(v[3]):3 + +! model layout[4] = symbols + * ar = +ara%(v[4]):4 + * ben = +in(ben):4 + * bs = +ba%(v[4]):4 + * cs = +rs%(v[4]):4 + * cz_qwerty = +cz(qwerty):4 + * dev = +in(deva):4 + * dvorak = +us(dvorak):4 + * dzdwi = +bt%(v[4]):4 + * el = +gr%(v[4]):4 + * en_US = +latin%(v[4]):4 + * guj = +in(guj):4 + * gur = +in(guru):4 + * iu = +ca(ike):4 + * lo = +la%(v[4]):4 + * kan = +in(kan):4 + * mi = +mao%(v[4]):4 + * ogham = +ie(ogam):4 + * ori = +ie(ori):4 + * sapmi = +no(smi):4 + * sr = +srp%(v[4]):4 + * syr = +sy(syc):4 + * tel = +in(tel):4 + * tml = +in(tam):4 + * yu = +srp%(v[4]):4 + * fr-latin9 = +fr(latin9):4 + * us_intl = +us(alt-intl):4 + * ben(basic) = +in(ben):4 + * ben(probhat) = +in(ben_probhat):4 + * dev(basic) = +in(deva):4 + * dvorak($dvoraklayouts) = +%v(dvorak):4 + * dvorak(basic) = +us(dvorak):4 + * dvorak(pl_basic) = +pl(dvorak):4 + * dvorak(pl) = +pl(dvorak_quotes):4 + * dvorak(pl_altquotes) = +pl(dvorak_altquotes):4 + * dzdwi(basic) = +bt(basic):4 + * fi(basic) = +fi(classic):4 + * ge(azerty_tskapo) = +fr(geo):4 + * guj(basic) = +in(guj):4 + * gur(basic) = +in(guru):4 + * ie(laptop) = +ie(basic):4 + * ie(CloGaelachLaptop) = +ie(CloGaelach):4 + * in(urd) = +in(urd-phonetic):4 + * iu(basic) = +ca(ike):4 + * lo(basic) = +la(basic):4 + * kan(basic) = +in(kan):4 + * mal(basic) = +in(mal):4 + * mal(mlplusnum) = +in(mal):4 + * ogham(basic) = +ie(ogam):4 + * ogham(laptop) = +ie(ogam):4 + * ogham(is434) = +ie(ogam_is434):4 + * ogham(is434laptop) = +ie(ogam_is434):4 + * ori(basic) = +in(ori):4 + * ro(de) = +ro(winkeys):4 + * ro(us) = +ro(std):4 + * ro(academic) = +ro(std):4 + * ro(std_comma) = +ro(std):4 + * ro(comma) = +ro(basic):4 + * ru(os) = +ru(os_legacy):4 + * pk(urd) = +pk(urd-phonetic):4 + * sapmi(basic) = +no(smi):4 + * sapmi(nodeadkeys) = +no(smi_nodeadkeys):4 + * sapmi(sefi) = +fi(smi):4 + * sin(phonetic-static) = +in(sin_phonetic):4 + * syr(basic) = +sy(syc):4 + * syr(phonetic) = +sy(syc_phonetic):4 + * tam(INSCRIPT) = +in(tam):4 + * tam(UNI) = +in(tam_unicode):4 + * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):4 + * tam(TAB) = +in(tam_TAB):4 + * tam(TSCII) = +in(tam_TSCII):4 + * tel(basic) = +in(tel):4 + * yu(basic) = +srp(latin):4 + * yu(unicode) = +srp(latinunicode):4 + * yu(yz) = +srp(latinyz):4 + * yu(unicodeyz) = +srp(latinunicodeyz):4 + nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):4 + nokiarx51 * = +nokia_vndr/rx-51(%l[4]%_v[4]):4 + $sun $sun_custom = +sun_vndr/%l[4]%(v[4]):4 + * * = +%l[4]%(v[4]):4 + +! model layout[2] variant[2] = symbols + * ben basic = +in(ben):2 + * ben probhat = +in(ben_probhat):2 + * dev basic = +in(deva):2 + * dvorak $dvoraklayouts = +%v(dvorak):2 + * dvorak basic = +us(dvorak):2 + * dvorak pl_basic = +pl(dvorak):2 + * dvorak pl = +pl(dvorak_quotes):2 + * dvorak pl_altquotes = +pl(dvorak_altquotes):2 + * dzdwi basic = +bt(basic):2 + * fi basic = +fi(classic):2 + * ge azerty_tskapo = +fr(geo):2 + * guj basic = +in(guj):2 + * gur basic = +in(guru):2 + * ie laptop = +ie(basic):2 + * ie CloGaelachLaptop = +ie(CloGaelach):2 + * in urd = +in(urd-phonetic):2 + * iu basic = +ca(ike):2 + * lo basic = +la(basic):2 + * kan basic = +in(kan):2 + * mal basic = +in(mal):2 + * mal mlplusnum = +in(mal):2 + * ogham basic = +ie(ogam):2 + * ogham laptop = +ie(ogam):2 + * ogham is434 = +ie(ogam_is434):2 + * ogham is434laptop = +ie(ogam_is434):2 + * ori basic = +in(ori):2 + * ro de = +ro(winkeys):2 + * ro us = +ro(std):2 + * ro academic = +ro(std):2 + * ro std_comma = +ro(std):2 + * ro comma = +ro(basic):2 + * ru os = +ru(os_legacy):2 + * pk urd = +pk(urd-phonetic):2 + * sapmi basic = +no(smi):2 + * sapmi nodeadkeys = +no(smi_nodeadkeys):2 + * sapmi sefi = +fi(smi):2 + * sin phonetic-static = +in(sin_phonetic):2 + * syr basic = +sy(syc):2 + * syr phonetic = +sy(syc_phonetic):2 + * tam INSCRIPT = +in(tam):2 + * tam UNI = +in(tam_unicode):2 + * tam NUMERAL-KEYBOARD = +in(tam_keyboard_with_numerals):2 + * tam TAB = +in(tam_TAB):2 + * tam TSCII = +in(tam_TSCII):2 + * tel basic = +in(tel):2 + * yu basic = +srp(latin):2 + * yu unicode = +srp(latinunicode):2 + * yu yz = +srp(latinyz):2 + * yu unicodeyz = +srp(latinunicodeyz):2 + +! model layout[3] variant[3] = symbols + * ben basic = +in(ben):3 + * ben probhat = +in(ben_probhat):3 + * dev basic = +in(deva):3 + * dvorak $dvoraklayouts = +%v(dvorak):3 + * dvorak basic = +us(dvorak):3 + * dvorak pl_basic = +pl(dvorak):3 + * dvorak pl = +pl(dvorak_quotes):3 + * dvorak pl_altquotes = +pl(dvorak_altquotes):3 + * dzdwi basic = +bt(basic):3 + * fi basic = +fi(classic):3 + * ge azerty_tskapo = +fr(geo):3 + * guj basic = +in(guj):3 + * gur basic = +in(guru):3 + * ie laptop = +ie(basic):3 + * ie CloGaelachLaptop = +ie(CloGaelach):3 + * in urd = +in(urd-phonetic):3 + * iu basic = +ca(ike):3 + * lo basic = +la(basic):3 + * kan basic = +in(kan):3 + * mal basic = +in(mal):3 + * mal mlplusnum = +in(mal):3 + * ogham basic = +ie(ogam):3 + * ogham laptop = +ie(ogam):3 + * ogham is434 = +ie(ogam_is434):3 + * ogham is434laptop = +ie(ogam_is434):3 + * ori basic = +in(ori):3 + * ro de = +ro(winkeys):3 + * ro us = +ro(std):3 + * ro academic = +ro(std):3 + * ro std_comma = +ro(std):3 + * ro comma = +ro(basic):3 + * ru os = +ru(os_legacy):3 + * pk urd = +pk(urd-phonetic):3 + * sapmi basic = +no(smi):3 + * sapmi nodeadkeys = +no(smi_nodeadkeys):3 + * sapmi sefi = +fi(smi):3 + * sin phonetic-static = +in(sin_phonetic):3 + * syr basic = +sy(syc):3 + * syr phonetic = +sy(syc_phonetic):3 + * tam INSCRIPT = +in(tam):3 + * tam UNI = +in(tam_unicode):3 + * tam NUMERAL-KEYBOARD = +in(tam_keyboard_with_numerals):3 + * tam TAB = +in(tam_TAB):3 + * tam TSCII = +in(tam_TSCII):3 + * tel basic = +in(tel):3 + * yu basic = +srp(latin):3 + * yu unicode = +srp(latinunicode):3 + * yu yz = +srp(latinyz):3 + * yu unicodeyz = +srp(latinunicodeyz):3 + +! model layout[4] variant[4] = symbols + * ben basic = +in(ben):4 + * ben probhat = +in(ben_probhat):4 + * dev basic = +in(deva):4 + * dvorak $dvoraklayouts = +%v(dvorak):4 + * dvorak basic = +us(dvorak):4 + * dvorak pl_basic = +pl(dvorak):4 + * dvorak pl = +pl(dvorak_quotes):4 + * dvorak pl_altquotes = +pl(dvorak_altquotes):4 + * dzdwi basic = +bt(basic):4 + * fi basic = +fi(classic):4 + * ge azerty_tskapo = +fr(geo):4 + * guj basic = +in(guj):4 + * gur basic = +in(guru):4 + * ie laptop = +ie(basic):4 + * ie CloGaelachLaptop = +ie(CloGaelach):4 + * in urd = +in(urd-phonetic):4 + * iu basic = +ca(ike):4 + * lo basic = +la(basic):4 + * kan basic = +in(kan):4 + * mal basic = +in(mal):4 + * mal mlplusnum = +in(mal):4 + * ogham basic = +ie(ogam):4 + * ogham laptop = +ie(ogam):4 + * ogham is434 = +ie(ogam_is434):4 + * ogham is434laptop = +ie(ogam_is434):4 + * ori basic = +in(ori):4 + * ro de = +ro(winkeys):4 + * ro us = +ro(std):4 + * ro academic = +ro(std):4 + * ro std_comma = +ro(std):4 + * ro comma = +ro(basic):4 + * ru os = +ru(os_legacy):4 + * pk urd = +pk(urd-phonetic):4 + * sapmi basic = +no(smi):4 + * sapmi nodeadkeys = +no(smi_nodeadkeys):4 + * sapmi sefi = +fi(smi):4 + * sin phonetic-static = +in(sin_phonetic):4 + * syr basic = +sy(syc):4 + * syr phonetic = +sy(syc_phonetic):4 + * tam INSCRIPT = +in(tam):4 + * tam UNI = +in(tam_unicode):4 + * tam NUMERAL-KEYBOARD = +in(tam_keyboard_with_numerals):4 + * tam TAB = +in(tam_TAB):4 + * tam TSCII = +in(tam_TSCII):4 + * tel basic = +in(tel):4 + * yu basic = +srp(latin):4 + * yu unicode = +srp(latinunicode):4 + * yu yz = +srp(latinyz):4 + * yu unicodeyz = +srp(latinunicodeyz):4 + +! model = symbols + $evdevkbds = +inet(evdev)+inet(%m) + applealu_jis = +inet(evdev)+macintosh_vndr/jp(alujiskeys) + * = +inet(evdev) + +! model layout = symbols + +! layout variant = compat + de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de adnw = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + jp $sun_compat = complete+japan(kana_lock) + +! layout[1] variant[1] = compat + de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de adnw = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + jp $sun_compat = complete+japan(kana_lock) + +! layout[2] variant[2] = compat + de neo = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de adnw = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + jp $sun_compat = +complete+japan(kana_lock):2 + +! layout[3] variant[3] = compat + de neo = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de adnw = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + jp $sun_compat = +complete+japan(kana_lock):3 + +! layout[4] variant[4] = compat + de neo = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de adnw = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + jp $sun_compat = +complete+japan(kana_lock):4 + +! model layout = compat + pc98 nec_vndr/jp = pc98(basic) + * jp = complete+japan + olpc * = olpc + olpcm * = olpc + * * = complete + +! model layout[1] = compat + * * = complete + +! model = types + $macs = complete+numpad(mac) + $applealu = complete+numpad(mac) + $nokiamodels = complete+nokia + * = complete + +! layout option = symbols + $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle) + * misc:typo = +typo(base) + +! layout[1] option = symbols + $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):1 + * misc:typo = +typo(base):1 + +! layout[2] option = symbols + $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):2 + * misc:typo = +typo(base):2 + +! layout[3] option = symbols + $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):3 + * misc:typo = +typo(base):3 + +! layout[4] option = symbols + $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):4 + * misc:typo = +typo(base):4 + +! option = symbols + grp:shift_toggle = +group(shifts_toggle) + altwin:menu = +altwin(menu) + altwin:meta_alt = +altwin(meta_alt) + altwin:alt_win = +altwin(alt_win) + altwin:ctrl_win = +altwin(ctrl_win) + altwin:ctrl_alt_win = +altwin(ctrl_alt_win) + altwin:meta_win = +altwin(meta_win) + altwin:left_meta_win = +altwin(left_meta_win) + altwin:hyper_win = +altwin(hyper_win) + altwin:alt_super_win = +altwin(alt_super_win) + altwin:swap_alt_win = +altwin(swap_alt_win) + grab:debug = +srvr_ctrl(grab_debug) + grp:switch = +group(switch) + grp:lswitch = +group(lswitch) + grp:win_switch = +group(win_switch) + grp:lwin_switch = +group(lwin_switch) + grp:rwin_switch = +group(rwin_switch) + grp:toggle = +group(toggle) + grp:shifts_toggle = +group(shifts_toggle) + grp:ctrls_toggle = +group(ctrls_toggle) + grp:alts_toggle = +group(alts_toggle) + grp:caps_toggle = +capslock(grouplock) + grp:caps_switch = +capslock(groupshift) + grp:shift_caps_toggle = +group(shift_caps_toggle) + grp:shift_caps_switch = +group(shift_caps_switch) + grp:win_space_toggle = +group(win_space_toggle) + grp:win_menu_switch = +group(win_menu_switch) + grp:alt_caps_toggle = +group(alt_caps_toggle) + grp:alt_space_toggle = +group(alt_space_toggle) + grp:menu_toggle = +group(menu_toggle) + grp:lwin_toggle = +group(lwin_toggle) + grp:rwin_toggle = +group(rwin_toggle) + grp:lshift_toggle = +group(lshift_toggle) + grp:rshift_toggle = +group(rshift_toggle) + grp:rctrl_switch = +group(rctrl_switch) + grp:lctrl_toggle = +group(lctrl_toggle) + grp:rctrl_toggle = +group(rctrl_toggle) + grp:lalt_toggle = +group(lalt_toggle) + grp:sclk_toggle = +group(sclk_toggle) + grp:lctrl_rctrl_switch = +group(lctrl_rctrl_switch) + grp:lctrl_lwin_rctrl_menu = +group(lctrl_lwin_rctrl_menu) + grp:lctrl_lalt_toggle = +group(lctrl_lalt_toggle) + grp:rctrl_ralt_toggle = +group(rctrl_ralt_toggle) + grp:ctrl_alt_toggle = +group(ctrl_alt_toggle) + grp:ctrl_alt_toggle_bidir = +group(ctrl_alt_toggle_bidir) + grp:lctrl_lshift_toggle = +group(lctrl_lshift_toggle) + grp:rctrl_rshift_toggle = +group(rctrl_rshift_toggle) + grp:ctrl_shift_toggle = +group(ctrl_shift_toggle) + grp:ctrl_shift_toggle_bidir = +group(ctrl_shift_toggle_bidir) + grp:lalt_lshift_toggle = +group(lalt_lshift_toggle) + grp:ralt_rshift_toggle = +group(ralt_rshift_toggle) + grp:alt_shift_toggle = +group(alt_shift_toggle) + grp:alt_shift_toggle_bidir = +group(alt_shift_toggle_bidir) + lv3:switch = +level3(switch) + lv3:ralt_switch = +level3(ralt_switch) + lv3:ralt_switch_multikey = +level3(ralt_switch_multikey) + lv3:ralt_alt = +level3(ralt_alt) + lv3:lalt_switch = +level3(lalt_switch) + lv3:alt_switch = +level3(alt_switch) + lv3:menu_switch = +level3(menu_switch) + lv3:win_switch = +level3(win_switch) + lv3:lwin_switch = +level3(lwin_switch) + lv3:rwin_switch = +level3(rwin_switch) + lv3:enter_switch = +level3(enter_switch) + caps:capslock = +capslock(capslock) + caps:numlock = +capslock(numlock) + caps:shiftlock = +capslock(shiftlock) + caps:swapescape = +capslock(swapescape) + caps:escape = +capslock(escape) + caps:backspace = +capslock(backspace) + caps:super = +capslock(super) + caps:hyper = +capslock(hyper) + caps:none = +capslock(none) + caps:ctrl_modifier = +capslock(ctrl_modifier) + ctrl:nocaps = +ctrl(nocaps) + ctrl:lctrl_meta = +ctrl(lctrl_meta) + ctrl:swapcaps = +ctrl(swapcaps) + ctrl:ac_ctrl = +ctrl(ac_ctrl) + ctrl:aa_ctrl = +ctrl(aa_ctrl) + ctrl:rctrl_ralt = +ctrl(rctrl_ralt) + ctrl:menu_rctrl = +ctrl(menu_rctrl) + ctrl:ralt_rctrl = +ctrl(ralt_rctrl) + ctrl:swap_lalt_lctl = +ctrl(swap_lalt_lctl) + ctrl:swap_lwin_lctl = +ctrl(swap_lwin_lctl) + ctrl:swap_rwin_rctl = +ctrl(swap_rwin_rctl) + ctrl:swap_lalt_lctl_lwin = +ctrl(swap_lalt_lctl_lwin) + compose:ralt = +compose(ralt) + compose:lwin = +compose(lwin) + compose:lwin-altgr = +compose(lwin-altgr) + compose:rwin = +compose(rwin) + compose:rwin-altgr = +compose(rwin-altgr) + compose:menu = +compose(menu) + compose:menu-altgr = +compose(menu-altgr) + compose:lctrl = +compose(lctrl) + compose:lctrl-altgr = +compose(lctrl-altgr) + compose:rctrl = +compose(rctrl) + compose:rctrl-altgr = +compose(rctrl-altgr) + compose:caps = +compose(caps) + compose:caps-altgr = +compose(caps-altgr) + compose:102 = +compose(102) + compose:102-altgr = +compose(102-altgr) + compose:paus = +compose(paus) + compose:prsc = +compose(prsc) + compose:sclk = +compose(sclk) + srvrkeys:none = +srvr_ctrl(no_srvr_keys) + eurosign:e = +eurosign(e) + eurosign:2 = +eurosign(2) + eurosign:4 = +eurosign(4) + eurosign:5 = +eurosign(5) + rupeesign:4 = +rupeesign(4) + keypad:oss = +keypad(oss) + keypad:legacy = +keypad(legacy) + keypad:legacy_wang = +keypad(legacy_wang) + keypad:oss_wang = +keypad(oss_wang) + keypad:future = +keypad(future) + keypad:future_wang = +keypad(future_wang) + keypad:hex = +keypad(ops)+keypad(hex) + keypad:atm = +keypad(ops)+keypad(hex)+keypad(atm) + nbsp:none = +nbsp(none) + nbsp:level2 = +nbsp(level2) + nbsp:level3 = +nbsp(level3) + nbsp:level3s = +nbsp(level3s) + nbsp:level3n = +nbsp(level3n) + nbsp:level4 = +nbsp(level4) + nbsp:level4n = +nbsp(level4n) + nbsp:level4nl = +nbsp(level4nl) + japan:nicola_f_bs = +jp(nicola_f_bs) + japan:hztg_escape = +jp(hztg_escape) + kpdl:dot = +kpdl(dot) + kpdl:comma = +kpdl(comma) + kpdl:dotoss = +kpdl(dotoss) + kpdl:dotoss_latin9 = +kpdl(dotoss_latin9) + kpdl:commaoss = +kpdl(commaoss) + kpdl:momayyezoss = +kpdl(momayyezoss) + kpdl:kposs = +kpdl(kposs) + kpdl:semi = +kpdl(semi) + shift:breaks_caps = +shift(breaks_caps) + esperanto:qwerty = +epo(qwerty) + esperanto:dvorak = +epo(dvorak) + esperanto:colemak = +epo(colemak) + terminate:ctrl_alt_bksp = +terminate(ctrl_alt_bksp) + keypad:pointerkeys = +keypad(pointerkeys) + apple:alupckeys = +macintosh_vndr/apple(alupckeys) + shift:both_capslock = +shift(both_capslock) + shift:lshift_both_capslock = +shift(lshift_both_capslock) + shift:rshift_both_capslock = +shift(rshift_both_capslock) + shift:both_capslock_cancel = +shift(both_capslock_cancel) + shift:lshift_both_capslock_cancel = +shift(lshift_both_capslock_cancel) + shift:rshift_both_capslock_cancel = +shift(rshift_both_capslock_cancel) + shift:both_shiftlock = +shift(both_shiftlock) + shift:lshift_both_shiftlock = +shift(lshift_both_shiftlock) + shift:rshift_both_shiftlock = +shift(rshift_both_shiftlock) + solaris:sun_compat = +sun_vndr/solaris(sun_compat) + lv3:caps_switch = +level3(caps_switch) + lv3:bksl_switch = +level3(bksl_switch) + lv3:lsgt_switch = +level3(lsgt_switch) + lv3:caps_switch_latch = +level3(caps_switch_latch) + lv3:bksl_switch_latch = +level3(bksl_switch_latch) + lv3:lsgt_switch_latch = +level3(lsgt_switch_latch) + lv5:lsgt_switch_lock = +level5(lsgt_switch_lock) + lv5:ralt_switch_lock = +level5(ralt_switch_lock) + lv5:lwin_switch_lock = +level5(lwin_switch_lock) + lv5:rwin_switch_lock = +level5(rwin_switch_lock) + lv5:lsgt_switch_lock_cancel = +level5(lsgt_switch_lock_cancel) + lv5:ralt_switch_lock_cancel = +level5(ralt_switch_lock_cancel) + lv5:lwin_switch_lock_cancel = +level5(lwin_switch_lock_cancel) + lv5:rwin_switch_lock_cancel = +level5(rwin_switch_lock_cancel) + + + +! option = compat + grp_led:num = +lednum(group_lock) + grp_led:caps = +ledcaps(group_lock) + grp_led:scroll = +ledscroll(group_lock) + japan:kana_lock = +japan(kana_lock) + caps:shiftlock = +ledcaps(shift_lock) + grab:break_actions = +xfree86(grab_break) + + +! option = types + caps:internal = +caps(internal) + caps:internal_nocancel = +caps(internal_nocancel) + caps:shift = +caps(shift) + caps:shift_nocancel = +caps(shift_nocancel) + numpad:pc = +numpad(pc) + numpad:mac = +numpad(mac) + numpad:microsoft = +numpad(microsoft) + numpad:shift3 = +numpad(shift3) diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/evdev-xkbcommon b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/evdev-xkbcommon new file mode 100644 index 0000000..bde6ad2 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/evdev-xkbcommon @@ -0,0 +1,1092 @@ +// DO NOT EDIT THIS FILE - IT WAS AUTOGENERATED BY merge.sh FROM rules/*.part +// +// Rules for resolving XKB components for use with XFree86 +// Copyright 1996 by Joseph Moss +// +// 2002 Modifier: Ivan Pascal The XFree86 Project +// + +// If you want non-latin layouts implicitly include the en_US layout +// uncomment lines below +//! $nonlatin = am ara ben bd bg bt by cs deva ge gh gr guj guru il \ +// in ir iku jp kan kh kr la lao lk mk mm mn mv mal ori pk \ +// ru scc sy syr tel th tj tam ua uz + +// PC models +! $pcmodels = pc101 pc102 pc104 pc105 + +// Microsoft models (using MS geometry) +! $msmodels = microsoft microsoft4000 microsoft7000 microsoftpro microsoftprousb microsoftprose + +// Nokia devices and keyboards +! $nokiamodels = nokiasu8w nokiarx44 nokiarx51 + +// PC geometries - they have special geometry but symbols are mostly pc105 +! $pcgeometries = latitude + +// TypeMatrix geometries +! $tmgeometries = tm2020 tm2030PS2 tm2030USB tm2030USB-102 tm2030USB-106 + +// Layouts that provide further specializations for the OLPC +! $olpclayouts = af am ara br ca es et fr it kh kz in mn np ru th tr us + +! $macbooks = macbook78 macbook79 +! $maclaptop = ibook powerbook macbook78 macbook79 +! $applealu = applealu_ansi applealu_iso applealu_jis +! $macs = macintosh macintosh_old ibook powerbook macbook78 macbook79 + +! $macvendorlayouts = ch de dk fi fr gb is it latam nl no pt se us + +! $azerty = be fr +! $qwertz = al cz de hr hu ro si sk + +! $inetkbds = acer_c300 acer_ferrari4k acer_laptop \ + airkey \ + apple armada azonaRF2300 \ + benqx brother \ + btc5113rf btc9000 btc9000a btc9001ah btc5090 btc9019u \ + cherryblue cherrybluea cherryblueb \ + cherrycyboard cherrycmexpert \ + chicony chicony0108 chicony0420 chicony9885 \ + compalfl90 \ + compaqeak8 compaqik7 compaqik13 compaqik18 \ + creativedw7000 \ + cymotionlinux \ + dell dellm65 inspiron dellusbmm \ + emachines ennyah_dkb1008 evdev \ + genius geniuscomfy2 \ + gyration honeywell_euroboard \ + hp250x hp5xx hp500fa hpdv5 \ + hpi6 hpxe3gc hpxe3gf hpxe4xxx hpxt1000 hpzt11xx htcdream \ + ibm_spacesaver ipaq inspiron intel \ + logiaccess logicda logicink \ + logiex110 logiclx300 \ + logiinkse logiinkseusb logiitc logiik \ + logitech_base itouch logiultrax \ + logitech_g15 \ + logidinovo logidinovoedge \ + microsoft4000 microsoft7000 microsoftinet microsoftprousb microsoftprooem microsoftprose \ + microsoftoffice microsoftmult \ + mx1998 mx2500 mx2750 \ + oretec \ + pc105 \ + presario propeller \ + qtronix \ + rapidaccess rapidaccess2 thinkpad60 \ + samsung4500 samsung4510 \ + silvercrest \ + sk1300 sk2500 sk6200 sk7100 \ + sven sven303 symplon \ + toshiba_s3000 trust trustda \ + unitekkb1925 yahoo + +// all layouts with 3rd and 4th groups +! $threelevellayouts = al az \ + be br bt \ + ca ch cs cz \ + de dk \ + ee es \ + fi fo fr \ + gb gr \ + hu \ + ie ir is it \ + latam \ + lk lt \ + mn mt \ + nl no \ + pl pt \ + ro \ + se sk \ + tr \ + us \ + vn \ + za + +! $evdevkbds = ibm_spacesaver + +! $thinkpads = thinkpad thinkpad60 thinkpadz60 + +! $sun_t6_custom = ara be br ca ch cz de dk \ + ee es fi fr gb gr it kr \ + lt lv nl no pl pt ro ru \ + se sk tr tw ua + +! $htcdreamlayouts = us it de + +! $dvoraklayouts = br ca de ee es fr gb no pl se us + +! model = keycodes + * = evdev-xkbcommon + +! layout[1] = keycodes + $azerty = +aliases-xkbcommon(azerty) + $qwertz = +aliases-xkbcommon(qwertz) + * = +aliases-xkbcommon(qwerty) + +! layout = keycodes + $azerty = +aliases-xkbcommon(azerty) + $qwertz = +aliases-xkbcommon(qwertz) + * = +aliases-xkbcommon(qwerty) + +! model layout = geometry + thinkpad us = thinkpad(us) + +! model = geometry + microsoftelite = microsoft(elite) + $msmodels = microsoft(natural) + dell101 = dell(dell101) + dellm65 = dell(dellm65) + latitude = dell(latitude) + flexpro = keytronic(FlexPro) + hp6000 = hp(omnibook) + hpmini110 = hp(mini110) + hpdv5 = hp(dv5) + omnikey101 = northgate(omnikey101) + sanwaskbkg3 = sanwa(sanwaskbkg3) + $pcmodels = pc(%m) + $pcgeometries = pc(%m) + everex = everex(STEPnote) + thinkpad = thinkpad(intl) + thinkpad60 = thinkpad(60) + thinkpadz60 = thinkpad(60) + $tmgeometries = typematrix(%m) + winbook = winbook(XP5) + pc98 = nec(pc98) + $applealu = macintosh(%m) + $macbooks = macintosh(%m) + $macs = macintosh(macintosh) + hhk = hhk(basic) + kinesis = kinesis(model100) + $nokiamodels = nokia(%m) + * = pc(pc104) + +! model layout variant = symbols + * ben basic = pc+in(ben) + * ben probhat = pc+in(ben_probhat) + * dev basic = pc+in(deva) + * dvorak $dvoraklayouts = pc+%v(dvorak) + * dvorak basic = pc+us(dvorak) + * dvorak pl_basic = pc+pl(dvorak) + * dvorak pl = pc+pl(dvorak_quotes) + * dvorak pl_altquotes = pc+pl(dvorak_altquotes) + * dzdwi basic = pc+bt(basic) + * fi basic = pc+fi(classic) + * ge azerty_tskapo = pc+fr(geo) + * guj basic = pc+in(guj) + * gur basic = pc+in(guru) + * ie laptop = pc+ie(basic) + * ie CloGaelachLaptop = pc+ie(CloGaelach) + * in urd = pc+in(urd-phonetic) + * iu basic = pc+ca(ike) + * lo basic = pc+la(basic) + * kan basic = pc+in(kan) + * mal basic = pc+in(mal) + * mal mlplusnum = pc+in(mal) + * ogham basic = pc+ie(ogam) + * ogham laptop = pc+ie(ogam) + * ogham is434 = pc+ie(ogam_is434) + * ogham is434laptop = pc+ie(ogam_is434) + * ori basic = pc+in(ori) + * ro de = pc+ro(winkeys) + * ro us = pc+ro(std) + * ro academic = pc+ro(std) + * ro std_comma = pc+ro(std) + * ro comma = pc+ro(basic) + * ru os = pc+ru(os_legacy) + * pk urd = pc+pk(urd-phonetic) + * sapmi basic = pc+no(smi) + * sapmi nodeadkeys = pc+no(smi_nodeadkeys) + * sapmi sefi = pc+fi(smi) + * sin phonetic-static = pc+in(sin_phonetic) + * syr basic = pc+sy(syc) + * syr phonetic = pc+sy(syc_phonetic) + * tam INSCRIPT = pc+in(tam) + * tam UNI = pc+in(tam_unicode) + * tam NUMERAL-KEYBOARD = pc+in(tam_keyboard_with_numerals) + * tam TAB = pc+in(tam_TAB) + * tam TSCII = pc+in(tam_TSCII) + * tel basic = pc+in(tel) + * yu basic = pc+srp(latin) + * yu unicode = pc+srp(latinunicode) + * yu yz = pc+srp(latinyz) + * yu unicodeyz = pc+srp(latinunicodeyz) + classmate us intl = pc+us(classmate-intl) + classmate us alt-intl = pc+us(classmate-alt-intl) + classmate us altgr-intl = pc+us(classmate-altgr-intl) + nokiarx51 cz qwerty = nokia_vndr/rx-51(cz_qwerty) + +! model layout = symbols + * ar = pc+ara + * ben = pc+in(ben) + * bs = pc+ba + * cs = pc+rs + * cz_qwerty = pc+cz(qwerty) + * dev = pc+in(deva) + * dvorak = pc+us(dvorak) + * dzdwi = pc+bt + * el = pc+gr + * en_US = pc+latin + * guj = pc+in(guj) + * gur = pc+in(guru) + * iu = pc+ca(ike) + * lo = pc+la + * kan = pc+in(kan) + * mi = pc+mao + * ml = pc+in(mal) + * ogham = pc+ie(ogam) + * ori = pc+ie(ori) + * sapmi = pc+no(smi) + * sr = pc+srp + * syr = pc+sy(syc) + * tel = pc+in(tel) + * tml = pc+in(tam) + * yu = pc+srp + * fr-latin9 = pc+fr(latin9) + * us_intl = pc+us(alt-intl) + * ben(basic) = pc+in(ben) + * ben(probhat) = pc+in(ben_probhat) + * dev(basic) = pc+in(deva) + * dvorak($dvoraklayouts) = pc+%v(dvorak) + * dvorak(basic) = pc+us(dvorak) + * dvorak(pl_basic) = pc+pl(dvorak) + * dvorak(pl) = pc+pl(dvorak_quotes) + * dvorak(pl_altquotes) = pc+pl(dvorak_altquotes) + * dzdwi(basic) = pc+bt(basic) + * fi(basic) = pc+fi(classic) + * ge(azerty_tskapo) = pc+fr(geo) + * guj(basic) = pc+in(guj) + * gur(basic) = pc+in(guru) + * ie(laptop) = pc+ie(basic) + * ie(CloGaelachLaptop) = pc+ie(CloGaelach) + * in(urd) = pc+in(urd-phonetic) + * iu(basic) = pc+ca(ike) + * lo(basic) = pc+la(basic) + * kan(basic) = pc+in(kan) + * mal(basic) = pc+in(mal) + * mal(mlplusnum) = pc+in(mal) + * ogham(basic) = pc+ie(ogam) + * ogham(laptop) = pc+ie(ogam) + * ogham(is434) = pc+ie(ogam_is434) + * ogham(is434laptop) = pc+ie(ogam_is434) + * ori(basic) = pc+in(ori) + * ro(de) = pc+ro(winkeys) + * ro(us) = pc+ro(std) + * ro(academic) = pc+ro(std) + * ro(std_comma) = pc+ro(std) + * ro(comma) = pc+ro(basic) + * ru(os) = pc+ru(os_legacy) + * pk(urd) = pc+pk(urd-phonetic) + * sapmi(basic) = pc+no(smi) + * sapmi(nodeadkeys) = pc+no(smi_nodeadkeys) + * sapmi(sefi) = pc+fi(smi) + * sin(phonetic-static) = pc+in(sin_phonetic) + * syr(basic) = pc+sy(syc) + * syr(phonetic) = pc+sy(syc_phonetic) + * tam(INSCRIPT) = pc+in(tam) + * tam(UNI) = pc+in(tam_unicode) + * tam(NUMERAL-KEYBOARD) = pc+in(tam_keyboard_with_numerals) + * tam(TAB) = pc+in(tam_TAB) + * tam(TSCII) = pc+in(tam_TSCII) + * tel(basic) = pc+in(tel) + * yu(basic) = pc+srp(latin) + * yu(unicode) = pc+srp(latinunicode) + * yu(yz) = pc+srp(latinyz) + * yu(unicodeyz) = pc+srp(latinunicodeyz) + ataritt $nonlatin = xfree68_vndr/ataritt(us)+%l%(v):2 + ataritt * = xfree68_vndr/ataritt(us)+%l%(v) + amiga $nonlatin = xfree68_vndr/amiga(usa1)+%l%(v):2 + amiga * = xfree68_vndr/amiga(usa1)+%l%(v) + classmate us = pc+%l(classmate) + empty * = empty(basic) + * empty = empty(basic) + sun4 $nonlatin = latin+sun_vndr/us(type4)+%l%(v):2 + sun4 * = latin+sun_vndr/us(type4)+%l%(v) + sun5 $nonlatin = latin+sun_vndr/us(type5)+%l%(v):2 + sun5 * = latin+sun_vndr/us(type5)+%l%(v) + sun6 us = pc+sun_vndr/us(type6) + sun6 en_US = pc+sun_vndr/us(type6)+iso9995-3(basic) + sun6 $sun_t6_custom = pc+sun_vndr/us(type6)+sun_vndr/%l%(v) + sun6 * = pc+sun_vndr/us(type6)+%l%(v) + sun6euro us = pc+sun_vndr/us(type6) + sun6euro en_US = pc+sun_vndr/us(type6)+iso9995-3(basic) + sun6euro $sun_t6_custom = pc+sun_vndr/us(type6)+sun_vndr/%l%(v) + sun6euro * = pc+sun_vndr/us(type6)+%l%(v) + pc98 nec_vndr/jp = nec_vndr/jp(pc98) + macintosh_old us = macintosh_vndr/us(oldmac) + macintosh_old en_US = macintosh_vndr/us(oldmac) + macintosh_old $macvendorlayouts = macintosh_vndr/us(oldmac)+macintosh_vndr/%l%(v) + macintosh_old $nonlatin = macintosh_vndr/us(oldmac)+%l%(v):2 + macintosh_old * = macintosh_vndr/us(oldmac)+%l%(v) + applealu_jis jp = macintosh_vndr/apple(alukbd)+macintosh_vndr/jp(usmac)+macintosh_vndr/jp(mac):2 + applealu_jis * = macintosh_vndr/apple(alukbd)+%l%(v)+macintosh_vndr/jp(mac):2 + $applealu $macvendorlayouts = macintosh_vndr/apple(alukbd)+macintosh_vndr/%l%(v) + $applealu * = macintosh_vndr/apple(alukbd)+%l%(v) + $macs en_US = pc+macintosh_vndr/us(extended) + $macs $macvendorlayouts = pc+macintosh_vndr/%l%(v) + nokiarx44 * = nokia_vndr/rx-44(%l) + nokiarx51 cz(qwerty) = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(cz_qwerty) + nokiarx51 * = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(%l%_v) + nokiasu8w * = nokia_vndr/su-8w(%l) + olpc $olpclayouts = olpc+%l%(m) + olpc * = olpc+%l%(v) + $thinkpads br = pc+br(thinkpad) + htcdream $htcdreamlayouts = %l(htcdream) + * $nonlatin = pc+us+%l%(v):2 + * * = pc+%l%(v) + +! model layout[1] = symbols + * ar = pc+ara%(v[1]) + * ben = pc+in(ben) + * bs = pc+ba%(v[1]) + * cs = pc+rs%(v[1]) + * cz_qwerty = pc+cz(qwerty) + * dev = pc+in(deva) + * dvorak = pc+us(dvorak) + * dzdwi = pc+bt%(v[1]) + * el = pc+gr%(v[1]) + * en_US = pc+latin%(v[1]) + * guj = pc+in(guj) + * gur = pc+in(guru) + * iu = pc+ca(ike) + * lo = pc+la%(v[1]) + * kan = pc+in(kan) + * mi = pc+mao%(v[1]) + * ml = pc+in(mal) + * ogham = pc+ie(ogam) + * ori = pc+ie(ori) + * sapmi = pc+no(smi) + * sr = pc+srp%(v[1]) + * syr = pc+sy(syc) + * tel = pc+in(tel) + * tml = pc+in(tam) + * yu = pc+srp%(v[1]) + * fr-latin9 = pc+fr(latin9) + * us_intl = pc+us(alt-intl) + * ben(basic) = pc+in(ben) + * ben(probhat) = pc+in(ben_probhat) + * dev(basic) = pc+in(deva) + * dvorak($dvoraklayouts) = pc+%v(dvorak) + * dvorak(basic) = pc+us(dvorak) + * dvorak(pl_basic) = pc+pl(dvorak) + * dvorak(pl) = pc+pl(dvorak_quotes) + * dvorak(pl_altquotes) = pc+pl(dvorak_altquotes) + * dzdwi(basic) = pc+bt(basic) + * fi(basic) = pc+fi(classic) + * ge(azerty_tskapo) = pc+fr(geo) + * guj(basic) = pc+in(guj) + * gur(basic) = pc+in(guru) + * ie(laptop) = pc+ie(basic) + * ie(CloGaelachLaptop) = pc+ie(CloGaelach) + * in(urd) = pc+in(urd-phonetic) + * iu(basic) = pc+ca(ike) + * lo(basic) = pc+la(basic) + * kan(basic) = pc+in(kan) + * mal(basic) = pc+in(mal) + * mal(mlplusnum) = pc+in(mal) + * ogham(basic) = pc+ie(ogam) + * ogham(laptop) = pc+ie(ogam) + * ogham(is434) = pc+ie(ogam_is434) + * ogham(is434laptop) = pc+ie(ogam_is434) + * ori(basic) = pc+in(ori) + * ro(de) = pc+ro(winkeys) + * ro(us) = pc+ro(std) + * ro(academic) = pc+ro(std) + * ro(std_comma) = pc+ro(std) + * ro(comma) = pc+ro(basic) + * ru(os) = pc+ru(os_legacy) + * pk(urd) = pc+pk(urd-phonetic) + * sapmi(basic) = pc+no(smi) + * sapmi(nodeadkeys) = pc+no(smi_nodeadkeys) + * sapmi(sefi) = pc+fi(smi) + * sin(phonetic-static) = pc+in(sin_phonetic) + * syr(basic) = pc+sy(syc) + * syr(phonetic) = pc+sy(syc_phonetic) + * tam(INSCRIPT) = pc+in(tam) + * tam(UNI) = pc+in(tam_unicode) + * tam(NUMERAL-KEYBOARD) = pc+in(tam_keyboard_with_numerals) + * tam(TAB) = pc+in(tam_TAB) + * tam(TSCII) = pc+in(tam_TSCII) + * tel(basic) = pc+in(tel) + * yu(basic) = pc+srp(latin) + * yu(unicode) = pc+srp(latinunicode) + * yu(yz) = pc+srp(latinyz) + * yu(unicodeyz) = pc+srp(latinunicodeyz) + ataritt * = xfree68_vndr/ataritt(us)+%l[1]%(v[1]) + amiga * = xfree68_vndr/amiga(usa1)+%l[1]%(v[1]) + sun4 * = latin+sun_vndr/us(type4)+%l[1]%(v[1]) + sun5 * = latin+sun_vndr/us(type5)+%l[1]%(v[1]) + macintosh_old us = macintosh_vndr/us(oldmac) + macintosh_old $macvendorlayouts = macintosh_vndr/us(oldmac)+macintosh_vndr/%l[1]%(v[1]) + macintosh_old * = macintosh_vndr/us(oldmac)+%l[1]%(v[1]) + applealu_jis us = macintosh_vndr/apple(alukbd)+macintosh_vndr/jp(usmac) + $applealu $macvendorlayouts = macintosh_vndr/apple(alukbd)+macintosh_vndr/%l[1]%(v[1]) + $applealu * = macintosh_vndr/apple(alukbd)+%l[1]%(v[1]) + $macs $macvendorlayouts = pc+macintosh_vndr/%l[1]%(v[1]) + nokiarx51 cz(qwerty) = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(cz_qwerty) + nokiarx51 * = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(%l[1]%_v[1]) + $thinkpads br = pc+%l[1](thinkpad) + * * = pc+%l[1]%(v[1]) + +! model layout[1] variant[1] = symbols + * ben basic = pc+in(ben) + * ben probhat = pc+in(ben_probhat) + * dev basic = pc+in(deva) + * dvorak $dvoraklayouts = pc+%v(dvorak) + * dvorak basic = pc+us(dvorak) + * dvorak pl_basic = pc+pl(dvorak) + * dvorak pl = pc+pl(dvorak_quotes) + * dvorak pl_altquotes = pc+pl(dvorak_altquotes) + * dzdwi basic = pc+bt(basic) + * fi basic = pc+fi(classic) + * ge azerty_tskapo = pc+fr(geo) + * guj basic = pc+in(guj) + * gur basic = pc+in(guru) + * ie laptop = pc+ie(basic) + * ie CloGaelachLaptop = pc+ie(CloGaelach) + * in urd = pc+in(urd-phonetic) + * iu basic = pc+ca(ike) + * lo basic = pc+la(basic) + * kan basic = pc+in(kan) + * mal basic = pc+in(mal) + * mal mlplusnum = pc+in(mal) + * ogham basic = pc+ie(ogam) + * ogham laptop = pc+ie(ogam) + * ogham is434 = pc+ie(ogam_is434) + * ogham is434laptop = pc+ie(ogam_is434) + * ori basic = pc+in(ori) + * ro de = pc+ro(winkeys) + * ro us = pc+ro(std) + * ro academic = pc+ro(std) + * ro std_comma = pc+ro(std) + * ro comma = pc+ro(basic) + * ru os = pc+ru(os_legacy) + * pk urd = pc+pk(urd-phonetic) + * sapmi basic = pc+no(smi) + * sapmi nodeadkeys = pc+no(smi_nodeadkeys) + * sapmi sefi = pc+fi(smi) + * sin phonetic-static = pc+in(sin_phonetic) + * syr basic = pc+sy(syc) + * syr phonetic = pc+sy(syc_phonetic) + * tam INSCRIPT = pc+in(tam) + * tam UNI = pc+in(tam_unicode) + * tam NUMERAL-KEYBOARD = pc+in(tam_keyboard_with_numerals) + * tam TAB = pc+in(tam_TAB) + * tam TSCII = pc+in(tam_TSCII) + * tel basic = pc+in(tel) + * yu basic = pc+srp(latin) + * yu unicode = pc+srp(latinunicode) + * yu yz = pc+srp(latinyz) + * yu unicodeyz = pc+srp(latinunicodeyz) + +! model layout[2] = symbols + * ar = +ara%(v[2]):2 + * ben = +in(ben):2 + * bs = +ba%(v[2]):2 + * cs = +rs%(v[2]):2 + * cz_qwerty = +cz(qwerty):2 + * dev = +in(deva):2 + * dvorak = +us(dvorak):2 + * dzdwi = +bt%(v[2]):2 + * el = +gr%(v[2]):2 + * en_US = +latin%(v[2]):2 + * guj = +in(guj):2 + * gur = +in(guru):2 + * iu = +ca(ike):2 + * lo = +la%(v[2]):2 + * kan = +in(kan):2 + * mi = +mao%(v[2]):2 + * ml = +in(mal):2 + * ogham = +ie(ogam):2 + * ori = +ie(ori):2 + * sapmi = +no(smi):2 + * sr = +srp%(v[2]):2 + * syr = +sy(syc):2 + * tel = +in(tel):2 + * tml = +in(tam):2 + * yu = +srp%(v[2]):2 + * fr-latin9 = +fr(latin9):2 + * us_intl = +us(alt-intl):2 + * ben(basic) = +in(ben):2 + * ben(probhat) = +in(ben_probhat):2 + * dev(basic) = +in(deva):2 + * dvorak($dvoraklayouts) = +%v(dvorak):2 + * dvorak(basic) = +us(dvorak):2 + * dvorak(pl_basic) = +pl(dvorak):2 + * dvorak(pl) = +pl(dvorak_quotes):2 + * dvorak(pl_altquotes) = +pl(dvorak_altquotes):2 + * dzdwi(basic) = +bt(basic):2 + * fi(basic) = +fi(classic):2 + * ge(azerty_tskapo) = +fr(geo):2 + * guj(basic) = +in(guj):2 + * gur(basic) = +in(guru):2 + * ie(laptop) = +ie(basic):2 + * ie(CloGaelachLaptop) = +ie(CloGaelach):2 + * in(urd) = +in(urd-phonetic):2 + * iu(basic) = +ca(ike):2 + * lo(basic) = +la(basic):2 + * kan(basic) = +in(kan):2 + * mal(basic) = +in(mal):2 + * mal(mlplusnum) = +in(mal):2 + * ogham(basic) = +ie(ogam):2 + * ogham(laptop) = +ie(ogam):2 + * ogham(is434) = +ie(ogam_is434):2 + * ogham(is434laptop) = +ie(ogam_is434):2 + * ori(basic) = +in(ori):2 + * ro(de) = +ro(winkeys):2 + * ro(us) = +ro(std):2 + * ro(academic) = +ro(std):2 + * ro(std_comma) = +ro(std):2 + * ro(comma) = +ro(basic):2 + * ru(os) = +ru(os_legacy):2 + * pk(urd) = +pk(urd-phonetic):2 + * sapmi(basic) = +no(smi):2 + * sapmi(nodeadkeys) = +no(smi_nodeadkeys):2 + * sapmi(sefi) = +fi(smi):2 + * sin(phonetic-static) = +in(sin_phonetic):2 + * syr(basic) = +sy(syc):2 + * syr(phonetic) = +sy(syc_phonetic):2 + * tam(INSCRIPT) = +in(tam):2 + * tam(UNI) = +in(tam_unicode):2 + * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):2 + * tam(TAB) = +in(tam_TAB):2 + * tam(TSCII) = +in(tam_TSCII):2 + * tel(basic) = +in(tel):2 + * yu(basic) = +srp(latin):2 + * yu(unicode) = +srp(latinunicode):2 + * yu(yz) = +srp(latinyz):2 + * yu(unicodeyz) = +srp(latinunicodeyz):2 + nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):2 + nokiarx51 * = +nokia_vndr/rx-51(%l[2]%_v[2]):2 + * * = +%l[2]%(v[2]):2 + +! model layout[3] = symbols + * ar = +ara%(v[3]):3 + * ben = +in(ben):3 + * bs = +ba%(v[3]):3 + * cs = +rs%(v[3]):3 + * cz_qwerty = +cz(qwerty):3 + * dev = +in(deva):3 + * dvorak = +us(dvorak):3 + * dzdwi = +bt%(v[3]):3 + * el = +gr%(v[3]):3 + * en_US = +latin%(v[3]):3 + * guj = +in(guj):3 + * gur = +in(guru):3 + * iu = +ca(ike):3 + * lo = +la%(v[3]):3 + * kan = +in(kan):3 + * mi = +mao%(v[3]):3 + * ml = +in(mal):3 + * ogham = +ie(ogam):3 + * ori = +ie(ori):3 + * sapmi = +no(smi):3 + * sr = +srp%(v[3]):3 + * syr = +sy(syc):3 + * tel = +in(tel):3 + * tml = +in(tam):3 + * yu = +srp%(v[3]):3 + * fr-latin9 = +fr(latin9):3 + * us_intl = +us(alt-intl):3 + * ben(basic) = +in(ben):3 + * ben(probhat) = +in(ben_probhat):3 + * dev(basic) = +in(deva):3 + * dvorak($dvoraklayouts) = +%v(dvorak):3 + * dvorak(basic) = +us(dvorak):3 + * dvorak(pl_basic) = +pl(dvorak):3 + * dvorak(pl) = +pl(dvorak_quotes):3 + * dvorak(pl_altquotes) = +pl(dvorak_altquotes):3 + * dzdwi(basic) = +bt(basic):3 + * fi(basic) = +fi(classic):3 + * ge(azerty_tskapo) = +fr(geo):3 + * guj(basic) = +in(guj):3 + * gur(basic) = +in(guru):3 + * ie(laptop) = +ie(basic):3 + * ie(CloGaelachLaptop) = +ie(CloGaelach):3 + * in(urd) = +in(urd-phonetic):3 + * iu(basic) = +ca(ike):3 + * lo(basic) = +la(basic):3 + * kan(basic) = +in(kan):3 + * mal(basic) = +in(mal):3 + * mal(mlplusnum) = +in(mal):3 + * ogham(basic) = +ie(ogam):3 + * ogham(laptop) = +ie(ogam):3 + * ogham(is434) = +ie(ogam_is434):3 + * ogham(is434laptop) = +ie(ogam_is434):3 + * ori(basic) = +in(ori):3 + * ro(de) = +ro(winkeys):3 + * ro(us) = +ro(std):3 + * ro(academic) = +ro(std):3 + * ro(std_comma) = +ro(std):3 + * ro(comma) = +ro(basic):3 + * ru(os) = +ru(os_legacy):3 + * pk(urd) = +pk(urd-phonetic):3 + * sapmi(basic) = +no(smi):3 + * sapmi(nodeadkeys) = +no(smi_nodeadkeys):3 + * sapmi(sefi) = +fi(smi):3 + * sin(phonetic-static) = +in(sin_phonetic):3 + * syr(basic) = +sy(syc):3 + * syr(phonetic) = +sy(syc_phonetic):3 + * tam(INSCRIPT) = +in(tam):3 + * tam(UNI) = +in(tam_unicode):3 + * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):3 + * tam(TAB) = +in(tam_TAB):3 + * tam(TSCII) = +in(tam_TSCII):3 + * tel(basic) = +in(tel):3 + * yu(basic) = +srp(latin):3 + * yu(unicode) = +srp(latinunicode):3 + * yu(yz) = +srp(latinyz):3 + * yu(unicodeyz) = +srp(latinunicodeyz):3 + nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):3 + nokiarx51 * = +nokia_vndr/rx-51(%l[3]%_v[3]):3 + * * = +%l[3]%(v[3]):3 + +! model layout[4] = symbols + * ar = +ara%(v[4]):4 + * ben = +in(ben):4 + * bs = +ba%(v[4]):4 + * cs = +rs%(v[4]):4 + * cz_qwerty = +cz(qwerty):4 + * dev = +in(deva):4 + * dvorak = +us(dvorak):4 + * dzdwi = +bt%(v[4]):4 + * el = +gr%(v[4]):4 + * en_US = +latin%(v[4]):4 + * guj = +in(guj):4 + * gur = +in(guru):4 + * iu = +ca(ike):4 + * lo = +la%(v[4]):4 + * kan = +in(kan):4 + * mi = +mao%(v[4]):4 + * ml = +in(mal):4 + * ogham = +ie(ogam):4 + * ori = +ie(ori):4 + * sapmi = +no(smi):4 + * sr = +srp%(v[4]):4 + * syr = +sy(syc):4 + * tel = +in(tel):4 + * tml = +in(tam):4 + * yu = +srp%(v[4]):4 + * fr-latin9 = +fr(latin9):4 + * us_intl = +us(alt-intl):4 + * ben(basic) = +in(ben):4 + * ben(probhat) = +in(ben_probhat):4 + * dev(basic) = +in(deva):4 + * dvorak($dvoraklayouts) = +%v(dvorak):4 + * dvorak(basic) = +us(dvorak):4 + * dvorak(pl_basic) = +pl(dvorak):4 + * dvorak(pl) = +pl(dvorak_quotes):4 + * dvorak(pl_altquotes) = +pl(dvorak_altquotes):4 + * dzdwi(basic) = +bt(basic):4 + * fi(basic) = +fi(classic):4 + * ge(azerty_tskapo) = +fr(geo):4 + * guj(basic) = +in(guj):4 + * gur(basic) = +in(guru):4 + * ie(laptop) = +ie(basic):4 + * ie(CloGaelachLaptop) = +ie(CloGaelach):4 + * in(urd) = +in(urd-phonetic):4 + * iu(basic) = +ca(ike):4 + * lo(basic) = +la(basic):4 + * kan(basic) = +in(kan):4 + * mal(basic) = +in(mal):4 + * mal(mlplusnum) = +in(mal):4 + * ogham(basic) = +ie(ogam):4 + * ogham(laptop) = +ie(ogam):4 + * ogham(is434) = +ie(ogam_is434):4 + * ogham(is434laptop) = +ie(ogam_is434):4 + * ori(basic) = +in(ori):4 + * ro(de) = +ro(winkeys):4 + * ro(us) = +ro(std):4 + * ro(academic) = +ro(std):4 + * ro(std_comma) = +ro(std):4 + * ro(comma) = +ro(basic):4 + * ru(os) = +ru(os_legacy):4 + * pk(urd) = +pk(urd-phonetic):4 + * sapmi(basic) = +no(smi):4 + * sapmi(nodeadkeys) = +no(smi_nodeadkeys):4 + * sapmi(sefi) = +fi(smi):4 + * sin(phonetic-static) = +in(sin_phonetic):4 + * syr(basic) = +sy(syc):4 + * syr(phonetic) = +sy(syc_phonetic):4 + * tam(INSCRIPT) = +in(tam):4 + * tam(UNI) = +in(tam_unicode):4 + * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):4 + * tam(TAB) = +in(tam_TAB):4 + * tam(TSCII) = +in(tam_TSCII):4 + * tel(basic) = +in(tel):4 + * yu(basic) = +srp(latin):4 + * yu(unicode) = +srp(latinunicode):4 + * yu(yz) = +srp(latinyz):4 + * yu(unicodeyz) = +srp(latinunicodeyz):4 + nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):4 + nokiarx51 * = +nokia_vndr/rx-51(%l[4]%_v[4]):4 + * * = +%l[4]%(v[4]):4 + +! model layout[2] variant[2] = symbols + * ben basic = +in(ben):2 + * ben probhat = +in(ben_probhat):2 + * dev basic = +in(deva):2 + * dvorak $dvoraklayouts = +%v(dvorak):2 + * dvorak basic = +us(dvorak):2 + * dvorak pl_basic = +pl(dvorak):2 + * dvorak pl = +pl(dvorak_quotes):2 + * dvorak pl_altquotes = +pl(dvorak_altquotes):2 + * dzdwi basic = +bt(basic):2 + * fi basic = +fi(classic):2 + * ge azerty_tskapo = +fr(geo):2 + * guj basic = +in(guj):2 + * gur basic = +in(guru):2 + * ie laptop = +ie(basic):2 + * ie CloGaelachLaptop = +ie(CloGaelach):2 + * in urd = +in(urd-phonetic):2 + * iu basic = +ca(ike):2 + * lo basic = +la(basic):2 + * kan basic = +in(kan):2 + * mal basic = +in(mal):2 + * mal mlplusnum = +in(mal):2 + * ogham basic = +ie(ogam):2 + * ogham laptop = +ie(ogam):2 + * ogham is434 = +ie(ogam_is434):2 + * ogham is434laptop = +ie(ogam_is434):2 + * ori basic = +in(ori):2 + * ro de = +ro(winkeys):2 + * ro us = +ro(std):2 + * ro academic = +ro(std):2 + * ro std_comma = +ro(std):2 + * ro comma = +ro(basic):2 + * ru os = +ru(os_legacy):2 + * pk urd = +pk(urd-phonetic):2 + * sapmi basic = +no(smi):2 + * sapmi nodeadkeys = +no(smi_nodeadkeys):2 + * sapmi sefi = +fi(smi):2 + * sin phonetic-static = +in(sin_phonetic):2 + * syr basic = +sy(syc):2 + * syr phonetic = +sy(syc_phonetic):2 + * tam INSCRIPT = +in(tam):2 + * tam UNI = +in(tam_unicode):2 + * tam NUMERAL-KEYBOARD = +in(tam_keyboard_with_numerals):2 + * tam TAB = +in(tam_TAB):2 + * tam TSCII = +in(tam_TSCII):2 + * tel basic = +in(tel):2 + * yu basic = +srp(latin):2 + * yu unicode = +srp(latinunicode):2 + * yu yz = +srp(latinyz):2 + * yu unicodeyz = +srp(latinunicodeyz):2 + +! model layout[3] variant[3] = symbols + * ben basic = +in(ben):3 + * ben probhat = +in(ben_probhat):3 + * dev basic = +in(deva):3 + * dvorak $dvoraklayouts = +%v(dvorak):3 + * dvorak basic = +us(dvorak):3 + * dvorak pl_basic = +pl(dvorak):3 + * dvorak pl = +pl(dvorak_quotes):3 + * dvorak pl_altquotes = +pl(dvorak_altquotes):3 + * dzdwi basic = +bt(basic):3 + * fi basic = +fi(classic):3 + * ge azerty_tskapo = +fr(geo):3 + * guj basic = +in(guj):3 + * gur basic = +in(guru):3 + * ie laptop = +ie(basic):3 + * ie CloGaelachLaptop = +ie(CloGaelach):3 + * in urd = +in(urd-phonetic):3 + * iu basic = +ca(ike):3 + * lo basic = +la(basic):3 + * kan basic = +in(kan):3 + * mal basic = +in(mal):3 + * mal mlplusnum = +in(mal):3 + * ogham basic = +ie(ogam):3 + * ogham laptop = +ie(ogam):3 + * ogham is434 = +ie(ogam_is434):3 + * ogham is434laptop = +ie(ogam_is434):3 + * ori basic = +in(ori):3 + * ro de = +ro(winkeys):3 + * ro us = +ro(std):3 + * ro academic = +ro(std):3 + * ro std_comma = +ro(std):3 + * ro comma = +ro(basic):3 + * ru os = +ru(os_legacy):3 + * pk urd = +pk(urd-phonetic):3 + * sapmi basic = +no(smi):3 + * sapmi nodeadkeys = +no(smi_nodeadkeys):3 + * sapmi sefi = +fi(smi):3 + * sin phonetic-static = +in(sin_phonetic):3 + * syr basic = +sy(syc):3 + * syr phonetic = +sy(syc_phonetic):3 + * tam INSCRIPT = +in(tam):3 + * tam UNI = +in(tam_unicode):3 + * tam NUMERAL-KEYBOARD = +in(tam_keyboard_with_numerals):3 + * tam TAB = +in(tam_TAB):3 + * tam TSCII = +in(tam_TSCII):3 + * tel basic = +in(tel):3 + * yu basic = +srp(latin):3 + * yu unicode = +srp(latinunicode):3 + * yu yz = +srp(latinyz):3 + * yu unicodeyz = +srp(latinunicodeyz):3 + +! model layout[4] variant[4] = symbols + * ben basic = +in(ben):4 + * ben probhat = +in(ben_probhat):4 + * dev basic = +in(deva):4 + * dvorak $dvoraklayouts = +%v(dvorak):4 + * dvorak basic = +us(dvorak):4 + * dvorak pl_basic = +pl(dvorak):4 + * dvorak pl = +pl(dvorak_quotes):4 + * dvorak pl_altquotes = +pl(dvorak_altquotes):4 + * dzdwi basic = +bt(basic):4 + * fi basic = +fi(classic):4 + * ge azerty_tskapo = +fr(geo):4 + * guj basic = +in(guj):4 + * gur basic = +in(guru):4 + * ie laptop = +ie(basic):4 + * ie CloGaelachLaptop = +ie(CloGaelach):4 + * in urd = +in(urd-phonetic):4 + * iu basic = +ca(ike):4 + * lo basic = +la(basic):4 + * kan basic = +in(kan):4 + * mal basic = +in(mal):4 + * mal mlplusnum = +in(mal):4 + * ogham basic = +ie(ogam):4 + * ogham laptop = +ie(ogam):4 + * ogham is434 = +ie(ogam_is434):4 + * ogham is434laptop = +ie(ogam_is434):4 + * ori basic = +in(ori):4 + * ro de = +ro(winkeys):4 + * ro us = +ro(std):4 + * ro academic = +ro(std):4 + * ro std_comma = +ro(std):4 + * ro comma = +ro(basic):4 + * ru os = +ru(os_legacy):4 + * pk urd = +pk(urd-phonetic):4 + * sapmi basic = +no(smi):4 + * sapmi nodeadkeys = +no(smi_nodeadkeys):4 + * sapmi sefi = +fi(smi):4 + * sin phonetic-static = +in(sin_phonetic):4 + * syr basic = +sy(syc):4 + * syr phonetic = +sy(syc_phonetic):4 + * tam INSCRIPT = +in(tam):4 + * tam UNI = +in(tam_unicode):4 + * tam NUMERAL-KEYBOARD = +in(tam_keyboard_with_numerals):4 + * tam TAB = +in(tam_TAB):4 + * tam TSCII = +in(tam_TSCII):4 + * tel basic = +in(tel):4 + * yu basic = +srp(latin):4 + * yu unicode = +srp(latinunicode):4 + * yu yz = +srp(latinyz):4 + * yu unicodeyz = +srp(latinunicodeyz):4 + +! model = symbols + $evdevkbds = +inet(evdev)+inet(%m) + applealu_jis = +inet(evdev)+macintosh_vndr/jp(alujiskeys) + * = +inet(evdev) + +! layout variant = compat + de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + +! layout[1] variant[1] = compat + de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + +! layout[2] variant[2] = compat + de neo = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + +! layout[3] variant[3] = compat + de neo = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + +! layout[4] variant[4] = compat + de neo = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + +! model layout = compat + pc98 nec_vndr/jp = pc98(basic) + * jp = complete+japan + olpc * = olpc + * * = complete + +! model layout[1] = compat + * * = complete + +! model = types + $macs = complete+numpad(mac) + $applealu = complete+numpad(mac) + $nokiamodels = complete+nokia + * = complete + +! layout option = symbols + $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle) + * misc:typo = +typo(base) + +! layout[1] option = symbols + $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):1 + * misc:typo = +typo(base):1 + +! layout[2] option = symbols + $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):2 + * misc:typo = +typo(base):2 + +! layout[3] option = symbols + $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):3 + * misc:typo = +typo(base):3 + +! layout[4] option = symbols + $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):4 + * misc:typo = +typo(base):4 + +! option = symbols + grp:shift_toggle = +group(shifts_toggle) + altwin:menu = +altwin(menu) + altwin:meta_alt = +altwin(meta_alt) + altwin:ctrl_win = +altwin(ctrl_win) + altwin:ctrl_alt_win = +altwin(ctrl_alt_win) + altwin:meta_win = +altwin(meta_win) + altwin:left_meta_win = +altwin(left_meta_win) + altwin:hyper_win = +altwin(hyper_win) + altwin:alt_super_win = +altwin(alt_super_win) + altwin:swap_lalt_lwin = +altwin(swap_lalt_lwin) + grp:switch = +group(switch) + grp:lswitch = +group(lswitch) + grp:win_switch = +group(win_switch) + grp:lwin_switch = +group(lwin_switch) + grp:rwin_switch = +group(rwin_switch) + grp:toggle = +group(toggle) + grp:shifts_toggle = +group(shifts_toggle) + grp:ctrls_toggle = +group(ctrls_toggle) + grp:alts_toggle = +group(alts_toggle) + grp:caps_toggle = +capslock(grouplock) + grp:caps_switch = +capslock(groupshift) + grp:shift_caps_toggle = +group(shift_caps_toggle) + grp:shift_caps_switch = +group(shift_caps_switch) + grp:win_menu_switch = +group(win_menu_switch) + grp:alt_caps_toggle = +group(alt_caps_toggle) + grp:alt_space_toggle = +group(alt_space_toggle) + grp:menu_toggle = +group(menu_toggle) + grp:lwin_toggle = +group(lwin_toggle) + grp:rwin_toggle = +group(rwin_toggle) + grp:lshift_toggle = +group(lshift_toggle) + grp:rshift_toggle = +group(rshift_toggle) + grp:rctrl_switch = +group(rctrl_switch) + grp:lctrl_toggle = +group(lctrl_toggle) + grp:rctrl_toggle = +group(rctrl_toggle) + grp:lalt_toggle = +group(lalt_toggle) + grp:sclk_toggle = +group(sclk_toggle) + grp:lctrl_rctrl_switch = +group(lctrl_rctrl_switch) + grp:lctrl_lwin_rctrl_menu = +group(lctrl_lwin_rctrl_menu) + grp:lctrl_lalt_toggle = +group(lctrl_lalt_toggle) + grp:rctrl_ralt_toggle = +group(rctrl_ralt_toggle) + grp:ctrl_alt_toggle = +group(ctrl_alt_toggle) + grp:ctrl_alt_toggle_bidir = +group(ctrl_alt_toggle_bidir) + grp:lctrl_lshift_toggle = +group(lctrl_lshift_toggle) + grp:rctrl_rshift_toggle = +group(rctrl_rshift_toggle) + grp:ctrl_shift_toggle = +group(ctrl_shift_toggle) + grp:ctrl_shift_toggle_bidir = +group(ctrl_shift_toggle_bidir) + grp:lalt_lshift_toggle = +group(lalt_lshift_toggle) + grp:ralt_rshift_toggle = +group(ralt_rshift_toggle) + grp:alt_shift_toggle = +group(alt_shift_toggle) + grp:alt_shift_toggle_bidir = +group(alt_shift_toggle_bidir) + lv3:switch = +level3(switch) + lv3:ralt_switch = +level3(ralt_switch) + lv3:ralt_switch_multikey = +level3(ralt_switch_multikey) + lv3:ralt_alt = +level3(ralt_alt) + lv3:lalt_switch = +level3(lalt_switch) + lv3:alt_switch = +level3(alt_switch) + lv3:menu_switch = +level3(menu_switch) + lv3:win_switch = +level3(win_switch) + lv3:lwin_switch = +level3(lwin_switch) + lv3:rwin_switch = +level3(rwin_switch) + lv3:enter_switch = +level3(enter_switch) + caps:capslock = +capslock(capslock) + caps:numlock = +capslock(numlock) + caps:shiftlock = +capslock(shiftlock) + caps:swapescape = +capslock(swapescape) + caps:escape = +capslock(escape) + caps:backspace = +capslock(backspace) + caps:super = +capslock(super) + caps:hyper = +capslock(hyper) + caps:none = +capslock(none) + caps:ctrl_modifier = +capslock(ctrl_modifier) + ctrl:nocaps = +ctrl(nocaps) + ctrl:lctrl_meta = +ctrl(lctrl_meta) + ctrl:swapcaps = +ctrl(swapcaps) + ctrl:ac_ctrl = +ctrl(ac_ctrl) + ctrl:aa_ctrl = +ctrl(aa_ctrl) + ctrl:rctrl_ralt = +ctrl(rctrl_ralt) + ctrl:menu_rctrl = +ctrl(menu_rctrl) + ctrl:ralt_rctrl = +ctrl(ralt_rctrl) + compose:ralt = +compose(ralt) + compose:lwin = +compose(lwin) + compose:rwin = +compose(rwin) + compose:menu = +compose(menu) + compose:lctrl = +compose(lctrl) + compose:rctrl = +compose(rctrl) + compose:caps = +compose(caps) + compose:102 = +compose(102) + compose:paus = +compose(paus) + compose:prsc = +compose(prsc) + compose:sclk = +compose(sclk) + srvrkeys:none = +srvr_ctrl(no_srvr_keys) + eurosign:e = +eurosign(e) + eurosign:2 = +eurosign(2) + eurosign:4 = +eurosign(4) + eurosign:5 = +eurosign(5) + rupeesign:4 = +rupeesign(4) + keypad:oss = +keypad(oss) + keypad:legacy = +keypad(legacy) + keypad:legacy_wang = +keypad(legacy_wang) + keypad:oss_wang = +keypad(oss_wang) + keypad:future = +keypad(future) + keypad:future_wang = +keypad(future_wang) + keypad:hex = +keypad(ops)+keypad(hex) + keypad:atm = +keypad(ops)+keypad(hex)+keypad(atm) + nbsp:none = +nbsp(none) + nbsp:level2 = +nbsp(level2) + nbsp:level3 = +nbsp(level3) + nbsp:level3s = +nbsp(level3s) + nbsp:level3n = +nbsp(level3n) + nbsp:level4 = +nbsp(level4) + nbsp:level4n = +nbsp(level4n) + nbsp:level4nl = +nbsp(level4nl) + japan:nicola_f_bs = +jp(nicola_f_bs) + japan:hztg_escape = +jp(hztg_escape) + kpdl:dot = +kpdl(dot) + kpdl:comma = +kpdl(comma) + kpdl:dotoss = +kpdl(dotoss) + kpdl:dotoss_latin9 = +kpdl(dotoss_latin9) + kpdl:commaoss = +kpdl(commaoss) + kpdl:momayyezoss = +kpdl(momayyezoss) + kpdl:kposs = +kpdl(kposs) + kpdl:semi = +kpdl(semi) + shift:breaks_caps = +shift(breaks_caps) + esperanto:qwerty = +epo(qwerty) + esperanto:dvorak = +epo(dvorak) + terminate:ctrl_alt_bksp = +terminate(ctrl_alt_bksp) + keypad:pointerkeys = +keypad(pointerkeys) + apple:alupckeys = +macintosh_vndr/apple(alupckeys) + shift:both_capslock = +shift(both_capslock) + shift:lshift_both_capslock = +shift(lshift_both_capslock) + shift:rshift_both_capslock = +shift(rshift_both_capslock) + shift:both_capslock_cancel = +shift(both_capslock_cancel) + shift:lshift_both_capslock_cancel = +shift(lshift_both_capslock_cancel) + shift:rshift_both_capslock_cancel = +shift(rshift_both_capslock_cancel) + shift:both_shiftlock = +shift(both_shiftlock) + shift:lshift_both_shiftlock = +shift(lshift_both_shiftlock) + shift:rshift_both_shiftlock = +shift(rshift_both_shiftlock) + lv3:caps_switch = +level3(caps_switch) + lv3:bksl_switch = +level3(bksl_switch) + lv3:lsgt_switch = +level3(lsgt_switch) + lv3:caps_switch_latch = +level3(caps_switch_latch) + lv3:bksl_switch_latch = +level3(bksl_switch_latch) + lv3:lsgt_switch_latch = +level3(lsgt_switch_latch) + lv5:lsgt_switch_lock = +level5(lsgt_switch_lock) + lv5:ralt_switch_lock = +level5(ralt_switch_lock) + lv5:lwin_switch_lock = +level5(lwin_switch_lock) + lv5:rwin_switch_lock = +level5(rwin_switch_lock) + lv5:lsgt_switch_lock_cancel = +level5(lsgt_switch_lock_cancel) + lv5:ralt_switch_lock_cancel = +level5(ralt_switch_lock_cancel) + lv5:lwin_switch_lock_cancel = +level5(lwin_switch_lock_cancel) + lv5:rwin_switch_lock_cancel = +level5(rwin_switch_lock_cancel) + + + +! option = compat + grp_led:num = +lednum(group_lock) + grp_led:caps = +ledcaps(group_lock) + grp_led:scroll = +ledscroll(group_lock) + caps:shiftlock = +ledcaps(shift_lock) + grab:break_actions = +xfree86(grab_break) diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/groups b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/groups new file mode 100644 index 0000000..15dc3c5 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/groups @@ -0,0 +1,20 @@ +! $model_group = pc101 pc102 \ + pc104\ + pc105\ + pc106 +! $layout_group = ar br cr us +! $variant_group = + +! model = keycodes + $model_group = something(%m) + * = default_keycodes + +! layout variant = symbols + $layout_group * = my_symbols+%(v) + * * = default_symbols + +! model = types + * = default_types + +! model = compat + * = default_compat diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/index b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/index new file mode 100644 index 0000000..cc97ad1 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/index @@ -0,0 +1,28 @@ +! $layouts = al az br cn us + +! layout option = symbols + $layouts some:opt = +extra + +! layout[1] option = symbols + $layouts some:opt = +extra:1 + +! layout[2] option = symbols + $layouts some:opt = +extra:2 + +! layout[3] option = symbols + $layouts some:opt = +extra:3 + +! layout[4] option = symbols + $layouts some:opt = +extra:4 + +! model = symbols + * = default_symbols + +! model = keycodes + * = default_keycodes + +! model = types + * = default_types + +! model = compat + * = default_compat diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/multiple-options b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/multiple-options new file mode 100644 index 0000000..afbdc9f --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/multiple-options @@ -0,0 +1,27 @@ +! model = keycodes + my_model = my_keycodes + * = default_keycodes + +! layout variant = symbols + my_layout my_variant = my_symbols+extra_variant + +! layout = symbols + my_layout = my_symbols + * = default_symbols + +! model = types + my_model = my_types + * = default_types + +! model = compat + my_model = my_compat + * = default_compat + +! option = compat + option111 = +substring + option1 = +some:compat + option11 = +group(bla) + +! option = symbols + option3 = +compose(foo)+keypad(bar) + colon:opt = +altwin(menu) diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/simple b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/simple new file mode 100644 index 0000000..446954e --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/rules/simple @@ -0,0 +1,21 @@ +! model = keycodes + my_model = my_keycodes + * = default_keycodes + +! layout variant = symbols + my_layout my_variant = my_symbols+extra_variant + +! layout = symbols + my_layout = my_symbols + * = default_symbols + +! model = types + my_model = my_types + * = default_types + +! model = compat + my_model = my_compat + * = default_compat + +! option = compat + my_option = |some:compat diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/altwin b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/altwin new file mode 100644 index 0000000..76a289a --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/altwin @@ -0,0 +1,109 @@ +// Meta is mapped to second level of Alt keys. +partial modifier_keys +xkb_symbols "meta_alt" { + key { [ Alt_L, Meta_L ] }; + key { type[Group1] = "TWO_LEVEL", + symbols[Group1] = [ Alt_R, Meta_R ] }; + modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R }; +// modifier_map Mod4 {}; +}; + +// Alt is mapped to the Win keys (and the usual Alt keys). +partial modifier_keys +xkb_symbols "alt_win" { + key { [ Alt_L ] }; + key { [ Alt_R ] }; + modifier_map Mod1 { , }; +}; + +// Ctrl is mapped to the Win keys (and the usual Ctrl keys). +partial modifier_keys +xkb_symbols "ctrl_win" { + key { [ Control_L ] }; + key { [ Control_R ] }; + modifier_map Control { , }; +}; + +// Ctrl is mapped to the Alt keys, Alt to the Win keys, and Win to the Ctrl keys. +partial modifier_keys +xkb_symbols "ctrl_alt_win" { + key { [ Control_L, Control_L ] }; + key { type[Group1] = "TWO_LEVEL", + symbols[Group1] = [ Control_R, Control_R ] }; + key { [ Alt_L, Meta_L ] }; + key { [ Alt_R, Meta_R ] }; + key { [ Super_L ] }; + key { [ Super_R ] }; + modifier_map Control { , }; + modifier_map Mod1 { , }; + modifier_map Mod4 { , }; +}; + +// Meta is mapped to the Win keys. +partial modifier_keys +xkb_symbols "meta_win" { + key { [ Alt_L, Alt_L ] }; + key { type[Group1] = "TWO_LEVEL", + symbols[Group1] = [ Alt_R, Alt_R ] }; + key { [ Meta_L ] }; + key { [ Meta_R ] }; + modifier_map Mod1 { Alt_L, Alt_R }; + modifier_map Mod4 { , Meta_L, Meta_R }; +}; + +// Meta is mapped to the left Win key. +partial modifier_keys +xkb_symbols "left_meta_win" { + key { [ Alt_L, Alt_L ] }; + key { [ Meta_L ] }; + modifier_map Mod1 { Alt_L }; + modifier_map Mod4 { , Meta_L }; +}; + +// Hyper is mapped to the Win keys. +partial modifier_keys +xkb_symbols "hyper_win" { + key { [ Hyper_L ] }; + key { [ Hyper_R ] }; + modifier_map Mod4 { Hyper_L, Hyper_R }; +}; + +// Menu is mapped to the Menu key. +partial modifier_keys +xkb_symbols "menu" { + key { [ Menu ] }; +}; + +// Layout for Tux key caps with additional right Alt key +partial modifier_keys +xkb_symbols "alt_super_win" { + key { [ Alt_L, Meta_L ] }; + key { [ Alt_R, Meta_R ] }; + key { [ Super_L ]}; + key { [ Super_R ] }; + modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R }; + modifier_map Mod4 { Super_L, Super_R }; +}; + +// Swap the Alt and Win keys. +partial modifier_keys +xkb_symbols "swap_alt_win" { + include "altwin(swap_lalt_lwin)" + include "altwin(swap_ralt_rwin)" +}; + +// Swap the left Alt and Win keys. +hidden partial modifier_keys +xkb_symbols "swap_lalt_lwin" { + key { type[Group1] = "ONE_LEVEL", + symbols[Group1] = [ Super_L ] }; + key { [ Alt_L, Meta_L ] }; +}; + +// Swap the right Alt and Win keys. +hidden partial modifier_keys +xkb_symbols "swap_ralt_rwin" { + key { type[Group1] = "ONE_LEVEL", + symbols[Group1] = [ Super_R ] }; + key { [ Alt_R, Meta_R ] }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/ca b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/ca new file mode 100644 index 0000000..2ba48b4 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/ca @@ -0,0 +1,529 @@ +default partial +xkb_symbols "fr" { + name[Group1] = "French (Canada)"; + + key { [ numbersign, bar, backslash ] }; + key { [ 1, exclam, plusminus ] }; + key { [ 2, quotedbl, at ] }; + key { [ 3, slash, sterling ] }; + key { [ 4, dollar, cent ] }; + key { [ 5, percent, currency ] }; + key { [ 6, question, notsign ] }; + key { [ 7, ampersand, brokenbar ] }; + key { [ 8, asterisk, twosuperior ] }; + key { [ 9, parenleft, threesuperior ] }; + key { [ 0, parenright, onequarter ] }; + key { [ minus, underscore, onehalf ] }; + key { [ equal, plus, threequarters ] }; + + key { [ q, Q ] }; + key { [ w, W ] }; + key { [ e, E ] }; + key { [ r, R ] }; + key { [ t, T ] }; + key { [ y, Y ] }; + key { [ u, U ] }; + key { [ i, I ] }; + key { [ o, O, section ] }; + key { [ p, P, paragraph ] }; + key { [dead_circumflex, dead_circumflex, bracketleft ] }; + key { [ dead_cedilla, dead_diaeresis, bracketright ] }; + + key { [ a, A ] }; + key { [ s, S ] }; + key { [ d, D ] }; + key { [ f, F ] }; + key { [ g, G ] }; + key { [ h, H ] }; + key { [ j, J ] }; + key { [ k, K ] }; + key { [ l, L ] }; + key { [ semicolon, colon, asciitilde ] }; + key { [dead_grave, dead_grave, braceleft ] }; + key { [ less, greater, braceright ] }; + + key { [guillemotleft, guillemotright, degree] }; + key { [ z, Z ] }; + key { [ x, X ] }; + key { [ c, C ] }; + key { [ v, V ] }; + key { [ b, B ] }; + key { [ n, N ] }; + key { [ m, M, mu ] }; + key { [ comma, apostrophe, macron ] }; + key { [ period, period, hyphen ] }; + key { [ eacute, Eacute, dead_acute ] }; + + key { [ space, space, nobreakspace ] }; + + include "level3(ralt_switch)" +}; + +xkb_symbols "fr-dvorak" { + name[Group1] = "French (Canada, Dvorak)"; + + key { [ numbersign, bar, backslash ] }; + key { [ 1, exclam, plusminus ] }; + key { [ 2, quotedbl, at ] }; + key { [ 3, slash, sterling ] }; + key { [ 4, dollar, cent ] }; + key { [ 5, percent, currency ] }; + key { [ 6, question, notsign ] }; + key { [ 7, ampersand, brokenbar ] }; + key { [ 8, asterisk, twosuperior ] }; + key { [ 9, parenleft, threesuperior ] }; + key { [ 0, parenright, onequarter ] }; + key { [dead_circumflex, dead_circumflex, bracketleft ] }; + key { [ dead_cedilla, dead_diaeresis, bracketright ] }; + + key { [dead_grave, dead_grave, braceleft ] }; + key { [ comma, apostrophe, macron ] }; + key { [ period, period, hyphen ] }; + key { [ p, P, paragraph ] }; + key { [ y, Y ] }; + key { [ f, F ] }; + key { [ g, G ] }; + key { [ c, C ] }; + key { [ r, R ] }; + key { [ l, L ] }; + key { [ eacute, Eacute, dead_acute ] }; + key { [ equal, plus, threequarters ] }; + + key { [ a, A ] }; + key { [ o, O, section ] }; + key { [ e, E ] }; + key { [ u, U ] }; + key { [ i, I ] }; + key { [ d, D ] }; + key { [ h, H ] }; + key { [ t, T ] }; + key { [ n, N ] }; + key { [ s, S ] }; + key { [ minus, underscore, onehalf ] }; + key { [ less, greater, braceright ] }; + + key { [guillemotleft, guillemotright, degree] }; + key { [ semicolon, colon, asciitilde ] }; + key { [ q, Q ] }; + key { [ j, J ] }; + key { [ k, K ] }; + key { [ x, X ] }; + key { [ b, B ] }; + key { [ m, M, mu ] }; + key { [ w, W ] }; + key { [ v, V ] }; + key { [ z, Z ] }; + + key { [ space, space, nobreakspace ] }; + + include "level3(ralt_switch)" +}; + +partial +xkb_symbols "fr-legacy" { + + include "ca(fr)" + + name[Group1] = "French (Canada, legacy)"; + + key { [ degree, degree, notsign ] }; + key { [ 1, exclam, onesuperior ] }; + + key { [ 3, numbersign, threesuperior ] }; + key { [ 4, dollar, onequarter ] }; + key { [ 5, percent, onehalf ] }; + key { [ 6, question, threequarters ] }; + key { [ 7, ampersand, braceleft ] }; + key { [ 8, asterisk, bracketleft ] }; + key { [ 9, parenleft, bracketright, plusminus ] }; + key { [ 0, parenright, braceright ] }; + key { [ minus, underscore, bar, questiondown] }; + key { [ equal, plus, dead_cedilla ] }; + + key { [ r, R, paragraph, registered ] }; + key { [ y, Y, yen ] }; + key { [ o, O, oslash, Ooblique ] }; + key { [ p, P, thorn, THORN ] }; + key { [dead_circumflex, dead_circumflex, degree ] }; + key { [ ccedilla, Ccedilla, dead_tilde, dead_diaeresis ] }; + + key { [ a, A, ae, AE ] }; + key { [ s, S, ssharp, section ] }; + key { [ d, D, eth, ETH ] }; + key { [ f, F, ordfeminine ] }; + key { [ semicolon, colon, dead_acute, dead_acute ] }; + key { [ egrave, Egrave ] }; + key { [ agrave, Agrave, dead_grave ] }; + + key { [ ugrave, Ugrave, backslash, bar ] }; + key { [ z, Z, guillemotleft ] }; + key { [ x, X, guillemotright ] }; + key { [ c, C, cent, copyright ] }; + key { [ m, M, mu, masculine ] }; + key { [ comma, apostrophe, less ] }; + key { [ period, period, greater ] }; + key { [ eacute, Eacute, slash ] }; +}; + +partial +xkb_symbols "multi" { + + include "ca(fr)" + + name[Group1] = "Canadian Multilingual (first part)"; + + key { [ slash, backslash, bar ] }; + key { [ 1, exclam ] }; + key { [ 2, at ] }; + key { [ 3, numbersign ] }; + key { [ 4, dollar ] }; + key { [ 5, percent ] }; + key { [ 6, question ] }; + key { [ 7, ampersand, braceleft ] }; + key { [ 8, asterisk, braceright ] }; + key { [ 9, parenleft, bracketleft ] }; + key { [ 0, parenright, bracketright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus, notsign ] }; + + key { [ o, O ] }; + key { [ p, P ] }; + key { [dead_circumflex, dead_diaeresis, dead_grave ] }; + key { [ ccedilla, Ccedilla, asciitilde ] }; + + key { [ semicolon, colon, degree ] }; + key { [ egrave, Egrave ] }; + key { [ agrave, Agrave ] }; + + key { [ ugrave, Ugrave ] }; + key { [ z, Z, guillemotleft ] }; + key { [ x, X, guillemotright ] }; + key { [ comma, apostrophe, less ] }; + key { [ period, quotedbl, greater ] }; + key { [ eacute, Eacute ] }; +}; + +partial +xkb_symbols "multi-2gr" { + + name[Group1] = "Canadian Multilingual (second part)"; + + key { [ NoSymbol, hyphen ] }; + key { [ onesuperior, exclamdown ] }; + key { [ twosuperior, NoSymbol ] }; + key { [ threesuperior, sterling ] }; + key { [ onequarter, currency ] }; + key { [ onehalf,threeeighths ] }; + key { [ threequarters, fiveeighths ] }; + key { [ NoSymbol,seveneighths ] }; + key { [ NoSymbol, trademark ] }; + key { [ NoSymbol, plusminus ] }; + + key { [ NoSymbol, questiondown] }; + key { [ dead_cedilla, dead_ogonek ] }; + + key { [ NoSymbol, Greek_OMEGA ] }; + key { [ lstroke, Lstroke ] }; + key { [ oe, OE ] }; + key { [ paragraph, registered ] }; + key { [ tslash, Tslash ] }; + key { [ leftarrow, yen ] }; + key { [ downarrow, uparrow ] }; + key { [ rightarrow, idotless ] }; + key { [ oslash, Ooblique ] }; + key { [ thorn, THORN ] }; + key { [ NoSymbol, dead_abovering ] }; + key { [ dead_tilde, dead_macron ] }; + + key { [ ae, AE ] }; + key { [ ssharp, section ] }; + key { [ eth, ETH ] }; + key { [ NoSymbol, ordfeminine ] }; + key { [ eng, ENG ] }; + key { [ hstroke, Hstroke ] }; + key { [ U0133, U0132 ] }; + key { [ kra, NoSymbol ] }; + key { [ U0140, U013F ] }; + key { [ dead_acute, dead_doubleacute ] }; + key { [ NoSymbol, dead_caron ] }; + key { [ NoSymbol, dead_breve ] }; + + + key { [ NoSymbol, brokenbar ] }; + + key { [ cent, copyright ] }; + key { [ leftdoublequotemark, leftsinglequotemark ] }; + key { [ rightdoublequotemark, rightsinglequotemark ] }; + key { [ U0149, U266A ] }; + key { [ mu, masculine ] }; + key { [ Greek_horizbar, multiply ] }; + key { [ periodcentered, division ] }; + key { [ NoSymbol, dead_abovedot ] }; +}; + +// based on +// Inuktitut keyboard for X11 +// written by Pablo Saratxaga + +alphanumeric_keys +xkb_symbols "ike" { + + name[Group1]= "Inuktitut"; + + key { [ 0x01001595, 1 ] }; + key { [ 0x01001449, 2 ] }; + key { [ 0x01001550, 3 ] }; + key { [ 0x01001483, 4 ] }; + key { [ 0x01001466, 5 ] }; + key { [ 0x01001585, 6 ] }; + key { [ 0x010014bb, 7 ] }; + key { [ 0x010014d0, 8 ] }; + key { [ 0x010014ea, 9 ] }; + key { [ 0x0100153e, 0 ] }; + key { [ minus, underscore ] }; + key { [ 0x0100155d, equal ] }; + + key { [ 0x0100158f, 0x0100148b ] }; + key { [ 0x01001403, 0x01001431 ] }; + key { [ 0x0100157f, 0x01001546 ] }; + key { [ 0x0100146d, 0x01001596 ] }; + key { [ 0x0100144e, 0x01001671 ] }; + key { [ 0x010014ef, 0x01001673 ] }; + key { [ 0x010014a5, 0x01001675 ] }; + key { [ 0x010014c2, 0x010015a4 ] }; + key { [ 0x010014d5, 0x010015a0 ] }; + key { [ 0x01001528, 0x010015a6 ] }; + key { [ 0x010014a1, 0x01001505 ] }; + key { [ dead_abovedot, 0x0100141e] }; + + key { [ 0x01001591, 0x0100148d ] }; + key { [ 0x01001405, 0x01001433 ] }; + key { [ 0x01001581, 0x01001548 ] }; + key { [ 0x0100146f, 0x01001555 ] }; + key { [ 0x01001450, parenleft ] }; + key { [ 0x010014f1, parenright ] }; + key { [ 0x010014a7, 0x0100152a ] }; + key { [ 0x010014c4, 0x01001557 ] }; + key { [ 0x010014d7, 0x010015a2 ] }; + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + + key { [ 0x01001593, 0x01001490 ] }; + key { [ 0x0100140a, 0x01001438 ] }; + key { [ 0x01001583, 0x0100154b ] }; + key { [ 0x01001472, question ] }; + key { [ 0x01001455, 0x0100157c ] }; + key { [ 0x010014f4, 0x010014c7 ] }; + key { [ 0x010014aa, 0x010014da ] }; + key { [ comma, less ] }; + key { [ period, greater ] }; + key { [ 0x0100152d, 0x01001559 ] }; + + key { [ 0x0100157b, 0x01001575 ] }; + key { [ 0x01001579, 0x01001577 ] }; + key { [ backslash, bar ] }; +}; + +partial +xkb_symbols "multix" { + + name[Group1] = "Canadian Multilingual"; + + key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC"; + key { [ slash, backslash, bar, NoSymbol, + NoSymbol, hyphen ] }; + key { [ 1, exclam, plusminus, NoSymbol, + onesuperior, exclamdown ] }; + key { [ 2, at, at, NoSymbol, + twosuperior, NoSymbol ] }; + key { [ 3, numbersign, sterling, NoSymbol, + threesuperior, sterling ] }; + key { [ 4, dollar, cent, NoSymbol, + onequarter, currency ] }; + key { [ 5, percent, currency, NoSymbol, + onehalf, threeeighths ] }; + key { [ 6, question, notsign, NoSymbol, + threequarters, fiveeighths ] }; + key { [ 7, ampersand, braceleft, NoSymbol, + NoSymbol, seveneighths ] }; + key { [ 8, asterisk, braceright, NoSymbol, + NoSymbol, trademark ] }; + key { [ 9, parenleft, bracketleft, NoSymbol, + NoSymbol, plusminus ] }; + key { [ 0, parenright, bracketright, NoSymbol ] }; + key { [ minus, underscore, onehalf, NoSymbol, + NoSymbol, questiondown] }; + key { [ equal, plus, notsign, NoSymbol, + dead_cedilla, dead_ogonek ] }; + + key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC"; + key { [ q, Q, NoSymbol, NoSymbol, + NoSymbol, Greek_OMEGA ] }; + key { [ w, W, NoSymbol, NoSymbol, + lstroke, Lstroke ] }; + key { [ e, E, NoSymbol, NoSymbol, + oe, OE ] }; + key { [ r, R, NoSymbol, NoSymbol, + paragraph, registered ] }; + key { [ t, T, NoSymbol, NoSymbol, + tslash, Tslash ] }; + key { [ y, Y, NoSymbol, NoSymbol, + leftarrow, yen ] }; + key { [ u, U, NoSymbol, NoSymbol, + downarrow, uparrow ] }; + key { [ i, I, NoSymbol, NoSymbol, + rightarrow, idotless ] }; + key { [ o, O, section, NoSymbol, + oslash, Ooblique ] }; + key { [ p, P, paragraph, NoSymbol, + thorn, THORN ] }; + + key.type[group1]="EIGHT_LEVEL"; + key { [dead_circumflex, dead_diaeresis, dead_grave, NoSymbol, + NoSymbol, dead_abovering ] }; + + key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC"; + key { [ ccedilla, Ccedilla, asciitilde, NoSymbol, + dead_tilde, dead_macron ] }; + + key { [ a, A, NoSymbol, NoSymbol, + ae, AE ] }; + key { [ s, S, NoSymbol, NoSymbol, + ssharp, section ] }; + key { [ d, D, NoSymbol, NoSymbol, + eth, ETH ] }; + key { [ f, F, NoSymbol, NoSymbol, + NoSymbol, ordfeminine ] }; + key { [ g, G, NoSymbol, NoSymbol, + eng, ENG ] }; + key { [ h, H, NoSymbol, NoSymbol, + hstroke, Hstroke ] }; + key { [ j, J, NoSymbol, NoSymbol, + U0133, U0132 ] }; + key { [ k, K, NoSymbol, NoSymbol, + kra, NoSymbol ] }; + key { [ l, L, NoSymbol, NoSymbol, + U0140, U013F ] }; + + key.type[group1]="EIGHT_LEVEL"; + key { [ semicolon, colon, degree, NoSymbol, + dead_acute, dead_doubleacute ] }; + + key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC"; + key { [ egrave, Egrave, braceleft, NoSymbol, + NoSymbol, dead_caron ] }; + key { [ agrave, Agrave, braceright, NoSymbol, + NoSymbol, dead_breve ] }; + + key { [ ugrave, Ugrave, degree, NoSymbol, + NoSymbol, brokenbar ] }; + + key.type[group1]="FOUR_LEVEL_SEMIALPHABETIC"; + key { [ z, Z, guillemotleft, NoSymbol ] }; + key { [ x, X, guillemotright, NoSymbol ] }; + + key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC"; + key { [ c, C, NoSymbol, NoSymbol, + cent, copyright ] }; + key { [ v, V, NoSymbol, NoSymbol, + leftdoublequotemark, leftsinglequotemark ] }; + key { [ b, B, NoSymbol, NoSymbol, + rightdoublequotemark, rightsinglequotemark ] }; + key { [ n, N, NoSymbol, NoSymbol, + U0149, U266A ] }; + key { [ m, M, mu, NoSymbol, + mu, masculine ] }; + key { [ comma, apostrophe, less, NoSymbol, + Greek_horizbar, multiply ] }; + key { [ period, quotedbl, greater, NoSymbol, + periodcentered, division ] }; + key { [ eacute, Eacute, dead_acute, NoSymbol, + NoSymbol, dead_abovedot ] }; + + include "nbsp(level3s)" + + modifier_map Control{ Control_L }; + + include "level3(ralt_switch)" + include "level5(rctrl_switch)" +}; + +// OLPC Section +xkb_symbols "olpc" { + + include "ca(fr)" + + key { [ 2, quotedbl, ograve, Ograve ] }; + key { [ 3, slash, at, VoidSymbol ] }; + + key { [ e, E, EuroSign, VoidSymbol] }; + + key { [ period, period, 0x1002010 ] }; + + key { [ guillemotleft, guillemotright, degree, VoidSymbol ] }; +}; + +partial alphanumeric_keys +xkb_symbols "eng" { + include "us(basic)" + name[Group1] = "English (Canada)"; +}; + +// EXTRAS: + +partial alphanumeric_keys +xkb_symbols "kut" { + + // Ejective U0313 and acute accents are taken from shs layout. + include "ca(shs)" + + name[Group1]= "Kutenai"; + + // Alveolar Click + key { [ t, T,U01C2 ,U01C2 ] }; + + //Cent sign + key { [ c, C,U00A2,U00A2 ] }; + + //Mid dot + key { [ period, greater,U00B7 ] }; + + //Glottal stop + key { [ slash, question, U0294 ] }; + + //COMBINING COMMA ABOVE RIGHT + key { [ apostrophe, quotedbl, U0315,U0315 ] }; + + //MODIFIER LETTER RIGHT HALF RING + key { [ semicolon, colon,U02BE,U02BE ] }; +}; + +// Secwepemctsin keyboard for X11 +// written by Neskie Manuel +partial alphanumeric_keys +xkb_symbols "shs" { + + include "us" + + name[Group1]= "Secwepemctsin"; + + // Using a "dead key" to get a COMBINING COMMA ABOVE + // for ejectives on q, l, t, s, m, g, k, p, w, y, r. + // The Compose key is used for the other acutes and grave. + + key { [ comma, less, U0313 ] }; + key { [ a, A, aacute, Aacute ] }; + key { [ e, E, eacute, Eacute ] }; + key { [ u, U, uacute, Uacute ] }; + key { [ i, I, iacute, Iacute ] }; + key { [ o, O, oacute, Oacute ] }; + + include "level3(ralt_switch)" + include "compose(rctrl)" +}; + + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/ca(sun_type6)" +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/capslock b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/capslock new file mode 100644 index 0000000..3f4a0cd --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/capslock @@ -0,0 +1,74 @@ +default hidden partial modifier_keys +xkb_symbols "capslock" { + replace key { [ Caps_Lock ] }; + modifier_map Lock { Caps_Lock }; +}; + +hidden partial modifier_keys +xkb_symbols "shiftlock" { + replace key { [ Shift_Lock ] }; + modifier_map Shift { Shift_Lock }; +}; + +hidden partial modifier_keys +xkb_symbols "grouplock" { + replace key { [ ISO_Next_Group, Caps_Lock ] }; +}; + +hidden partial modifier_keys +xkb_symbols "swapescape" { + key { [ Escape ] }; + key { [ Caps_Lock ] }; +}; + +hidden partial modifier_keys +xkb_symbols "groupshift" { + key { + type[Group1] = "PC_ALT_LEVEL2", + [ Mode_switch, Caps_Lock ] + }; +}; + +hidden partial modifier_keys +xkb_symbols "escape" { + key { [ Escape ] }; +}; + +hidden partial modifier_keys +xkb_symbols "backspace" { + key { [ BackSpace ] }; +}; + +hidden partial modifier_keys +xkb_symbols "super" { + key { [ Super_L ] }; + modifier_map Mod4 { }; +}; + +hidden partial modifier_keys +xkb_symbols "hyper" { + key { [ Hyper_L ] }; + modifier_map Mod4 { }; +}; + +hidden partial modifier_keys +xkb_symbols "none" { + key { [ VoidSymbol ] }; +}; + +hidden partial modifier_keys +xkb_symbols "numlock" { + key { [ Num_Lock ] }; +}; + +// This changes the key to become a Control modifier, +// but it will still produce the Caps_Lock keysym. +hidden partial modifier_keys +xkb_symbols "ctrl_modifier" { + replace key { + type[Group1] = "ONE_LEVEL", + symbols[Group1] = [ Caps_Lock ], + actions[Group1] = [ SetMods(modifiers=Control) ] + }; + modifier_map Control { }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/ch b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/ch new file mode 100644 index 0000000..62c69f9 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/ch @@ -0,0 +1,216 @@ +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "latin" + name[Group1]= "German (Switzerland)"; + + key { [ section, degree ] }; + key { [ 1, plus, bar, exclamdown ] }; + key { [ 2, quotedbl, at, oneeighth ] }; + key { [ 3, asterisk, numbersign ] }; + key { [ 4, ccedilla ] }; + key { [ 5, percent ] }; + key { [ 6, ampersand, notsign ] }; + key { [ 7, slash, bar ] }; + key { [ 8, parenleft, cent ] }; + key { [ 9, parenright ] }; + key { [ 0, equal ] }; + key { [ apostrophe, question, dead_acute ] }; + key { [ dead_circumflex, dead_grave, dead_tilde ] }; + + key { [ e, E, EuroSign ] }; + key { [ z, Z ] }; + key { [ udiaeresis, egrave, bracketleft ] }; + key { [ dead_diaeresis, exclam, bracketright ] }; + + key { [ odiaeresis, eacute ] }; + key { [ adiaeresis, agrave, braceleft ] }; + key { [ dollar, sterling, braceright ] }; + + key { [ less, greater, backslash, brokenbar ] }; + key { [ y, Y ] }; + key { [ comma, semicolon ] }; + key { [ period, colon ] }; + key { [ minus, underscore ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "legacy" { + include "ch(basic)" + + name[Group1]= "German (Switzerland, legacy)"; + key { [ 7, slash, brokenbar ] }; +}; + +partial alphanumeric_keys +xkb_symbols "de" { + include "ch(basic)" +}; + +partial alphanumeric_keys +xkb_symbols "de_Sundeadkeys" { + // modify the basic Swiss German layout to use Sun dead keys + include "ch(basic)" + key { [ apostrophe, question, dead_acute ] }; + key { [ dead_circumflex, dead_grave, dead_tilde ] }; + key { [ dead_diaeresis, exclam, bracketright ] }; +}; + +partial alphanumeric_keys +xkb_symbols "de_sundeadkeys" { + include "ch(de_Sundeadkeys)" + name[Group1]= "German (Switzerland, Sun dead keys)"; +}; + +partial alphanumeric_keys +xkb_symbols "de_nodeadkeys" { + // modify the basic Swiss German layout not to have any dead keys + include "ch(basic)" + name[Group1]= "German (Switzerland, eliminate dead keys)"; + key { [ apostrophe, question, acute ] }; + key { [ asciicircum, grave, asciitilde ] }; + key { [ diaeresis, exclam, bracketright ] }; +}; + +partial alphanumeric_keys +xkb_symbols "fr" { + + include "ch(basic)" + name[Group1]= "French (Switzerland)"; + + override key { + [ egrave, udiaeresis, bracketleft ] + }; + override key { + [ eacute, odiaeresis ] + }; + override key { + [ agrave, adiaeresis, braceleft ] + }; +}; + +partial alphanumeric_keys +xkb_symbols "fr_Sundeadkeys" { + // modify the basic Swiss French layout to use Sun dead keys + include "ch(fr)" + key { [ apostrophe, question, dead_acute ] }; + key { [ dead_circumflex, dead_grave, dead_tilde ] }; + key { [ dead_diaeresis, exclam, bracketright ] }; +}; + +partial alphanumeric_keys +xkb_symbols "fr_sundeadkeys" { + include "ch(fr_Sundeadkeys)" + name[Group1]= "French (Switzerland, Sun dead keys)"; +}; + +partial alphanumeric_keys +xkb_symbols "fr_nodeadkeys" { + // modify the basic Swiss French layout not to have any dead keys + include "ch(fr)" + name[Group1]= "French (Switzerland, eliminate dead keys)"; + key { [ apostrophe, question, acute ] }; + key { [ asciicircum, grave, asciitilde ] }; + key { [ diaeresis, exclam, bracketright ] }; +}; + +// Copied from macintosh_vndr/ch +// 03.01.2003 +// Andreas Tobler +// modified for Swiss German Apple Extended Keyboard II + +partial alphanumeric_keys +xkb_symbols "de_mac" { + + name[Group1]= "German (Switzerland, Macintosh)"; + + key { [ 1, plus, plusminus, infinity ] }; + key { [ 2, quotedbl, leftdoublequotemark, rightdoublequotemark ] }; + key { [ 3, asterisk, numbersign, leftcaret ] }; + // not displayed here + key { [ 4, ccedilla, Ccedilla, slash ] }; + key { [ 5, percent, bracketleft ] }; + key { [ 6, ampersand, bracketright ] }; + key { [ 7, slash, bar, backslash ] }; + key { [ 8, parenleft, braceleft, Ograve ] }; + key { [ 9, parenright, braceright, Ocircumflex ] }; + key { [ 0, equal, notequal, Uacute ] }; + key { [ apostrophe, question, questiondown, NoSymbol ] }; + key { [ dead_circumflex,dead_grave, dead_acute, asciicircum ] }; + key { [ q, Q, oe, OE ] }; + key { [ w, W, Greek_SIGMA, Aacute ] }; + key { [ e, E, EuroSign, Ediaeresis ] }; + key { [ r, R, registered, Egrave ] }; + key { [ t, T, dagger, Icircumflex ] }; + key { [ z, Z, Greek_OMEGA, Iacute ] }; + key { [ u, U, degree, Ugrave ] }; + key { [ i, I, exclamdown, idotless ] }; + key { [ o, O, oslash, Ooblique ] }; + key { [ p, P, Greek_pi, Greek_PI ] }; + key { [ udiaeresis, egrave, section, ydiaeresis ] }; + key { [ dead_diaeresis, exclam, grave, apostrophe ] }; + key { [ a, A, aring, Aring ] }; + key { [ s, S, ssharp, NoSymbol ] }; + // ligature fl + key { [ d, D, Greek_sigma, NoSymbol ] }; + // partialderivative is not available here att + key { [ f, F, function, doubledagger ] }; + key { [ g, G, at, comma ] }; + key { [ h, H, ordfeminine, periodcentered ] }; + key { [ j, J, masculine, eth ] }; + key { [ k, K, Greek_DELTA, macron ] }; + key { [ l, L, notsign, caret ] }; + key { [ odiaeresis, eacute, cent, breve ] }; + key { [ adiaeresis, agrave, ae, AE ] }; + key { [ y, Y, yen, Ydiaeresis ] }; + key { [ x, X, similarequal, trademark ] }; + key { [ c, C, copyright, NoSymbol ] }; + key { [ v, V, radical, diamond ] }; + key { [ b, B, integral, NoSymbol ] }; + key { [ n, N, dead_tilde, enopencircbullet ] }; + // to be fixed att + key { [ m, M, mu, dead_abovering ] }; + // not sure att + key { [ comma, semicolon, guillemotleft, guillemotright ] }; + key { [ period, colon, ellipsis, division ] }; + key { [ minus, underscore, hyphen, emdash ] }; + key { [ section, degree, NoSymbol, NoSymbol ] }; + // ligature fi // per mille + key { [ space, nobreakspace, nobreakspace ] }; + key { [ less, greater, lessthanequal, greaterthanequal ] }; + key { [ dollar, sterling, paragraph, enfilledcircbullet ] }; + + include "kpdl(comma)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "fr_mac" { + + include "ch(de_mac)" + name[Group1]= "French (Switzerland, Macintosh)"; + + override key { + [ egrave, udiaeresis, bracketleft ] + }; + override key { + [ eacute, odiaeresis ] + }; + override key { + [ agrave, adiaeresis, braceleft ] + }; +}; + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6_de" { + include "sun_vndr/ch(sun_type6_de)" +}; + +partial alphanumeric_keys + xkb_symbols "sun_type6_fr" { + include "sun_vndr/ch(sun_type6_fr)" +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/ctrl b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/ctrl new file mode 100644 index 0000000..dd68add --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/ctrl @@ -0,0 +1,87 @@ +// Eliminate CapsLock, making it another Ctrl. +partial modifier_keys +xkb_symbols "nocaps" { + replace key { [ Control_L, Control_L ] }; + modifier_map Control { , }; +}; + +// Make the left Ctrl key a left Meta. +xkb_symbols "lctrl_meta" { + replace key { [ Meta_L ] }; +}; + +// Swap the functions of the CapsLock key and the left Ctrl key. +partial modifier_keys +xkb_symbols "swapcaps" { + replace key { [ Control_L ] }; + replace key { [ Caps_Lock ] }; +}; + +// Move Ctrl to the leftmost key on the middle row and CapsLock to the +// leftmost key on the bottom row. Only works if the geometry or keycodes +// file has defined appropriate aliases for the keys in question. +partial modifier_keys +xkb_symbols "ac_ctrl" { + replace key { [ Control_L ] }; + replace key { [ Caps_Lock ] }; +}; + +// Move Ctrl to the leftmost key on the bottom row and CapsLock to the +// leftmost key on the middle row. Only works if the geometry or keycodes +// file has defined appropriate aliases for the keys in question. +partial modifier_keys +xkb_symbols "aa_ctrl" { + replace key { [ Control_L ] }; + replace key { [ Caps_Lock ] }; +}; + +// Right Ctrl key functions as another right Alt. +partial modifier_keys +xkb_symbols "rctrl_ralt" { + key { symbols[Group1]= [ Alt_R ] }; +}; + +// Menu key functions as another right Ctrl. +partial modifier_keys +xkb_symbols "menu_rctrl" { + replace key { [ Control_R, Control_R ] }; + modifier_map Control { Control_L, }; +}; + +// Right Alt key functions as another right Ctrl. +partial modifier_keys +xkb_symbols "ralt_rctrl" { + replace key { type[Group1] = "TWO_LEVEL", + symbols[Group1] = [ Control_R, Control_R ] }; + modifier_map Control { }; +}; + +// Swap the functions of the left Alt key and the left Ctrl key. +partial modifier_keys +xkb_symbols "swap_lalt_lctl" { + replace key { [ Control_L, Control_L ] }; + replace key { [ Alt_L, Meta_L ] }; +}; + +// Swap the functions of the left Win key and the left Ctrl key. +partial modifier_keys +xkb_symbols "swap_lwin_lctl" { + replace key { [ Control_L ] }; + replace key { [ Super_L ] }; +}; + +// Swap the functions of the right Win key and the right Ctrl key. +partial modifier_keys +xkb_symbols "swap_rwin_rctl" { + replace key { [ Control_R ] }; + replace key { [ Super_R ] }; +}; + +// Map Ctrl to the left Alt key, Alt to the left Win key, +// and Super to the left Ctrl key. +partial modifier_keys +xkb_symbols "swap_lalt_lctl_lwin" { + replace key { [ Control_L, Control_L ] }; + replace key { [ Alt_L, Meta_L ] }; + replace key { [ Super_L ] }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/cz b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/cz new file mode 100644 index 0000000..97ab3cf --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/cz @@ -0,0 +1,185 @@ +default partial alphanumeric_keys +xkb_symbols "basic" { + + // This layout conforms to a new Czech compromise standard + // designed to satisfy most Unix, Windows and Mac users. + // 2001 by Kamil Toman + + include "latin" + name[Group1]= "Czech"; + + key { [ semicolon, dead_abovering, grave, asciitilde ] }; + key { [ plus, 1, exclam, dead_tilde ] }; + key { [ ecaron, 2, at, dead_caron ] }; + key { [ scaron, 3, numbersign, dead_circumflex ] }; + key { [ ccaron, 4, dollar, dead_breve ] }; + key { [ rcaron, 5, percent, dead_abovering]}; + key { [ zcaron, 6, asciicircum, dead_ogonek ] }; + key { [ yacute, 7, ampersand, dead_grave ] }; + key { [ aacute, 8, asterisk, dead_abovedot] }; + key { [ iacute, 9, braceleft, dead_acute ] }; + key { [ eacute, 0, braceright, dead_doubleacute ] }; + key { [ equal, percent, NoSymbol, dead_diaeresis]}; + key { [dead_acute, dead_caron, dead_macron, dead_cedilla ] }; + + key { [ q, Q, backslash, NoSymbol ] }; + key { [ w, W, bar, Nosymbol ] }; + key { [ e, E, EuroSign, NoSymbol ] }; + key { [ r, R, NoSymbol, NoSymbol ] }; + key { [ t, T, NoSymbol, NoSymbol ] }; + key { [ z, Z, NoSymbol, NoSymbol ] }; + key { [ u, U, NoSymbol, NoSymbol ] }; + key { [ i, I, NoSymbol, NoSymbol ] }; + key { [ o, O, NoSymbol, NoSymbol ] }; + key { [ p, P, NoSymbol, NoSymbol ] }; + + key { [ uacute, slash, bracketleft, division ] }; + key { [parenright, parenleft, bracketright, multiply ] }; + + key { [ a, A, asciitilde, NoSymbol ] }; + key { [ s, S, dstroke, NoSymbol ] }; + key { [ d, D, Dstroke, NoSymbol ] }; + key { [ f, F, bracketleft, NoSymbol ] }; + key { [ g, G, bracketright, NoSymbol ] }; + key { [ h, H, grave, NoSymbol ] }; + key { [ j, J, apostrophe, NoSymbol ] }; + key { [ k, K, lstroke, NoSymbol ] }; + key { [ l, L, Lstroke, NoSymbol ] }; + + key { [ uring, quotedbl, dollar, NoSymbol ] }; + key { [ section, exclam, apostrophe, ssharp ] }; + key { [ EuroSign, dead_diaeresis, NoSymbol, NoSymbol ] }; + key { [dead_diaeresis, apostrophe, backslash, bar ] }; + + key { [ backslash, bar, slash, NoSymbol ] }; + key { [ y, Y, degree, NoSymbol ] }; + key { [ x, X, numbersign, Nosymbol ] }; + key { [ c, C, ampersand, NoSymbol ] }; + key { [ v, V, at, NoSymbol ] }; + key { [ b, B, braceleft, NoSymbol ] }; + key { [ n, N, braceright, NoSymbol ] }; + key { [ m, M, asciicircum, NoSymbol ] }; + key { [ comma, question, less, NoSymbol ] }; + key { [ period, colon, greater, NoSymbol ] }; + key { [ minus, underscore, asterisk, NoSymbol ] }; + + key { [ space, space, space, space ] }; + + include "level3(ralt_switch)" +}; + +xkb_symbols "bksl" { + + // Use instead of (useful for keyboards without key). + + include "cz(basic)" + name[Group1]= "Czech (with <\|> key)"; + + key { [ backslash, bar, slash, NoSymbol ] }; +}; + +partial alphanumeric_keys +xkb_symbols "qwerty" { + + // This layout represents the actual Czech keyboards; + // it complies with the symbols printed on the keys. + // 2011 by Lukáš Mojžíš + + include "cz(basic)" + name[Group1]= "Czech (qwerty)"; + + key { [ z, Z, degree, NoSymbol ] }; + key { [ uring, quotedbl, semicolon, colon ] }; + key { [ section, exclam, apostrophe, ssharp ] }; + key { [ y, Y, NoSymbol, NoSymbol ] }; + key { [ uacute, slash, bracketleft, braceleft ] }; + key { [parenright, parenleft, bracketright, braceright ] }; + key { [ iacute, 9, parenleft, dead_acute ] }; + key { [ eacute, 0, parenright, dead_doubleacute ] }; +}; + +xkb_symbols "qwerty_bksl" { + + // Use instead of (useful for keyboards without key). + + include "cz(qwerty)" + name[Group1]= "Czech (qwerty, extended Backslash)"; + + key { [ backslash, bar, slash, NoSymbol ] }; +}; + +partial alphanumeric_keys alternate_group +xkb_symbols "ucw" { + + // This layout is usually used as the second group, + // it contains accented characters only, no 'latin' set. + // 2008 by Milan Vancura + + name[Group1]= "Czech (UCW layout, accented letters only)"; + + key { [zcaron, Zcaron ] }; + key { [ssharp ] }; + key { [ccaron, Ccaron ] }; + key { [ccedilla, Ccedilla ] }; + key { [ntilde, Ntilde ] }; + key { [ncaron, Ncaron ] }; + key { [lacute, Lacute ] }; + + key { [aacute, Aacute ] }; + key { [scaron, Scaron ] }; + key { [dcaron, Dcaron ] }; + key { [ediaeresis, Ediaeresis ] }; + key { [racute, Racute ] }; + key { [uacute, Uacute ] }; + key { [udiaeresis, Udiaeresis ] }; + key { [ocircumflex, Ocircumflex ] }; + key { [lcaron, Lcaron ] }; + + key { [adiaeresis, Adiaeresis ] }; + key { [ecaron, Ecaron ] }; + key { [eacute, Eacute ] }; + key { [rcaron, Rcaron ] }; + key { [tcaron, Tcaron ] }; + key { [yacute, Yacute ] }; + key { [uring, Uring ] }; + key { [iacute, Iacute ] }; + key { [oacute, Oacute ] }; + key { [odiaeresis, Odiaeresis ] }; +}; + +partial alphanumeric_keys +xkb_symbols "dvorak-ucw" { + + // US Dvorak layout extended with UCW, + // AltGr produces accented characters. + + include "us(dvorak)" + name[Group1]= "Czech (US Dvorak with CZ UCW support)"; + + key { [ j, J, eacute, Eacute ] }; + key { [ k, K, uacute, Uacute ] }; + key { [ z, Z, zcaron, Zcaron ] }; + + key { [ a, A, aacute, Aacute ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ e, E, ecaron, Ecaron ] }; + key { [ u, U, uring, Uring ] }; + key { [ i, I, iacute, Iacute ] }; + key { [ d, D, dcaron, Dcaron ] }; + key { [ t, T, tcaron, Tcaron ] }; + key { [ n, N, ncaron, Ncaron ] }; + key { [ s, S, scaron, Scaron ] }; + + key { [ y, Y, yacute, Yacute ] }; + key { [ c, C, ccaron, Ccaron ] }; + key { [ r, R, rcaron, Rcaron ] }; + + include "level3(ralt_switch)" +}; + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/cz(sun_type6)" +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/de b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/de new file mode 100644 index 0000000..944732e --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/de @@ -0,0 +1,806 @@ +// based on a keyboard map from an 'xkb/symbols/de' file + +default +xkb_symbols "basic" { + + include "latin(type4)" + + name[Group1]="German"; + + key { [ 2, quotedbl, twosuperior, oneeighth ] }; + key { [ 3, section, threesuperior, sterling ] }; + key { [ 4, dollar, onequarter, currency ] }; + + key {type[Group1]="FOUR_LEVEL_PLUS_LOCK", symbols[Group1]= + [ssharp, question, backslash, questiondown, 0x1001E9E ]}; +// The unicode capital letter sharp s U+1E9E is transformed to "SS" +// to match the rules for capitalizing sharp s in german. +// If the capital sharp s is needed, delete the line +// starting with from /usr/share/X11/locale/iso8859-15/Compose. +// If both doubled S and capital sharp s are needed, use 0x1001E9E +// for capital sharp s and some free unicode codepoint like 0x1001E9C +// for doubled S. Don`t forget to change this in the Compose file, too. + + key { [dead_acute, dead_grave, dead_cedilla, dead_ogonek ] }; + + key { [ e, E, EuroSign, EuroSign ] }; + key { [ z, Z, leftarrow, yen ] }; + key { [udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ] }; + key { [ plus, asterisk, asciitilde, macron ] }; + + key { [ s, S, U017F, U1E9E ] }; + key { [ j, J, dead_belowdot, dead_abovedot ] }; + key { [odiaeresis, Odiaeresis, dead_doubleacute, dead_belowdot ] }; + key { [adiaeresis, Adiaeresis, dead_circumflex, dead_caron ] }; + key { [dead_circumflex, degree, U2032, U2033 ] }; + + key { [numbersign, apostrophe, rightsinglequotemark, dead_breve ] }; + key { [ y, Y, guillemotright, U203A ] }; + key { [ x, X, guillemotleft, U2039 ] }; + key { [ v, V, doublelowquotemark, singlelowquotemark ] }; + key { [ b, B, leftdoublequotemark, leftsinglequotemark ] }; + key { [ n, N, rightdoublequotemark, rightsinglequotemark ] }; + key { [ comma, semicolon, periodcentered, multiply ] }; + key { [ period, colon, U2026, division ] }; + key { [ minus, underscore, endash, emdash ] }; + + include "kpdl(comma)" + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "legacy" { + // previous standard German layout with tilde as dead key + + include "de(basic)" + name[Group1]="German (legacy)"; + + key { [ plus, asterisk, dead_tilde, dead_macron ] }; +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + + // modify the basic German layout to not have any dead keys + + include "de(basic)" + name[Group1]="German (eliminate dead keys)"; + + key { [asciicircum, degree, notsign, notsign ] }; + key { [ acute, grave, cedilla, cedilla ] }; + key { [udiaeresis, Udiaeresis, diaeresis, diaeresis ] }; + key { [ plus, asterisk, asciitilde, macron ] }; + key { [odiaeresis, Odiaeresis, doubleacute, doubleacute ] }; + key { [adiaeresis, Adiaeresis, asciicircum, asciicircum ] }; + key { [numbersign, apostrophe, grave, grave ] }; +}; + +partial alphanumeric_keys +xkb_symbols "deadgraveacute" { + // modify the basic German layout to have only acute and grave + // as dead keys (tilde and circumflex are needed as spacing characters + // in many programming languages) + + include "de(basic)" + name[Group1]="German (dead grave acute)"; + + key { [asciicircum, degree, notsign, notsign ] }; + key { [ plus, asterisk, asciitilde, dead_macron ] }; + key { [numbersign, apostrophe, grave, grave ] }; +}; + +partial alphanumeric_keys +xkb_symbols "deadacute" { + // modify the basic German layout to have only acute as + // dead keys (ASCII grave, tilde and circumflex are needed as + // spacing characters in many programming languages and text formatters) + + include "de(deadgraveacute)" + + name[Group1]="German (dead acute)"; + + key { [dead_acute, grave, dead_cedilla, dead_ogonek ] }; + key { [numbersign, apostrophe, dead_grave, dead_grave ] }; +}; + + +partial alphanumeric_keys +xkb_symbols "T3" { + name[Group1]="German (T3)"; + + key.type[Group1] = "EIGHT_LEVEL"; + key { [ dead_circumflex, degree, multiply, NoSymbol, U204A, hyphen, bar, NoSymbol ] }; + key { [ 1, exclam, rightsinglequotemark, NoSymbol, onesuperior, exclamdown, U02B9, NoSymbol ] }; + key { [ 2, quotedbl, twosuperior, NoSymbol, twosuperior, currency, U02BA, NoSymbol ] }; + key { [ 3, section, threesuperior, NoSymbol, threesuperior, sterling, U02BF, NoSymbol ] }; + key { [ 4, dollar, emdash, NoSymbol, onequarter, 0x20AC, U02BE, NoSymbol ] }; + key { [ 5, percent, exclamdown, NoSymbol, onehalf, uparrow, U02C1, NoSymbol ] }; + key { [ 6, ampersand, questiondown, NoSymbol, threequarters, downarrow, U02C0, NoSymbol ] }; + key { [ 7, slash, braceleft, NoSymbol, oneeighth, leftarrow, braceleft, NoSymbol ] }; + key { [ 8, parenleft, bracketleft, NoSymbol, threeeighths, rightarrow, braceright, NoSymbol ] }; + key { [ 9, parenright, bracketright, NoSymbol, fiveeighths, plusminus, bracketleft, NoSymbol ] }; + key { [ 0, equal, braceright, NoSymbol, seveneighths, trademark, bracketright, NoSymbol ] }; + key { [ ssharp, question, backslash, NoSymbol, backslash, questiondown, U02BB, NoSymbol ] }; + key { [ dead_acute, dead_grave, dead_abovedot, NoSymbol, dead_cedilla, dead_ogonek, notsign, NoSymbol ] }; + + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC"; + key { [ q, Q, at, NoSymbol, U0242, U0241, U030D, NoSymbol ] }; + key { [ w, W, dead_caron, NoSymbol, U02B7, U2126, dead_abovedot, NoSymbol ] }; + key { [ e, E, EuroSign, NoSymbol, oe, OE, dead_breve, NoSymbol ] }; + key { [ r, R, dead_diaeresis, NoSymbol, paragraph, registered, dead_circumflex, NoSymbol ] }; + key { [ t, T, dead_macron, NoSymbol, UA78C, UA78B, dead_diaeresis, NoSymbol ] }; + key { [ z, Z, dead_doubleacute, NoSymbol, U027C, yen, dead_invertedbreve, NoSymbol ] }; + key { [ u, U, dead_breve, NoSymbol, U0223, U0222, dead_caron, NoSymbol ] }; + key { [ i, I, dead_tilde, NoSymbol, idotless, U214D, dead_abovecomma, NoSymbol ] }; + key { [ o, O, dead_abovering, NoSymbol, oslash, Oslash, dead_horn, NoSymbol ] }; + key { [ p, P, dead_hook, NoSymbol, thorn, THORN, dead_hook, NoSymbol ] }; + key { [ udiaeresis, Udiaeresis, dead_horn, NoSymbol, U017F, dead_abovering, dead_grave, NoSymbol ] }; + key.type[Group1] = "EIGHT_LEVEL"; + key { [ plus, asterisk, asciitilde, NoSymbol, dead_tilde, dead_macron, at, NoSymbol ] }; + + key.type[Group1] = "ONE_LEVEL"; + key { [ Caps_Lock ] }; + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC"; + key { [ a, A, lessthanequal, NoSymbol, ae, AE, U0329, NoSymbol ] }; + key { [ s, S, greaterthanequal, NoSymbol, ssharp, section, dead_belowdot, NoSymbol ] }; + key { [ d, D, U2300, NoSymbol, eth, ETH, dead_belowbreve, NoSymbol ] }; + key { [ f, F, minutes, NoSymbol, U0294, ordfeminine, dead_belowcircumflex, NoSymbol ] }; + key { [ g, G, seconds, NoSymbol, eng, ENG, dead_belowmacron, NoSymbol ] }; + key { [ h, H, U1E9E, NoSymbol, U0272, U019D, U0332, NoSymbol ] }; + key { [ j, J, dead_cedilla, NoSymbol, U0133, U0132, dead_belowring, NoSymbol ] }; + key { [ k, K, dead_belowcomma, NoSymbol, kra, dead_belowcomma, dead_stroke, NoSymbol ] }; + key { [ l, L, dead_ogonek, NoSymbol, lstroke, Lstroke, U0338, NoSymbol ] }; + key { [ odiaeresis, Odiaeresis, dead_belowdot, NoSymbol, dead_acute, dead_doubleacute, degree, NoSymbol ] }; + key { [ adiaeresis, Adiaeresis, dead_stroke, NoSymbol, U019B, U1E9E, minutes, NoSymbol ] }; + key.type[Group1] = "EIGHT_LEVEL"; + key { [ numbersign, apostrophe, registered, NoSymbol, schwa, SCHWA, seconds, NoSymbol ] }; + + key { [ less, greater, bar, NoSymbol, U0149, brokenbar, U266A, NoSymbol ] }; + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC"; + key { [ y, Y, U203A, NoSymbol, U0292, U01B7, guillemotleft, NoSymbol ] }; + key { [ x, X, guillemotright, NoSymbol, doublelowquotemark, singlelowquotemark, guillemotright, NoSymbol ] }; + key { [ c, C, copyright, NoSymbol, cent, copyright, Greek_horizbar, NoSymbol ] }; + key { [ v, V, guillemotleft, NoSymbol, leftdoublequotemark, leftsinglequotemark, U2039, NoSymbol ] }; + key { [ b, B, U2039, NoSymbol, rightdoublequotemark, rightsinglequotemark, U203A, NoSymbol ] }; + key { [ n, N, endash, NoSymbol, U019E, U0220, endash, NoSymbol ] }; + key { [ m, M, Greek_mu, NoSymbol, mu, masculine, emdash, NoSymbol ] }; + key.type[Group1] = "EIGHT_LEVEL"; + key { [ comma, semicolon, U02BB, NoSymbol, ellipsis, multiply, dollar, NoSymbol ] }; + key { [ period, colon, U200C, NoSymbol, periodcentered, division, numbersign, NoSymbol ] }; + key { [ minus, underscore, hyphen, NoSymbol, U0140, U013F, U2011, NoSymbol ] }; + + key { [ space, space, nobreakspace, NoSymbol, U202F, U200C, nobreakspace, NoSymbol ] }; + + include "kpdl(comma)" + + include "level5(modifier_mapping)" + include "level3(modifier_mapping)" + key.type[Group1] = "THREE_LEVEL"; + key { [ Shift_L, Shift_L, ISO_Level5_Latch ] }; + key { [ Shift_R, Shift_R, ISO_Level5_Latch ] }; + key { [ ISO_Level3_Latch, ISO_Level5_Latch, ISO_Level5_Latch ] }; + }; + +partial alphanumeric_keys +xkb_symbols "ro" { + // add romanian-specific letters to the basic German layout. + // Romanian symbols are accessible with combination of and + // 'a', 's', 't', 'i', 'ä (ä)' (+ for capital letters). + // To view romanian-specific symbols, add "export LC_CTYPE=ro_RO" + // or "export LC_CTYPE=de_DE.utf8" to your .profile. + + include "de(basic)" + + name[Group1]="Romanian (Germany)"; + + key { [ t, T, tcedilla, Tcedilla ] }; + key { [ i, I, icircumflex, Icircumflex ] }; + key { [ a, A, acircumflex, Acircumflex ] }; + key { [ s, S, scedilla, Scedilla ] }; + key { [ adiaeresis, Adiaeresis, abreve, Abreve ] }; +}; + +partial alphanumeric_keys +xkb_symbols "ro_nodeadkeys" { + // add romanian-specific letters to the German nodeadkeys layout. + // Read the comment for de_ro ! + + include "de(nodeadkeys)" + name[Group1]="Romanian (Germany, eliminate dead keys)"; + + key { [ t, T, tcedilla, Tcedilla ] }; + key { [ i, I, icircumflex, Icircumflex ] }; + key { [ a, A, acircumflex, Acircumflex ] }; + key { [ s, S, scedilla, Scedilla ] }; + key { [ adiaeresis, Adiaeresis, abreve, Abreve ] }; +}; + +// German Dvorak keymap by Thorsten Staerk (www.staerk.de/thorsten) +// Have acute and grave as dead keys, tilde and circumflex alive as they are needed +// in many programming languages. +// to use this keymap, use a 105-key-keyboard and the command setxkbmap -model pc105 -layout dvorak -variant de +// source: http://www-lehre.informatik.uni-osnabrueck.de/~rfreund/dvorak.php +partial alphanumeric_keys +xkb_symbols "dvorak" { + include "us(dvorak)" + + name[Group1]="German (Dvorak)"; + + key { [ asciicircum, degree ] }; + + key { [ 1, exclam, onesuperior ] }; + key { [ 2, quotedbl, twosuperior ] }; + key { [ 3, section, threesuperior ] }; + key { [ 4, dollar, bar ] }; + key { [ 5, percent, bar ] }; + key { [ 6, ampersand, brokenbar ] }; + key { [ 7, slash, braceleft ] }; + key { [ 8, parenleft, bracketleft ] }; + key { [ 9, parenright, bracketright ] }; + key { [ 0, equal, braceright ] }; + key { [ plus, asterisk, asciitilde ] }; + key { [ less, greater, dead_grave ] }; + + key { [ udiaeresis, Udiaeresis, at ] }; + key { [ comma, semicolon, dead_diaeresis ] }; + key { [ period, colon ] }; + key { [ c, C, copyright, Cacute ] }; + key { [ t, T, trademark ] }; + key { [ z, Z, zabovedot, Zabovedot ] }; + key { [ question, ssharp ] }; + key { [ slash, backslash, dead_acute ] }; + + key { [ a, A, at, aogonek ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ e, E, EuroSign, eogonek ] }; + key { [ i, I ] }; + key { [ u, U ] }; + key { [ h, H ] }; + key { [ d, D ] }; + key { [ r, R, registered ] }; + key { [ n, N, nacute, Nacute ] }; + key { [ s, S, sacute, Sacute] }; + key { [ l, L, lstroke, Lstroke ] }; + + key { [ odiaeresis, Odiaeresis ] }; + key { [ q, Q, at ] }; + key { [ m, M, mu ] }; + key { [ numbersign, apostrophe ] }; + + key { [ minus, underscore, hyphen, diaeresis] }; + + key { [ adiaeresis, Adiaeresis, bar ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "Sundeadkeys" { + + // For naming consistency + + include "de(basic)" + +}; + +partial alphanumeric_keys +xkb_symbols "sundeadkeys" { + + // For naming consistency + + include "de(Sundeadkeys)" + + name[Group1]="German (Sun dead keys)"; +}; + + +// German Neo-Layout Version 2 +// adopted 2004 by Hanno Behrens +// inspired by Dvorak/de-ergo http://www.goebel-consult.de/de-ergo/ +// +// Authors: +// Stephan Hilb +// +// Benjamin Kellermann +// Erik Streb +// and many other contributors +// +// http://www.neo-layout.org +// +// $Revision$, $Date$ + +partial alphanumeric_keys modifier_keys keypad_keys +xkb_symbols "neo_base" { + + // Levels in Neo jargon + // -------------------------------------------------------------- + // Ebene 1: normal + // Ebene 2: Shift + // Ebene 3: Mod3 + // Ebene 4: Mod4 (for marking something use Shift + Mod4) + // Ebene 5: Shift + Mod3 + // Ebene 6: Mod3 + Mod4 + // Compose (not a level): Mod3 + Tab + // Feststelltaste (Capslock): Shift + Shift + // Mod4-Lock: Mod4 + Mod4 + // Mod4-Lock: Shift + Mod3 + Tab + + // Legend + // =============== + // Levels in Xkbmap jargon to be found here in the definitions. + // These are the levels used, and Xorg's translations: + // -------------------------------------------------------------- + // Xorg: Level1 Level2 Level3 Level4 Level5 Level6 Level7 Level8 + // Neo: Ebene1 Ebene2 Ebene3 Ebene5 Ebene4 Pseudo-Ebene Ebene6 ??? + // Keys (Neo): None Shift Mod3 Mod3 + Shift Mod4 Mod4 + Shift Mod3 + Mod4 Mod3 + Mod4 + Shift + + + // Alphanumeric-keys + // =============== + key.type[Group1] = "EIGHT_LEVEL"; + + // Tab as Multi_key (Compose) + // -------------------------------------------------------------- + key { [ Tab, ISO_Left_Tab, Multi_key, ISO_Level5_Lock, NoSymbol, NoSymbol, NoSymbol, ISO_Level5_Lock ] }; + + + // Number row + // -------------------------------------------------------------- + key { [ dead_circumflex, dead_caron, U21BB, U02DE, dead_abovedot, Pointer_EnableKeys, dead_belowdot, NoSymbol ] }; + + key { [ 1, degree, onesuperior, onesubscript, ordfeminine, NoSymbol, notsign, NoSymbol ] }; + key { [ 2, section, twosuperior, twosubscript, masculine, NoSymbol, logicalor, NoSymbol ] }; + key { [ 3, U2113, threesuperior, threesubscript, numerosign, NoSymbol, logicaland, NoSymbol ] }; + key { [ 4, guillemotright, U203A, femalesymbol, NoSymbol, NoSymbol, U22A5, NoSymbol ] }; + key { [ 5, guillemotleft, U2039, malesymbol, periodcentered, NoSymbol, U2221, NoSymbol ] }; + key { [ 6, dollar, cent, U26A5, sterling, NoSymbol, U2225, NoSymbol ] }; + + key { [ 7, EuroSign, yen, U03F0, currency, NoSymbol, rightarrow, NoSymbol ] }; + key { [ 8, doublelowquotemark, singlelowquotemark, U27E8, Tab, ISO_Left_Tab, U221E, NoSymbol ] }; + key { [ 9, leftdoublequotemark, leftsinglequotemark, U27E9, KP_Divide, KP_Divide, variation, NoSymbol ] }; + key { [ 0, rightdoublequotemark, rightsinglequotemark, zerosubscript, KP_Multiply, KP_Multiply, emptyset, NoSymbol ] }; + + key { [ minus, emdash, NoSymbol, U2011, KP_Subtract, KP_Subtract, hyphen, NoSymbol ] }; + key { [ dead_grave, dead_cedilla, dead_abovering, dead_dasia, dead_diaeresis, NoSymbol, dead_macron, NoSymbol ] }; + + // Top row + // -------------------------------------------------------------- + key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC"; + key { [ x, X, ellipsis, Greek_xi, Prior, Prior, Greek_XI, NoSymbol ] }; + key { [ v, V, underscore, NoSymbol, BackSpace, BackSpace, radical, NoSymbol ] }; + key { [ l, L, bracketleft, Greek_lambda, Up, Up, Greek_LAMBDA, NoSymbol ] }; + key { [ c, C, bracketright, Greek_chi, Delete, Delete, U2102, NoSymbol ] }; + key { [ w, W, asciicircum, Greek_omega, Next, Next, Greek_OMEGA, NoSymbol ] }; + + key { [ k, K, exclam, Greek_kappa, exclamdown, NoSymbol, multiply, NoSymbol ] }; + key { [ h, H, less, Greek_psi, KP_7, KP_7, Greek_PSI, NoSymbol ] }; + key { [ g, G, greater, Greek_gamma, KP_8, KP_8, Greek_GAMMA, NoSymbol ] }; + key { [ f, F, equal, Greek_phi, KP_9, KP_9, Greek_PHI, NoSymbol ] }; + key { [ q, Q, ampersand, U03D5, KP_Add, KP_Add, U211A, NoSymbol ] }; + + key { [ ssharp, U1E9E, U017F, Greek_finalsmallsigma, U2212, NoSymbol, jot, NoSymbol ] }; + + key.type[Group1] = "EIGHT_LEVEL"; + key { [ dead_acute, dead_tilde, dead_stroke, dead_psili, dead_doubleacute, NoSymbol, dead_breve, NoSymbol ] }; + + // Middle row + // -------------------------------------------------------------- + key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC"; + key { [ u, U, backslash, NoSymbol, Home, Home, includedin, NoSymbol ] }; + key { [ i, I, slash, Greek_iota, Left, Left, integral, NoSymbol ] }; + key { [ a, A, braceleft, Greek_alpha, Down, Down, U2200, NoSymbol ] }; + key { [ e, E, braceright, Greek_epsilon, Right, Right, U2203, NoSymbol ] }; + key { [ o, O, asterisk, Greek_omicron, End, End, elementof, NoSymbol ] }; + + key { [ s, S, question, Greek_sigma, questiondown, NoSymbol, Greek_SIGMA, NoSymbol ] }; + key { [ n, N, parenleft, Greek_nu, KP_4, KP_4, U2115, NoSymbol ] }; + key { [ r, R, parenright, Greek_rho, KP_5, KP_5, U211D, NoSymbol ] }; + key { [ t, T, minus, Greek_tau, KP_6, KP_6, partialderivative, NoSymbol ] }; + key { [ d, D, colon, Greek_delta, KP_Separator, comma, Greek_DELTA, NoSymbol ] }; + + key { [ y, Y, at, Greek_upsilon, period, KP_Decimal, nabla, NoSymbol ] }; + + // Bottom row + // -------------------------------------------------------------- + key { [ udiaeresis, Udiaeresis, numbersign, NoSymbol, Escape, Escape, union, NoSymbol ] }; + key { [ odiaeresis, Odiaeresis, dollar, U03F5, Tab, Tab, intersection, NoSymbol ] }; + key { [ adiaeresis, Adiaeresis, bar, Greek_eta, Insert, Insert, U2135, NoSymbol ] }; + key { [ p, P, asciitilde, Greek_pi, Return, Return, Greek_PI, NoSymbol ] }; + key { [ z, Z, grave, Greek_zeta, Undo, Redo, U2124, NoSymbol ] }; + + key { [ b, B, plus, Greek_beta, colon, NoSymbol, U21D0, NoSymbol ] }; + key { [ m, M, percent, Greek_mu, KP_1, KP_1, ifonlyif, NoSymbol ] }; + key.type[Group1] = "EIGHT_LEVEL"; + key { [ comma, endash, quotedbl, U03F1, KP_2, KP_2, U21D2, NoSymbol ] }; + key { [ period, enfilledcircbullet, apostrophe, U03D1, KP_3, KP_3, U21A6, NoSymbol ] }; + key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC"; + key { [ j, J, semicolon, Greek_theta, semicolon, NoSymbol, Greek_THETA, NoSymbol ] }; + key.type[Group1] = "EIGHT_LEVEL"; + + // Space key + // -------------------------------------------------------------- + key { [ space, space, space, nobreakspace, KP_0, KP_0, U202F, NoSymbol ] }; + + + // Keypad-keys + // =============== + + // The former Numlock key: + key { [ Tab, ISO_Left_Tab, equal, approxeq, notequal, Pointer_EnableKeys, identical, NoSymbol ] }; + + // Topmost row + // -------------------------------------------------------------- + key { [ KP_Divide, KP_Divide, division, U2300, U2215, NoSymbol, U2223, NoSymbol ] }; + key { [ KP_Multiply, KP_Multiply, U22C5, U2299, multiply, NoSymbol, U2297, NoSymbol ] }; + key { [ KP_Subtract, KP_Subtract, U2212, U2296, U2216, NoSymbol, U2238, NoSymbol ] }; + + // Top row + // -------------------------------------------------------------- + key { [ KP_7, U2714, U2195, U226A, KP_Home, KP_Home, upstile, NoSymbol ] }; + key { [ KP_8, U2718, uparrow, intersection, KP_Up, KP_Up, U22C2, NoSymbol ] }; + key { [ KP_9, dagger, U20D7, U226B, KP_Prior, KP_Prior, U2309, NoSymbol ] }; + key { [ KP_Add, KP_Add, plusminus, U2295, U2213, NoSymbol, U2214, NoSymbol ] }; + + // Middle row + // -------------------------------------------------------------- + key { [ KP_4, club, leftarrow, includedin, KP_Left, KP_Left, U2286, NoSymbol ] }; + key { [ KP_5, EuroSign, colon, U22B6, KP_Begin, KP_Begin, U22B7, NoSymbol ] }; + key { [ KP_6, U2023, rightarrow, includes, KP_Right, KP_Right, U2287, NoSymbol ] }; + + // Bottom row + // -------------------------------------------------------------- + key { [ KP_1, diamond, U2194, lessthanequal, KP_End, KP_End, downstile, NoSymbol ] }; + key { [ KP_2, heart, downarrow, union, KP_Down, KP_Down, U22C3, NoSymbol ] }; + key { [ KP_3, U2660, U21CC, greaterthanequal, KP_Next, KP_Next, U230B, NoSymbol ] }; + key { [ KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, NoSymbol ] }; + key { [ KP_Equal, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; + + // Bottommost row + // -------------------------------------------------------------- + key { [ KP_0, U2423, percent, U2030, KP_Insert, KP_Insert, U25A1, NoSymbol ] }; + key { [ KP_Separator, period, comma, minutes, KP_Delete, KP_Delete, seconds, NoSymbol ] }; +}; + +partial alphanumeric_keys modifier_keys keypad_keys +xkb_symbols "neo" { + + include "de(neo_base)" + + name[Group1]= "German (Neo 2)"; + + include "shift(both_capslock)" + include "level3(caps_switch)" + include "level3(bksl_switch)" + include "level5(lsgt_switch)" + include "level5(ralt_switch)" +}; + +// Copied from macintosh_vndr/de +// olh@suse.de very close to MacOS map + +partial alphanumeric_keys +xkb_symbols "mac" { + + include "de" + name[Group1]= "German (Macintosh)"; + + key { [ 1, exclam, exclamdown, at ] }; + key { [ 5, percent, bracketleft ] }; + key { [ 6, ampersand, bracketright ] }; + key { [ 7, slash, bar, backslash ] }; + key { [ 8, parenleft, braceleft, asciitilde ] }; + key { [ 9, parenright, braceright ] }; + key { [ q, Q, guillemotleft, guillemotright ] }; + key { [ r, R, registered ] }; + key { [ u, U, diaeresis, Aacute ] }; + key { [ i, I, slash, Ucircumflex ] }; + key { [ udiaeresis, Udiaeresis, periodcentered, degree ] }; + key { [ plus, asterisk, asciitilde ] }; + key { [ a, A, aring, Aring ] }; + key { [ g, G, copyright ] }; + key { [ h, H, ordfeminine ] }; + key { [ l, L, at ] }; + key { [ odiaeresis, Odiaeresis, dead_acute ] }; + key { [ n, N, asciitilde ] }; + +}; + +partial alphanumeric_keys +xkb_symbols "mac_nodeadkeys" { + // modify the standard German mac layout to not have any dead keys + include "de(mac)" + name[Group1]= "German (Macintosh, eliminate dead keys)"; + + key { [ asciicircum, degree, notsign ] }; + key { [ 4, dollar, onequarter, currency ] }; + key { [ acute, grave, cedilla ] }; + key { [ udiaeresis, Udiaeresis, diaeresis ] }; + key { [ plus, asterisk, asciitilde, macron ] }; + key { [ odiaeresis, Odiaeresis, acute ] }; + key { [ adiaeresis, Adiaeresis, asciicircum ] }; + + key { [ numbersign, apostrophe, grave ] }; +}; + +partial alphanumeric_keys +xkb_symbols "dsb" +{ + include "latin(basic)" + name[Group1] = "Lower Sorbian"; + key { [ z, Z, zcaron, Zcaron ] }; + key { [ x, X, zacute, Zacute ] }; + key { [ c, C, cacute, Cacute ] }; + key { [ v, V, ccaron, Ccaron ] }; + key { [ n, N, nacute, Nacute ] }; + key { [ s, S, sacute, Sacute ] }; + key { [ d, D, scaron, Scaron ] }; + key { [ f, F ] }; + key { [ q, Q ] }; + key { [ w, W ] }; + key { [ e, E, ecaron, Ecaron ] }; + key { [ r, R, racute, Racute ] }; + key { [ t, T, U20B5, EuroSign ] }; + key { [ o, O, oacute, Oacute ] }; + include "kpdl(comma)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "dsb_qwertz" +{ + include "latin(basic)" + name[Group1] = "Lower Sorbian (qwertz)"; + key { [ y, Y ] }; + key { [ x, X ] }; + key { [ c, C, cacute, Cacute ] }; + key { [ v, V, ccaron, Ccaron ] }; + key { [ n, N, nacute, Nacute ] }; + key { [ s, S, sacute, Sacute ] }; + key { [ d, D, scaron, Scaron ] }; + key { [ f, F ] }; + key { [ q, Q ] }; + key { [ w, W ] }; + key { [ e, E, ecaron, Ecaron ] }; + key { [ r, R, racute, Racute ] }; + key { [ t, T, U20B5, EuroSign ] }; + key { [ z, Z, zcaron, Zcaron ] }; + key { [ u, U, zacute, Zacute ] }; + key { [ o, O, oacute, Oacute ] }; + include "kpdl(comma)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "qwerty" { + + // This layout should work exactly as a de with the exception + // of 'Z' and 'Y' keys, which are in the qwerty style (ie. swapped). + // 2008 by Matej Košík + + include "de(basic)" + + name[Group1] = "German (qwerty)"; + + key { [ z, Z, leftarrow, yen ] }; + key { [ y, Y, guillemotleft, less ] }; +}; + +// layout for Russian letters on an german keyboard +// based on US-RU layout by Ivan Popov 2005-07-17 +// adopted for german layout by Alexey Fisher 2010-08-19 + +partial alphanumeric_keys +xkb_symbols "ru" { + + include "de(basic)" + + name[Group1]= "Russian (Germany, phonetic)"; + + key.type[group1]="FOUR_LEVEL_ALPHABETIC"; + + key { [ Cyrillic_a, Cyrillic_A ] }; + key { [ Cyrillic_be, Cyrillic_BE ] }; + key { [ Cyrillic_ve, Cyrillic_VE ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE ] }; + key { [ Cyrillic_de, Cyrillic_DE ] }; + key { [ Cyrillic_ie, Cyrillic_IE ] }; + key { [ Cyrillic_io, Cyrillic_IO, asciitilde ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key { [ Cyrillic_ze, Cyrillic_ZE ] }; + key { [ Cyrillic_i, Cyrillic_I ] }; + key { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; + key { [ Cyrillic_ka, Cyrillic_KA ] }; + key { [ Cyrillic_el, Cyrillic_EL ] }; + key { [ Cyrillic_em, Cyrillic_EM ] }; + key { [ Cyrillic_en, Cyrillic_EN ] }; + key { [ Cyrillic_o, Cyrillic_O ] }; + key { [ Cyrillic_pe, Cyrillic_PE ] }; + key { [ Cyrillic_er, Cyrillic_ER ] }; + key { [ Cyrillic_es, Cyrillic_ES ] }; + key { [ Cyrillic_te, Cyrillic_TE ] }; + key { [ Cyrillic_u, Cyrillic_U ] }; + key { [ Cyrillic_ef, Cyrillic_EF ] }; + key { [ Cyrillic_ha, Cyrillic_HA ] }; + key { [ Cyrillic_tse, Cyrillic_TSE ] }; + key { [ Cyrillic_che, Cyrillic_CHE ] }; + key { [ Cyrillic_sha, Cyrillic_SHA ] }; + key { [ Cyrillic_shcha, Cyrillic_SHCHA, plus, asterisk ] }; + key { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU ] }; + key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; + key { [ Cyrillic_e, Cyrillic_E ] }; + key { [ Cyrillic_yu, Cyrillic_YU, numbersign, apostrophe ] }; + key { [ Cyrillic_ya, Cyrillic_YA ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "htcdream" { + include "inet(htcdream)" + + name[Group1]= "German"; + + //second row + key { [ q, Q, Tab, Tab ] }; + key { [ w, W, grave, grave ] }; + key { [ e, E, EuroSign, EuroSign ] }; + key { [ r, R, underscore, underscore ] }; + key { [ t, T, sterling, sterling] }; + key { [ z, Z, division, division ] }; + key { [ u, U, udiaeresis, udiaeresis ] }; + key { [ i, I, minus, minus ] }; + key { [ o, O, odiaeresis, odiaeresis ] }; + key { [ p, P, equal, equal ] }; + + //third row + key { [ a, A, adiaeresis, adiaeresis ] }; + key { [ s, S, ssharp, ssharp] }; + key { [ d ,D, backslash, backslash ] }; + key { [ f, F, braceleft, braceleft ] }; + key { [ g, G, braceright, braceright ] }; + key { [ h, H, multiply, multiply ] }; + key { [ j, J, colon, colon ] }; + key { [ k, K, plus, plus ] }; + key { [ l, L, apostrophe, apostrophe ] }; + + //forth row + key { [ y, Y, bar, bar ] }; + key { [ x, X, bracketleft, bracketleft ] }; + key { [ c, C, bracketright, bracketright ] }; + key { [ v, V, less, less ] }; + key { [ b, B, greater, greater ] }; + key { [ n, N, semicolon, semicolon ] }; + key { [ m, M, quotedbl, quotedbl ] }; + key { [ comma, comma, question, question ] }; + + //fifth row + key { [ at, at, asciitilde, asciitilde ] }; + + include "level3(alt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "tr" { + + // add turkish-specific letters to the basic German layout. + // Turkish symbols are accessible with combination of and + // 'i', 's', 'g', 'c'' (+ for capital letters). + + include "de(basic)" + + name[Group1]="Turkish (Germany)"; + + key { [ i, I, U0131, U0130 ] }; + key { [ s, S, U015F, U015E ] }; + key { [ g, G, U011F, U011E ] }; + key { [ c, C, U0E7, U0C7 ] }; + +}; + +// EXTRAS: + +partial alphanumeric_keys +xkb_symbols "us" { + include "us" + + name[Group1]="German (US keyboard with German letters)"; + + key { [ a, A, adiaeresis, Adiaeresis ] }; + key { [ s, S, ssharp, ssharp ] }; + key { [ semicolon, colon, odiaeresis, Odiaeresis ] }; + key { [ apostrophe, quotedbl, adiaeresis, Adiaeresis ] }; + key { [ e, E, EuroSign, EuroSign ] }; + key { [ u, U, udiaeresis, Udiaeresis ] }; + key { [ o, O, odiaeresis, Odiaeresis ] }; + key { [ bracketleft, braceleft, udiaeresis, Udiaeresis ] }; + key { [ 3, numbersign, section, section ] }; + key { [ minus, underscore, ssharp, question ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "hu" { + + // modify the basic German layout to not have any dead keys and add Hungarian letters + + include "de(basic)" + name[Group1]="German (with Hungarian letters and no dead keys)"; + + key { [ y, Y, guillemotleft, less ] }; + key { [odiaeresis, Odiaeresis, eacute, Eacute ] }; + key { [adiaeresis, Adiaeresis, aacute, Aacute] }; + key { [ e, E, EuroSign, EuroSign ] }; + key { [ z, Z, leftarrow, yen ] }; + key { [ u, U, uacute, Uacute ] }; + key { [ i, I, iacute, Iacute ] }; + key { [ o, O, odoubleacute,Odoubleacute ] }; + key { [udiaeresis, Udiaeresis, udoubleacute,Udoubleacute ] }; + key { [ plus, asterisk, asciitilde, macron ] }; + key { [ acute, grave, oacute, Oacute ] }; + key { [numbersign, apostrophe, grave, grave ] }; + key { [asciicircum, degree, notsign, notsign ] }; +}; + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/de(sun_type6)" +}; + +partial alphanumeric_keys +xkb_symbols "adnw_base" { + include "de(neo_base)" + + key.type[Group1] = "EIGHT_LEVEL"; + key { [ period, enfilledcircbullet, NoSymbol, U03D1, NoSymbol, NoSymbol, U21A6, NoSymbol ] }; + key { [ comma, endash, NoSymbol, U03F1, NoSymbol, NoSymbol, U21D2, NoSymbol ] }; + + key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC"; + key { [ k, K, NoSymbol, Greek_kappa, NoSymbol, NoSymbol, multiply, NoSymbol ] }; + key { [ u, U, NoSymbol, NoSymbol, NoSymbol, NoSymbol, includedin, NoSymbol ] }; + key { [ udiaeresis, Udiaeresis, NoSymbol, NoSymbol, NoSymbol, NoSymbol, union, NoSymbol ] }; + key { [ adiaeresis, Adiaeresis, NoSymbol, Greek_eta, NoSymbol, NoSymbol, U2135, NoSymbol ] }; + key { [ v, V, NoSymbol, NoSymbol, NoSymbol, NoSymbol, radical, NoSymbol ] }; + key { [ g, G, NoSymbol, Greek_gamma, NoSymbol, NoSymbol, Greek_GAMMA, NoSymbol ] }; + key { [ c, C, NoSymbol, Greek_chi, NoSymbol, NoSymbol, U2102, NoSymbol ] }; + key { [ l, L, NoSymbol, Greek_lambda, NoSymbol, NoSymbol, Greek_LAMBDA, NoSymbol ] }; + key { [ j, J, NoSymbol, Greek_theta, NoSymbol, NoSymbol, Greek_THETA, NoSymbol ] }; + key { [ f, F, NoSymbol, Greek_phi, NoSymbol, NoSymbol, Greek_PHI, NoSymbol ] }; + key { [ h, H, NoSymbol, Greek_psi, NoSymbol, NoSymbol, Greek_PSI, NoSymbol ] }; + key { [ i, I, NoSymbol, Greek_iota, NoSymbol, NoSymbol, integral, NoSymbol ] }; + key { [ e, E, NoSymbol, Greek_epsilon, NoSymbol, NoSymbol, U2203, NoSymbol ] }; + key { [ a, A, NoSymbol, Greek_alpha, NoSymbol, NoSymbol, U2200, NoSymbol ] }; + key { [ o, O, NoSymbol, Greek_omicron, NoSymbol, NoSymbol, elementof, NoSymbol ] }; + key { [ d, D, NoSymbol, Greek_delta, NoSymbol, NoSymbol, Greek_DELTA, NoSymbol ] }; + key { [ t, T, NoSymbol, Greek_tau, NoSymbol, NoSymbol, partialderivative, NoSymbol ] }; + key { [ r, R, NoSymbol, Greek_rho, NoSymbol, NoSymbol, U211D, NoSymbol ] }; + key { [ n, N, NoSymbol, Greek_nu, NoSymbol, NoSymbol, U2115, NoSymbol ] }; + key { [ s, S, NoSymbol, Greek_sigma, NoSymbol, NoSymbol, Greek_SIGMA, NoSymbol ] }; + key { [ ssharp, U1E9E, NoSymbol, Greek_finalsmallsigma, NoSymbol, NoSymbol, jot, NoSymbol ] }; + key { [ x, X, NoSymbol, Greek_xi, NoSymbol, NoSymbol, Greek_XI, NoSymbol ] }; + key { [ y, Y, NoSymbol, Greek_upsilon, NoSymbol, NoSymbol, nabla, NoSymbol ] }; + key { [ odiaeresis, Odiaeresis, NoSymbol, U03F5, NoSymbol, NoSymbol, intersection, NoSymbol ] }; + key { [ q, Q, NoSymbol, U03D5, NoSymbol, NoSymbol, U211A, NoSymbol ] }; + key { [ b, B, NoSymbol, Greek_beta, NoSymbol, NoSymbol, U21D0, NoSymbol ] }; + key { [ p, P, NoSymbol, Greek_pi, NoSymbol, NoSymbol, Greek_PI, NoSymbol ] }; + key { [ w, W, NoSymbol, Greek_omega, NoSymbol, NoSymbol, Greek_OMEGA, NoSymbol ] }; + key { [ m, M, NoSymbol, Greek_mu, NoSymbol, NoSymbol, ifonlyif, NoSymbol ] }; + key { [ z, Z, NoSymbol, Greek_zeta, NoSymbol, NoSymbol, U2124, NoSymbol ] }; +}; + +partial alphanumeric_keys modifier_keys keypad_keys +xkb_symbols "adnw" { + + include "de(adnw_base)" + + name[Group1]= "German (Aus der Neo-Welt)"; + + include "shift(both_capslock)" + include "level3(caps_switch)" + include "level3(bksl_switch)" + include "level5(lsgt_switch)" + include "level5(ralt_switch)" +}; + diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/empty b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/empty new file mode 100644 index 0000000..acdd677 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/empty @@ -0,0 +1,4 @@ +default partial alphanumeric_keys modifier_keys +xkb_symbols "basic" { + name[Group1]= "Empty"; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/eurosign b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/eurosign new file mode 100644 index 0000000..0d95a90 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/eurosign @@ -0,0 +1,23 @@ +// Most keyboards have the EuroSign engraved on the E key +partial +xkb_symbols "e" { + key { [ NoSymbol, NoSymbol, EuroSign, NoSymbol ] }; +}; + +// Many Apple keyboards have the EuroSign engraved on the 2 key +partial +xkb_symbols "2" { + key { [ NoSymbol, NoSymbol, EuroSign, NoSymbol ] }; +}; + +// Some keyboards have the EuroSign engraved on the 4 key +partial +xkb_symbols "4" { + key { [ NoSymbol, NoSymbol, EuroSign, NoSymbol ] }; +}; + +// Many keyboards have the EuroSign engraved on the 5 key +partial +xkb_symbols "5" { + key { [ NoSymbol, NoSymbol, EuroSign, NoSymbol ] }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/group b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/group new file mode 100644 index 0000000..8b00dff --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/group @@ -0,0 +1,448 @@ +// The right Alt key (while pressed) chooses the second keyboard group. +partial modifier_keys +xkb_symbols "switch" { + key { + symbols[Group1] = [ Mode_switch, Multi_key ], + virtualMods= AltGr + }; +}; + +// The left Alt key (while pressed) chooses the second keyboard group. +partial modifier_keys +xkb_symbols "lswitch" { + key { + symbols[Group1] = [ Mode_switch, Multi_key ], + virtualMods= AltGr + }; +}; + +// Either Win key (while pressed) chooses the second keyboard group. +partial modifier_keys +xkb_symbols "win_switch" { + include "group(lwin_switch)" + include "group(rwin_switch)" +}; + +// The left Win key (while pressed) chooses the second keyboard group. +// (Using this map, you should declare your keyboard as pc101 or pc102 +// instead of pc104 or pc105.) +partial modifier_keys +xkb_symbols "lwin_switch" { + key { + symbols[Group1] = [ Mode_switch, Multi_key ], + virtualMods= AltGr + }; +}; + +// The right Win key (while pressed) chooses the second keyboard group. +// (Using this map, you should declare your keyboard as pc101 or pc102 +// instead of pc104 or pc105.) +partial modifier_keys +xkb_symbols "rwin_switch" { + key { + symbols[Group1] = [ Mode_switch, Multi_key ], + virtualMods= AltGr + }; +}; + +// The right Ctrl key (while pressed) chooses the second keyboard group. +// (Needed mainly for the Canadian keyboard.) +partial modifier_keys +xkb_symbols "rctrl_switch" { + key { + symbols[Group1] = [ Mode_switch ] + }; +}; + +// Pressing the right Alt key switches to the next group. +partial modifier_keys +xkb_symbols "toggle" { + virtual_modifiers AltGr; + key { + symbols[Group1] = [ ISO_Next_Group ], + virtualMods= AltGr + }; +}; + +// Pressing both Shift keys switches to the next or previous group +// (depending on which Shift is pressed first). +partial modifier_keys +xkb_symbols "shifts_toggle" { + key { [ Shift_L, ISO_Prev_Group ] }; + key { [ Shift_R, ISO_Next_Group ] }; +}; + +// Pressing Shift+Caps_Lock switches to the next group. +partial modifier_keys +xkb_symbols "shift_caps_toggle" { + key { [ Caps_Lock, ISO_Next_Group ] }; +}; + +// Pressing Caps_Lock selects the first group, +// pressing Shift+Caps_Lock selects the last group. +partial modifier_keys +xkb_symbols "shift_caps_switch" { + key { [ ISO_First_Group, ISO_Last_Group ] }; +}; + +// toggle using win + space as combo +partial modifier_keys +xkb_symbols "win_space_toggle" { + key { + type[Group1]="PC_SUPER_LEVEL2", + symbols[Group1]= [ space, ISO_Next_Group ] + }; +}; + +// Pressing the left Win key selects the first group, +// pressing the right Win or the Menu key selects the last group. +partial modifier_keys +xkb_symbols "win_menu_switch" { + virtual_modifiers AltGr; + key { + virtualMods= AltGr, + symbols[Group1] = [ ISO_First_Group ] + }; + key { + virtualMods= AltGr, + symbols[Group1] = [ ISO_Last_Group ] + }; + key { + virtualMods= AltGr, + symbols[Group1] = [ ISO_Last_Group ] + }; +}; + +// Pressing the left Ctrl key selects the first group, +// pressing the right Ctrl key selects the last group. +partial modifier_keys +xkb_symbols "lctrl_rctrl_switch" { + virtual_modifiers AltGr; + key { + virtualMods= AltGr, + symbols[Group1] = [ ISO_First_Group ] + }; + key { + virtualMods= AltGr, + symbols[Group1] = [ ISO_Last_Group ] + }; +}; + + +// +// CTRL-SHIFT toggle section +// +partial modifier_keys +xkb_symbols "lctrl_lshift_toggle" { + key { + type[Group1]="PC_CONTROL_LEVEL2", + symbols[Group1] = [ Shift_L, ISO_Next_Group ] + }; + key { [ Control_L, ISO_Next_Group ] }; +}; + +partial modifier_keys +xkb_symbols "lctrl_lshift_toggle_rev" { + key { + type[Group1]="PC_CONTROL_LEVEL2", + symbols[Group1] = [ Shift_L, ISO_Prev_Group ] + }; + key { [ Control_L, ISO_Prev_Group ] }; +}; + +partial modifier_keys +xkb_symbols "rctrl_rshift_toggle" { + key { + type[Group1]="PC_CONTROL_LEVEL2", + symbols[Group1] = [ Shift_R, ISO_Next_Group ] + }; + key { [ Control_R, ISO_Next_Group ] }; +}; + +partial modifier_keys +xkb_symbols "ctrl_shift_toggle" { + include "group(lctrl_lshift_toggle)" + include "group(rctrl_rshift_toggle)" +}; + +partial modifier_keys +xkb_symbols "ctrl_shift_toggle_bidir" { + include "group(lctrl_lshift_toggle_rev)" + include "group(rctrl_rshift_toggle)" +}; + + +// +// CTRL-ALT toggle section +// +partial modifier_keys +xkb_symbols "lctrl_lalt_toggle" { + virtual_modifiers Alt; + key { + type[Group1]="PC_CONTROL_LEVEL2", + symbols[Group1] = [ NoSymbol, ISO_Next_Group ], + virtualMods= Alt + }; + key { + type[Group1]="PC_ALT_LEVEL2", + symbols[Group1] = [ Control_L, ISO_Next_Group ] + }; +}; + +partial modifier_keys +xkb_symbols "lctrl_lalt_toggle_rev" { + virtual_modifiers Alt; + key { + type[Group1]="PC_CONTROL_LEVEL2", + symbols[Group1] = [ NoSymbol, ISO_Prev_Group ], + virtualMods= Alt + }; + key { + type[Group1]="PC_ALT_LEVEL2", + symbols[Group1] = [ Control_L, ISO_Prev_Group ] + }; +}; + +partial modifier_keys +xkb_symbols "rctrl_ralt_toggle" { + virtual_modifiers Alt; + key { + type[Group1]="PC_CONTROL_LEVEL2", + symbols[Group1] = [ NoSymbol, ISO_Next_Group ], + virtualMods= Alt + }; + key { + type[Group1]="PC_ALT_LEVEL2", + symbols[Group1] = [ Control_R, ISO_Next_Group ] + }; +}; + +partial modifier_keys +xkb_symbols "ctrl_alt_toggle" { + include "group(lctrl_lalt_toggle)" + include "group(rctrl_ralt_toggle)" +}; + +partial modifier_keys +xkb_symbols "ctrl_alt_toggle_bidir" { + include "group(lctrl_lalt_toggle_rev)" + include "group(rctrl_ralt_toggle)" +}; + + +// +// ALT-SHIFT toggle section +// +partial modifier_keys +xkb_symbols "lalt_lshift_toggle" { + virtual_modifiers Alt; + key { + symbols[Group1] = [ NoSymbol, ISO_Next_Group ], + virtualMods= Alt + }; + key { + type[Group1]="PC_ALT_LEVEL2", + symbols[Group1] = [ Shift_L, ISO_Next_Group ] + }; +}; + +partial modifier_keys +xkb_symbols "lalt_lshift_toggle_rev" { + virtual_modifiers Alt; + key { + symbols[Group1] = [ NoSymbol, ISO_Prev_Group ], + virtualMods= Alt + }; + key { + type[Group1]="PC_ALT_LEVEL2", + symbols[Group1] = [ Shift_L, ISO_Prev_Group ] + }; +}; + +partial modifier_keys +xkb_symbols "ralt_rshift_toggle" { + virtual_modifiers Alt; + key { + symbols[Group1] = [ NoSymbol, ISO_Next_Group ], + virtualMods= Alt + }; + key { + type[Group1]="PC_ALT_LEVEL2", + symbols[Group1] = [ Shift_R, ISO_Next_Group ] + }; +}; + +partial modifier_keys +xkb_symbols "alt_shift_toggle" { + include "group(lalt_lshift_toggle)" + include "group(ralt_rshift_toggle)" +}; + +partial modifier_keys +xkb_symbols "alt_shift_toggle_bidir" { + include "group(lalt_lshift_toggle_rev)" + include "group(ralt_rshift_toggle)" +}; + + +// Pressing the Menu key switches to the next group, +// while Shift+Menu acts as Menu. +partial modifier_keys +xkb_symbols "menu_toggle" { + key { [ ISO_Next_Group, Menu ] }; +}; + +// Pressing the left Win key switches to the next group. +// (Using this map, you should declare your keyboard as +// pc101 or pc102 instead of pc104 or pc105.) +partial modifier_keys +xkb_symbols "lwin_toggle" { + virtual_modifiers AltGr; + key { + virtualMods= AltGr, + symbols[Group1] = [ ISO_Next_Group ] + }; +}; + +// Pressing the right Win key switches to the next group. +// (Using this map, you should declare your keyboard as +// pc101 or pc102 instead of pc104 or pc105.) +partial modifier_keys +xkb_symbols "rwin_toggle" { + virtual_modifiers AltGr; + key { + virtualMods= AltGr, + symbols[Group1] = [ ISO_Next_Group ] + }; +}; + +// Pressing both Ctrl keys switches to the next or previous group +// (depending on which Ctrl is pressed first). +partial modifier_keys +xkb_symbols "ctrls_toggle" { + virtual_modifiers LControl, RControl; + key { + type[Group1]="PC_RCONTROL_LEVEL2", + symbols[Group1] = [ NoSymbol, ISO_Prev_Group ], + virtualMods= LControl + }; + key { + type[Group1]="PC_LCONTROL_LEVEL2", + symbols[Group1] = [ NoSymbol, ISO_Next_Group ], + virtualMods= RControl + }; +}; + +// Pressing both Alt keys switches to the next or previous group +// (depending on which Alt is pressed first). +partial modifier_keys +xkb_symbols "alts_toggle" { + virtual_modifiers LAlt, RAlt; + key { + type[Group1]="PC_RALT_LEVEL2", + symbols[Group1] = [ NoSymbol, ISO_Prev_Group ], + virtualMods= LAlt + }; + key { + type[Group1]="PC_LALT_LEVEL2", + symbols[Group1] = [ NoSymbol, ISO_Next_Group ], + virtualMods= RAlt + }; +}; + +// Pressing the left Shift key switches to the next group. +partial modifier_keys +xkb_symbols "lshift_toggle" { + virtual_modifiers AltGr; + key { + symbols[Group1] = [ ISO_Next_Group ], + virtualMods= AltGr + }; +}; + +// Pressing the right Shift key switches to the next group. +partial modifier_keys +xkb_symbols "rshift_toggle" { + virtual_modifiers AltGr; + key { + symbols[Group1] = [ ISO_Next_Group ], + virtualMods= AltGr + }; +}; + +// Pressing the left Alt key switches to the next group. +partial modifier_keys +xkb_symbols "lalt_toggle" { + virtual_modifiers AltGr; + key { + symbols[Group1] = [ ISO_Next_Group ], + virtualMods= AltGr + }; +}; + +// Pressing the left Ctrl key switches to the next group. +partial modifier_keys +xkb_symbols "lctrl_toggle" { + virtual_modifiers AltGr; + key { + symbols[Group1] = [ ISO_Next_Group ], + virtualMods= AltGr + }; +}; + +// Pressing the right Ctrl key switches to the next group. +partial modifier_keys +xkb_symbols "rctrl_toggle" { + virtual_modifiers AltGr; + key { + symbols[Group1] = [ ISO_Next_Group ], + virtualMods= AltGr + }; +}; + +// Pressing Alt+Caps_Lock switches to the next group, +// pressing Caps_Lock toggles CapsLock. +partial modifier_keys +xkb_symbols "alt_caps_toggle" { + key { + type="PC_ALT_LEVEL2", + symbols[Group1] = [ Caps_Lock, ISO_Next_Group ] + }; +}; + +hidden partial modifier_keys +xkb_symbols "olpc" { + key { [ ISO_Next_Group, ISO_Prev_Group ] }; +}; + +partial modifier_keys +xkb_symbols "alt_space_toggle" { + key { + type[Group1]="PC_ALT_LEVEL2", + symbols[Group1] = [ space, ISO_Next_Group ] + }; +}; + +// Pressing the Scroll Lock key switches to the next group, +partial modifier_keys +xkb_symbols "sclk_toggle" { + virtual_modifiers AltGr; + key { + virtualMods= AltGr, + symbols[Group1] = [ ISO_Next_Group ] + }; +}; + +// Control_L+Win_L selects the first group (presumably Lat), +// Control_R+Menu selects the second group (presumably Rus). +partial modifier_keys +xkb_symbols "lctrl_lwin_rctrl_menu" { + key { + type[Group1] = "PC_CONTROL_LEVEL2", + symbols[Group1] = [ Super_L, ISO_First_Group ] + }; + key { + type[Group1] = "PC_CONTROL_LEVEL2", + symbols[Group1] = [ Menu, ISO_Last_Group ] + }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/il b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/il new file mode 100644 index 0000000..48452d6 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/il @@ -0,0 +1,323 @@ +// based on a keyboard map from an 'xkb/symbols/il' file + +// This is an implemetation of the Israeli standard SI-1452 (2013) +// It does not implement changes to the English layout, as that part +// of the standard is not normative nor really useful in the context +// of xkb. +// This implementation extends the standard with Yiddish digraphs +// (a common extension) and Nun Hafukha (a fun character). + +default partial alphanumeric_keys +xkb_symbols "basic" { + // uses the kbd layout in use in Israel. + + name[Group1]= "Hebrew"; + key.type[Group1] = "FOUR_LEVEL_SEMIALPHABETIC"; + + key { [ hebrew_zain, Z ] }; + key { [ hebrew_samech, X, U05B6 ] }; // Segol + key { [ hebrew_bet, C, U05B1 ] }; // Hataf Segol + key { [ hebrew_he, V ] }; + key { [ hebrew_nun, B, NoSymbol, U05C6 ]}; // Nun Hafukha + key { [ hebrew_mem, N ] }; + key { [ hebrew_zade, M, U05B5 ] }; // Tsere + key { [ hebrew_taw, greater, rightsinglequotemark ]}; // greater Mirrored + key { [ hebrew_finalzade, less, singlelowquotemark ]}; // less Mirrored + + key { [ hebrew_shin, A, U05B0 ] }; // Shva + key { [ hebrew_dalet,S, U05BC ] }; // Dagesh + key { [ hebrew_gimel,D ] }; + key { [ hebrew_kaph, F ] }; + key { [ hebrew_ayin, G, U05F1 ] }; // Yiddish Vav Yod + key { [ hebrew_yod, H, U05F2 ] }; // Yiddish Double Yod + key { [ hebrew_chet, J, U05B4 ] }; // Hiriq + key { [ hebrew_lamed, K ] }; + key { [ hebrew_finalkaph, L, rightdoublequotemark ]}; + key { [ hebrew_finalpe, colon, doublelowquotemark ]}; + + key { [ slash, Q, U05C2 ] }; // Sin Dot + key { [ apostrophe, W, U05C1 ] }; // Shin Dot + key { [ hebrew_qoph, E, U05B8 ] }; // Qamats + key { [ hebrew_resh, R, U05B3 ] }; // Hataf Qamats + key { [ hebrew_aleph,T ] }; + key { [ hebrew_tet, Y, U05F0 ] }; // Yiddish Double Vav + key { [ hebrew_waw, U, U05B9 ] }; // Holam + key { [ hebrew_finalnun, I ] }; + key { [ hebrew_finalmem, O ] }; + key { [ hebrew_pe, P, U05B7 ] }; // Patah + + key.type[Group1] = "FOUR_LEVEL"; + + // Non-alphanumeric keys + key { [ period, question, division ]}; + key { [ comma, quotedbl, U05F4] }; // Gershayim + key { [ bracketright, braceright, U05B2 ]}; // Mirrored; Hataf Patah + key { [ bracketleft, braceleft, U05BF ]}; // Mirrored; Rafe + key { [ backslash, bar, U05BB ] }; // Qubuts + + // Top (digits) row + key { [ semicolon, asciitilde, U05F3 ]}; // Geresh + key { [ 1, exclam ] }; + key { [ 2, at ] }; + key { [ 3, numbersign, EuroSign ]}; + key { [ 4, dollar, NewSheqelSign ]}; + key { [ 5, percent, degree ]}; + key { [ 6, asciicircum, U05AB ]}; // Hebrew Accent Ole + key { [ 7, ampersand, U05BD ]}; // Meteg + key { [ 8, asterisk, multiply]}; + key { [ 9, parenright, U200E ]}; // LRM; Paren Mirrored + key { [ 0, parenleft, U200F ]}; // RLM; Paren Mirrored + key { [ minus, underscore, U05BE ]}; // Maqaf + key { [ equal, plus, endash ]}; + + include "level3(ralt_switch)" +}; + + +// nikud patter based on Dekel Tsur's Hebrew mapping for LyX +partial alphanumeric_keys +xkb_symbols "lyx" { + name[Group1]= "Hebrew (lyx)"; + + key { [ semicolon, asciitilde ] }; + // On some key (e.g. AD01, right below) there is not yet mapping for the + // second shift level. Since I could not figure a simple way to map this + // to "emit nothing", it is currently mapped to the same letter of the + // first shift level (avoiding mapping may risk it be used by a character + // from a different group). + key { [ slash, slash ] }; + key { [ apostrophe, apostrophe ] }; + key { [ hebrew_qoph, 0x10005b8 ] }; // Qamats + key { [ hebrew_resh, 0x10005bc ] }; // Dagesh/Shuruq + key { [ hebrew_aleph, 0x100200e ] }; // LRM + key { [ hebrew_tet, 0x100200f ] }; // RLM + key { [ hebrew_waw, 0x10005b9 ] }; // Holam + key { [ hebrew_finalnun,hebrew_finalnun] }; + key { [ hebrew_finalmem,hebrew_finalmem] }; + key { [ hebrew_pe, 0x10005b7 ] }; // Patah + + key { [ hebrew_shin, 0x10005b0 ] }; // Sheva + key { [ hebrew_dalet, 0x10005bc ] }; // Dagesh/Shuruq + key { [ hebrew_gimel, hebrew_gimel ] }; + key { [ hebrew_kaph, hebrew_kaph ] }; + key { [ hebrew_ayin, 0x10005c2 ] }; // Sin dot + key { [ hebrew_yod, 0x10005c1 ] }; // Shin dot + key { [ hebrew_chet, 0x10005b4 ] }; // Hiriq + key { [ hebrew_lamed, 0x10020aa ] }; // NIS + key { [ hebrew_finalkaph,hebrew_finalkaph] }; + key { [ hebrew_finalpe, colon ] }; + key { [ comma, quotedbl ] }; + + key { [ hebrew_zain, hebrew_zain ] }; + key { [ hebrew_samech,0x10005b6 ] }; // Segol + key { [ hebrew_bet, 0x10005bb ] }; // Qubuts + key { [ hebrew_he, 0x10005b1 ] }; // H. Segol + key { [ hebrew_nun, 0x10005b2 ] }; // H. Patah + key { [ hebrew_mem, 0x10005b3 ] }; // H. Qamats + key { [ hebrew_zade, 0x10005b5 ] }; // Tsere + key { [ hebrew_taw, greater ] }; + key { [ hebrew_finalzade, less ] }; + key { [ period, question ] }; + + // Note the parens mirroring below: + key { [ bracketright, braceright ] }; + key { [ bracketleft, braceleft ] }; + key { [ 1, exclam ]}; + key { [ 2, at ]}; + key { [ 3, numbersign ]}; + key { [ 4, dollar ]}; + key { [ 5, percent ]}; + key { [ 6, asciicircum ]}; + key { [ 7, ampersand ]}; + key { [ 8, asterisk ]}; + key { [ 9, parenright ]}; + key { [ 0, parenleft ]}; + + key { [ minus , 0x10005be ] }; // H. Hiphen + key { [ equal , plus ] }; +}; + + +partial alphanumeric_keys +xkb_symbols "phonetic" { + + // uses the phonetic layout from old Slackware 'il.map' file + + name[Group1]= "Hebrew (phonetic)"; + + key { [ equal, plus, hebrew_doublelowline, hebrew_doublelowline ]}; + + key { [ hebrew_qoph, hebrew_qoph ] }; + key { [ hebrew_waw, hebrew_waw ] }; + key { [ hebrew_aleph, hebrew_aleph ] }; + key { [ hebrew_resh, hebrew_resh ] }; + key { [ hebrew_taw, hebrew_tet ] }; + key { [ hebrew_ayin, hebrew_ayin ] }; + key { [ hebrew_waw, hebrew_waw ] }; + key { [ hebrew_yod, hebrew_yod ] }; + key { [ hebrew_samech, hebrew_samech ] }; + key { [ hebrew_pe, hebrew_finalpe ] }; + + key { [ hebrew_aleph, hebrew_aleph ] }; + key { [ hebrew_shin, hebrew_shin ] }; + key { [ hebrew_dalet, hebrew_dalet ] }; + key { [ hebrew_pe, hebrew_finalpe ] }; + key { [ hebrew_gimel, hebrew_gimel ] }; + key { [ hebrew_he, hebrew_he ] }; + key { [ hebrew_yod, hebrew_yod ] }; + key { [ hebrew_kaph, hebrew_finalkaph ] }; + key { [ hebrew_lamed, hebrew_lamed ] }; + + key { [ hebrew_zain, hebrew_zain ] }; + key { [ hebrew_chet, hebrew_chet ] }; + key { [ hebrew_zade, hebrew_finalzade ] }; + key { [ hebrew_waw, hebrew_waw ] }; + key { [ hebrew_bet, hebrew_bet ] }; + key { [ hebrew_nun, hebrew_finalnun ] }; + key { [ hebrew_mem, hebrew_finalmem ] }; +}; + +// The 'Biblical Hebrew' keyboard layout as defined by Tiro for use with the +// 'SBL Hebrew' font was added 2006.11.13 by Sebastian J. Bronner +// . Its primary features (as compared to the lyx layout) +// are that the consonants are in the Israeli standard positions, that a great +// multitude of glyphs can be input directly from the keyboard, and that it is +// the closest thing to a standard layout a theologian can hope for. +// Documentation (including printable keyboard tables), SBL Hebrew font, and +// keyboard layout for Windows are available at +// http://www.sbl-site.org/Resources/Resources_BiblicalFonts.aspx. +// +// It is of interest that the 'basic' layout defined first in this file (as +// ships with x.org disagrees in the non-consonant characters that the Tiro- +// layout claims to be the Israeli standard. Tiros apparent diligence in the +// PDF-documentation accompanying the keyboard-layout-files lead me to put +// greater stock in their claim than in this file. Therefore, the 'biblical' +// layout below does not include 'il(basic)' but redoes the _whole_ thing from +// scratch. + +partial alphanumeric_keys +xkb_symbols "biblical" { + name[Group1]= "Hebrew (Biblical, Tiro)"; + key.type = "FOUR_LEVEL_SEMIALPHABETIC"; + + key { [ U05C3, U05AE, semicolon, asciitilde ] }; + key { [ 1, U05A9, VoidSymbol, exclam ] }; + key { [ 2, U0599, VoidSymbol, at ] }; + key { [ 3, U0592, VoidSymbol, numbersign ] }; + key { [ 4, U05AF, NewSheqelSign, dollar ] }; + key { [ 5, VoidSymbol, U200D, percent ] }; + key { [ 6, U05B9, U200C, asciicircum ] }; + key { [ 7, U05BF, U034F, ampersand ] }; + key { [ 8, U05C2, U200E, asterisk ] }; + key { [ 9, U05C1, U200F, parenright ] }; + key { [ 0, U059D, U25CC, parenleft ] }; + key { [ U05BE, U05A0, minus, underscore ] }; + key { [ equal, U05BC, VoidSymbol, plus ] }; + + key { [ U0307, U05C4, U0308, slash ] }; + key { [ U05F3, U05AC, U05F4, apostrophe ] }; + key { [ hebrew_qoph, U05AB, U20AC ] }; + key { [ hebrew_resh, U059F ] }; + key { [ hebrew_aleph, U0593 ] }; + key { [ hebrew_tet, U059E ] }; + key { [ hebrew_waw, U059C, U05F0 ] }; + key { [ hebrew_finalnun, U05A1 ] }; + key { [ hebrew_finalmem, U0595 ] }; + key { [ hebrew_pe, U0594 ] }; + key { [ bracketright, U0597, VoidSymbol, braceright ] }; + key { [ bracketleft, U0598, VoidSymbol, braceleft ] }; + key { [ U05C0, U05A8, backslash, bar ] }; + + key { [ hebrew_shin, U05BD ] }; + key { [ hebrew_dalet, U05B0 ] }; + key { [ hebrew_gimel, U05BB ] }; + key { [ hebrew_kaph, U05B4 ] }; + key { [ hebrew_ayin, U05B1 ] }; + key { [ hebrew_yod, U05B6, U05F2 ] }; + key { [ hebrew_chet, U05B5, U05F1 ] }; + key { [ hebrew_lamed, U05B3 ] }; + key { [ hebrew_finalkaph, U05B8, U05C7 ] }; + key { [ hebrew_finalpe, U05B2, VoidSymbol, colon ] }; + key { [ U059a, U05B7, comma, quotedbl ] }; + + key { [ hebrew_zain, U05C5 ] }; + key { [ hebrew_samech, U05A4 ] }; + key { [ hebrew_bet, U05AA, U05A2 ] }; + key { [ hebrew_he, U05A6 ] }; + key { [ hebrew_nun, U05A5, U05C6 ] }; + key { [ hebrew_mem, U05A7 ] }; + key { [ hebrew_zade, U059B ] }; + key { [ hebrew_taw, U0591, VoidSymbol, greater ] }; + key { [ hebrew_finalzade, U0596, VoidSymbol, less ] }; + key { [ U05AD, U05A3, period, question ] }; + + key { [ space, space, thinspace, nobreakspace ] }; +}; + +// EXTRAS + +// Biblical hebrew (SIL) US Standard layout version 1.5 +// This map is based closely on v 1.5 of the standard. The only deviation being the replacement of the composite characters sin and shin +// by their more recent Unicodev6 counterparts +// this map contains all the characters found in Biblical annotation, masoretic and Dead Sea Scroll related work. +// The layout corresponds phonetically to a US standard layout or similar (Qwerty). +// If you are using an actual Hebrew keyboard, you are probably better off using a Tiro compliant scholarly layout +// This linux port created and maintained by Dennis Meulensteen, dennis@meulensteen.nl +partial alphanumeric_keys +xkb_symbols "biblicalSIL" { + name[Group1]= "Hebrew (Biblical, SIL phonetic)"; + key.type = "FOUR_LEVEL_SEMIALPHABETIC"; + + key { [ U20AC, U20AA, U0024 ] }; //Euro, Shekel, Dollar - + key { [ 1, U0021, U05BD, U0597 ] }; //1, exclamation meteg revia + key { [ 2, U0598, U05A2, U05AE ] }; //2, zarqa atn. hafukh zinor + key { [ 3, U05A8, U0596, U0599 ] }; //3, qadma tipeha pashta + key { [ 4, U059C, U05A5, U05A0 ] }; //4, geresh merkha tel. gedola + key { [ 5, U059E, U05A6, U05A9 ] }; //5, gershayim mer. kefula tel qetana + key { [ 6, VoidSymbol, U05AD, U059F ] }; //6, - dehi qar. para + key { [ 7, U05AC, U05A3, U05A1 ] }; //7, iluy munah pazer + key { [ 8, U059D, U059B, U0595 ] }; //8, g. muqdam tevir zaq. gadol + key { [ 9, U0029, U05A7, U0593 ] }; //9, parenth.R darqa shalshelet + key { [ 0, U0028, U05AA, U05AF ] }; //0, paren.L yer. ben yomo masora c. + key { [ U05BE, U2013, U2014, U05BF ] }; //Maqaf, en dash em dash rafe + key { [ U05BC, VoidSymbol, U0591, U25CC ] }; //Dagesh - etnahta mark base + + key { [ hebrew_qoph, U0597 ] }; //Qof revia - - + key { [ hebrew_waw] }; //waw - - - + key { [ U05B6, U05B5, VoidSymbol, U05B1 ] }; //segol tsere - hat. segol + key { [ hebrew_resh ] }; //resh - - - + key { [ hebrew_taw ] }; //taw - - - + key { [ hebrew_yod, U059F ] }; //jod qar. para - - + key { [ U05BB] }; //quibuts - - - + key { [ U05B4 ] }; //hiriq, - - - + key { [ U05B9, U05BA, U05C7, U05B3 ] }; //holam, holam(wav) qam. qatan hat. Qamats + key { [ hebrew_pe, hebrew_finalpe, VoidSymbol, U034F ] }; //pe final pe - c. grapheme joiner + key { [ bracketright, braceright, VoidSymbol, U0594 ] }; //Bracket R brace R - zaq. qatan + key { [ bracketleft, braceleft, U059A, U0592 ] }; //Brachket L brace L yetiv segolta + key { [ U05C0, U05C0, U05A4, U05AB ] };//Paseq Paseq mahapakh ole + + key { [ U05B7, U05B8, U05C7, U05B2 ] }; //patah Qamats Qam. Qatan hat. patah + key { [ hebrew_samech, U05E9 ] }; //Samech, shin no dot - - + key { [ hebrew_dalet ] }; //dalet - - - + key { [ UFB2B, hebrew_shin, U05C2 ] }; //UCSv6 Sin shin (nodot) sindot - + key { [ hebrew_gimel, VoidSymbol, U25E6, U2022 ] }; //gimel - bullet(DSS) bulletfill (DSS) + key { [ hebrew_he, VoidSymbol, U0336, U030A ] };//he - strikeout(DSS) Ring Above(DSS) + key { [ UFB2A, hebrew_shin, U05C1] }; //UCSv6 Shin shin (nodot) shindot - + key { [ hebrew_kaph, hebrew_finalkaph ] }; //kaph Final kaph - + key { [ hebrew_lamed, VoidSymbol ] }; //lamed - - + key { [ U05B0, U05F4, semicolon, U05C3 ] }; //sva gers. p semicolon sof pasuq + key { [ U2019, U201D, U0323, U05C4 ] };//QuoteRight double R Quote punctum punctum Above + + key { [ hebrew_zain ] }; //Zayin - - + key { [ hebrew_chet ] }; //chet - - + key { [ hebrew_zade, U05E5 ] }; // tzade, final tzade - + key { [ hebrew_tet ] }; //tet - - + key { [ hebrew_bet ] }; //bet - - + key { [ hebrew_nun, hebrew_finalnun ] }; //nun, final nun + key { [ hebrew_mem, hebrew_finalmem, U200C, U200D ] }; //mem, final mem 0.wid.non.join. 0.wid.joiner + key { [ U002C, U05E2, U00AB, U0307 ] }; //comma, ayin guillemetsR masora dot + key { [ U0002E, U05D0, U00BB, U0308 ] }; //period, alef guillemetsL thousands + key { [ slash, question, U05F3 ] }; //slash question geresh P + + key { [ space, space, thinspace, nobreakspace ] };//space space thin space, nbsp +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/in b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/in new file mode 100644 index 0000000..04c35a2 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/in @@ -0,0 +1,2062 @@ +// This layout includes all Indian layouts, including: +// - Devanagari (Hindi, Marathi, Sanskrit) +// - Bangla +// - Gujarati +// - Kannada +// - Malayalam +// - Oriya +// - Tamil +// - Telugu +// - Urdu + +// Links: +// - Indic INSCRIPT keyboard layout diagrams: +// http://java.sun.com/products/jfc/tsc/articles/InputMethod/indiclayout.html +// - Bangla Baishakhi (Bangla layouts): +// - Bangla Baishakhi Inscript (Bangla layouts): +// - Bangla Bornona (Bangla layouts): +// - Uni Gitanjali (Bangla layouts): +// http://nltr.org +// - Ekusheyr Shadhinota (Bangla layouts): +// http://ekushey.org/projects/shadhinota/index.html +// - Microsoft Windows XP SP2: Indic Language Standards - an Introduction: +// http://www.bhashaindia.com/MSProducts/XpSp2/Articles/IndicLanguageStandards.aspx + +// based on a keyboard map from an 'xkb/symbols/dev' file + +// Devangari is the default. Kill me if I am wrong:) +default partial alphanumeric_keys +xkb_symbols "deva" { + // March 2004 -- David Holl + name[Group1]="Indian"; + + key.type="FOUR_LEVEL"; + + key { [ U094a, U0912, grave, asciitilde ] }; + key { [ U0967, U090d, 1, exclam ] }; + key { [ U0968, U0945, 2, at ] }; + // Shift+AE0[3-8] really need to return a macro of keys defined by + // INSCRIPT in place of the symbols that are here for now. But this + // requires XKB to map 1 key into two to three other key presses. + key { [ U0969, numbersign, 3, numbersign ] }; + key { [ U096a, dollar, 4 ] }; + key { [ U096b, percent, 5, percent ] }; + key { [ U096c, asciicircum, 6, asciicircum ] }; + key { [ U096d, ampersand, 7, ampersand ] }; + key { [ U096e, asterisk, 8, asterisk ] }; + key { [ U096f, parenleft, 9, parenleft ] }; + key { [ U0966, parenright, 0, parenright ] }; + key { [ minus, U0903, minus, underscore ] }; + key { [ U0943, U090b, U0944, U0960 ] }; + + key { [ U094c, U0914 ] }; + key { [ U0948, U0910 ] }; + key { [ U093e, U0906 ] }; + key { [ U0940, U0908, U0963, U0961 ] }; + key { [ U0942, U090a ] }; + key { [ U092c, U092d ] }; + key { [ U0939, U0919 ] }; + key { [ U0917, U0918, U095a ] }; + key { [ U0926, U0927 ] }; + key { [ U091c, U091d, U095b ] }; + key { [ U0921, U0922, U095c, U095d ] }; + key { [ U093c, U091e ] }; + // I added \ / ? | for shell-convenience (file names and piping) + key { [ U0949, U0911, U005C, U007C ] }; + + key { [ U094b, U0913 ] }; + key { [ U0947, U090f ] }; + key { [ U094d, U0905 ] }; + key { [ U093f, U0907, U0962, U090c ] }; + key { [ U0941, U0909 ] }; + key { [ U092a, U092b, NoSymbol, U095e ] }; + key { [ U0930, U0931 ] }; + key { [ U0915, U0916, U0958, U0959 ] }; + key { [ U0924, U0925 ] }; + key { [ U091a, U091b, U0952 ] }; + key { [ U091f, U0920, NoSymbol, U0951 ] }; + + key { [ U0946, U090e, U0953 ] }; + key { [ U0902, U0901, NoSymbol, U0950 ] }; + key { [ U092e, U0923, U0954 ] }; + key { [ U0928, U0929 ] }; + key { [ U0935, U0934 ] }; + key { [ U0932, U0933 ] }; + key { [ U0938, U0936 ] }; + key { [ comma, U0937, U0970 ] }; + key { [ period, U0964, U0965, U093d ] }; + // I added \ / ? | for shell-convenience (file names and piping) + key { [ U092f, U095f, slash, question ] }; + + // space, space, Zero-Width-Non-Joiner (ZWNJ), Zero-Width-Joiner (ZWJ): + include "nbsp(zwnj3zwj4)" + include "rupeesign(4)" + include "level3(ralt_switch)" +}; + +//Name : Bolnagri (Combined) +//Description : A phonetic keyboard layout for Devnagari(Hindi) +// http://www.indlinux.org/wiki/index.php/BolNagri +//NOTE : This is a combined map of bolnagri_matras and bolnagri_vowels. +//Inspired by "devrom" keymap by Steve Smith for the windows tool "keyman" +//Original Author : Noah Levitt +//Past Authors : Pramod.R and Ravikant +//Current Main. : G Karunakar + +partial alphanumeric_keys +xkb_symbols "bolnagri" { + name[Group1] = "Hindi (Bolnagri)"; + key.type="FOUR_LEVEL"; + + // Roman digits + key { [ U0902, U0901, apostrophe, asciitilde ] }; // apostrophe: anusvara, candrabindu + key { [ 1, exclam, U0967, exclam ] }; + key { [ 2, at, U0968, at ] }; + key { [ 3, numbersign, U0969, numbersign ] }; + key { [ 4, dollar, U096A ] }; // Rupee symbol on AltGr+4 + key { [ 5, percent, U096B, percent ] }; + key { [ 6, asciicircum, U096C, asciicircum ] }; + key { [ 7, ampersand, U096D, ampersand ] }; + key { [ 8, asterisk, U096E, asterisk ] }; + key { [ 9, parenleft, U096F, parenleft ] }; + key { [ 0, parenright, U0966, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + key { [ U0964, U0965, U007C, U005C ] }; //pipe : danda, double danda + + //Q Row + key { [ U200C, U200D ] }; // Q: ZWNJ, ZWJ + key { [ U0935, U950 ] }; // W: wa, OM + key { [ U0947, U0948, U090F, U0910 ] }; // E: e, ai matras + key { [ U0930, U0943, U0931, U090B ] }; // R: ra, vocalic Ri + key { [ U0924, U0925 ] }; // T: ta, tha + key { [ U092f, U091E ] }; // Y: ya, nya + key { [ U0941, U0942, U0909, U090A ] }; // U: u, uu matras + key { [ U093F, U0940, U0907, U0908 ] }; // I: i, ii matras + key { [ U094B, U094C, U0913, U0914 ] }; // O: o, au matras + key { [ U092A, U092B ] }; // P: pa, pha + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + //A Row + key { [ U093E, U0906, U0905, U0906 ] }; // A: aa, full A, AA + key { [ U0938, U0937 ] }; // S: sa, ssa + key { [ U0926, U0927 ] }; // D: da, dha + key { [ U091F, U0920 ] }; // F: TA, THA + key { [ U0917, U0918 ] }; // G: ga, gha + key { [ U0939, U0903 ] }; // H: ha, visarg + key { [ U091C, U091D ] }; // J: ja, jha + key { [ U0915, U0916 ] }; // K: ka, kha + key { [ U0932, U0933, U0962, U090C ] }; // L: la, vocalic L or lru matra + key { [ semicolon, colon ] }; + key { [apostrophe, quotedbl ] }; + + //Z Row + key { [ U0936, U0945, U0936, U090D ] }; // Z: sha, akaar candra + key { [ U094D, U0949, U094D, U0911 ] }; // X: halant, aakaar candra, chandra A + key { [ U091A, U091B ] }; // C: ca, cha + key { [ U0921, U0922 ] }; // V: da, dha + key { [ U092C, U092D ] }; // B: ba, bha + key { [ U0928, U0923 ] }; // N: na, nna + key { [ U092E, U0919, U092E, U093D ] }; // M: ma, nga, avagraha + key { [ comma, U0970 ] };// comma: comma, dev abbreviation sign + key { [ period, U093C ] }; // period: period, nukta + key { [ slash, question ] }; + +// modifier_map Shift { Shift_L }; +// modifier_map Lock { Caps_Lock }; +// modifier_map Control{ Control_L }; +// modifier_map Mod3 { Mode_switch }; + + include "level3(ralt_switch)" + include "rupeesign(4)" +}; + +// based on a keyboard map from an 'xkb/symbols/ben' file + +partial alphanumeric_keys +xkb_symbols "ben" { + name[Group1]= "Bangla (India)"; + + // Mainly numbers. + key { [ U09E7 ] }; + key { [ U09E8 ] }; + key { [ U09E9 ] }; + key { [ U09EA ] }; + key { [ U09EB ] }; + key { [ U09EC ] }; + key { [ U09ED ] }; + key { [ U09EE ] }; + key { [ U09EF, parenleft ] }; + key { [ U09E6, parenright ] }; + key { [ minus, U0983 ] }; + key { [ U098B, U09C3 ] }; + +// Mainly long vowels + + key { [ U09CC, U0994 ] }; + key { [ U09C8, U0990 ] }; + key { [ U09BE, U0986 ] }; + key { [ U09C0, U0988 ] }; + key { [ U09C2, U098A ] }; + +// Mainly voiced consonants + + key { [ U09AC, U09AD ] }; + key { [ U09B9, U0999 ] }; + key { [ U0997, U0998 ] }; + key { [ U09A6, U09A7 ] }; + key { [ U099C, U099D ] }; + key { [ U09A1, U09A2 ] }; + key { [ U09BC, U099E ] }; + +// Mainly short vowels + key { [ U09CB, U0993 ] }; + key { [ U09C7, U098F ] }; + key { [ U09CD, U0985 ] }; + key { [ U09BF, U0987 ] }; + key { [ U09C1, U0989 ] }; + + +// Mainly unvoiced consonants + + key { [ U09AA, U09AB ] }; + key { [ U09B0, U09DD ] }; + key { [ U0995, U0996 ] }; + key { [ U09A4, U09A5 ] }; + key { [ U099A, U099B ] }; + key { [ U099F, U09A0 ] }; + key { [ U005C, U007C ] }; + + key { [ z, Z ] }; + key { [ U0982, U0981 ] }; + key { [ U09AE, U09A3 ] }; + key { [ U09A8, U09A8 ] }; + key { [ U09AC, U09AC ] }; + key { [ U09B2, U09B2 ] }; + key { [ U09B8, U09B6 ] }; + key { [ comma, U09B7 ] }; + key { [ period, U0964 ] }; + key { [ U09DF, U09AF ] }; + + include "level3(ralt_switch)" + include "rupeesign(4)" +}; + +xkb_symbols "ben_probhat" { + name[Group1]= "Bangla (India, Probhat)"; + key { [ Escape ] }; + +// numbers + key { [ U200D, asciitilde ] }; + key { [ U09E7, exclam ] }; + key { [ U09E8, at ] }; + key { [ U09E9, numbersign ] }; + key { [ U09EA, U09F3 ] }; + key { [ U09EB, percent ] }; + key { [ U09EC, asciicircum ] }; + key { [ U09ED, U099E ] }; + key { [ U09EE, U09CE ] }; + key { [ U09EF, parenleft ] }; + key { [ U09E6, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + key { [ BackSpace ] }; + +// tab, q to ] + key { [ Tab, ISO_Left_Tab ] }; + key { [ U09A6, U09A7 ] }; + key { [ U09C2, U098A ] }; + key { [ U09C0, U0988 ] }; + key { [ U09B0, U09DC ] }; + key { [ U099F, U09A0 ] }; + key { [ U098F, U0990 ] }; + key { [ U09C1, U0989 ] }; + key { [ U09BF, U0987 ] }; + key { [ U0993, U0994 ] }; + key { [ U09AA, U09AB ] }; + key { [ U09C7, U09C8 ] }; + key { [ U09CB, U09CC ] }; + key { [ Return ] }; + +// caps, a to ' +// key { [ Caps_Lock ] }; + key { [ U09BE, U0985 ] }; + key { [ U09B8, U09B7 ] }; + key { [ U09A1, U09A2 ] }; + key { [ U09A4, U09A5 ] }; + key { [ U0997, U0998 ] }; + key { [ U09B9, U0983 ] }; + key { [ U099C, U099D ] }; + key { [ U0995, U0996 ] }; + key { [ U09B2, U0982 ] }; + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + +// shift, z to / +// key { [ Shift_L ] }; + key { [ U09DF, U09AF ] }; + key { [ U09B6, U09DD ] }; + key { [ U099A, U099B ] }; + key { [ U0986, U098B ] }; + key { [ U09AC, U09AD ] }; + key { [ U09A8, U09A3 ] }; + key { [ U09AE, U0999 ] }; + key { [ comma, U09C3 ] }; + key { [ U0964, U0981 ] }; + key { [ U09CD, question ] }; + key { [ U200C, U0965 ] }; + +// key { [ Control_L ] }; +// key { [ space ] }; + +// modifier_map Shift { Shift_L }; +// modifier_map Lock { Caps_Lock }; +// modifier_map Control{ Control_L }; + + include "level3(ralt_switch)" + include "rupeesign(4)" +}; + +// Bangla Baishakhi, Bangla Baishakhi Inscript, Bangla Bornona, Uni Gitanjali Layouts are added by Promathesh Mandal + +xkb_symbols "ben_baishakhi" { + name[Group1]= "Bangla (India, Baishakhi)"; + key { [ Escape ] }; + +// numbers + key { [ 0x100200D, 0x100200C ] }; + key { [ 0x10009E7, exclam ] }; + key { [ 0x10009E8, at ] }; + key { [ 0x10009E9, numbersign ] }; + key { [ 0x10009EA, dollar, 0x10009F2 ] }; + key { [ 0x10009EB, percent ] }; + key { [ 0x10009EC, asciicircum, 0x10009D7 ] }; + key { [ 0x10009ED, ampersand ] }; + key { [ 0x10009EE, asterisk,0x10009FA ] }; + key { [ 0x10009EF, parenleft ] }; + key { [ 0x10009E6, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + key { [ BackSpace ] }; + +// tab, q to ] + key { [ Tab, ISO_Left_Tab ] }; + key { [ 0x10009A1, 0x10009A2 ] }; + key { [ 0x10009C0 , 0x10009C2 ] }; + key { [ 0x10009C7, 0x100098F, 0x1000990 ] }; + key { [ 0x10009B0 , 0x10009C3, 0x100098B ] }; + key { [ 0x100099F, 0x10009A0 ] }; + key { [ 0x10009AF, 0x10009DF ] }; + key { [ 0x10009C1, 0x1000989, 0x100098A ] }; + key { [ 0x10009BF, 0x1000987, 0x1000988 ] }; + key { [ 0x10009CB, 0x1000993, 0x1000994 ] }; + key { [ 0x10009AA, 0x10009AB ] }; + key { [ bracketleft, braceleft] }; + key { [ bracketright, braceright ] }; + key { [ Return ] }; + +// caps, a to ' +// key { [ Caps_Lock ] }; + key { [ 0x10009BE, 0x1000985, 0x1000986 ] }; + key { [ 0x10009B8, 0x10009B6, 0x10009B7 ] }; + key { [ 0x10009A6, 0x10009A7 ] }; + key { [ 0x10009A4, 0x10009A5, 0x10009CE ] }; + key { [ 0x1000997, 0x1000998 ] }; + key { [ 0x10009CD, 0x10009B9, 0x1000983 ] }; + key { [ 0x100099C, 0x100099D ] }; + key { [ 0x1000995, 0x1000996 ] }; + key { [ 0x10009B2, 0x1000964, 0x100098C ] }; + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + +// shift, z to / +// key { [ Shift_L ] }; + key { [ 0x10009C8, 0x10009CC ] }; + key { [ 0x10009DC, 0x10009DD ] }; + key { [ 0x100099A, 0x100099B ] }; + key { [ 0x10009F1, 0x10009F0 ] }; + key { [ 0x10009AC, 0x10009AD ] }; + key { [ 0x10009A8, 0x10009A3, 0x100099E ] }; + key { [ 0x10009AE, 0x1000999, 0x1000981 ] }; + key { [ comma, less ] }; + key { [ period, greater,0x10009BC ] }; + key { [ slash, question, 0x1000982 ] }; + key { [ backslash, bar ] }; + +// third level with right-alt + include "level3(ralt_switch)" + +// key { [ Control_L ] }; +// key { [ space ] }; + +// modifier_map Shift { Shift_L }; +// modifier_map Lock { Caps_Lock }; +// modifier_map Control{ Control_L }; +}; + +xkb_symbols "ben_inscript" { + name[Group1]= "Bangla (India, Baishakhi Inscript)"; + + // Mainly numbers. + key { [ 0x100200D, 0x100200C ] }; + key { [ 0x10009E7 ] }; + key { [ 0x10009E8 ] }; + key { [ 0x10009E9 ] }; + key { [ 0x10009EA ] }; + key { [ 0x10009EB ] }; + key { [ 0x10009EC ] }; + key { [ 0x10009ED ] }; + key { [ 0x10009EE ] }; + key { [ 0x10009EF, parenleft ] }; + key { [ 0x10009E6, parenright ] }; + key { [ minus, 0x1000983 ] }; + key { [ 0x10009C3, 0x100098B ] }; + +// Mainly long vowels + + key { [ 0x10009CC, 0x1000994 ] }; + key { [ 0x10009C8, 0x1000990 ] }; + key { [ 0x10009BE, 0x1000986 ] }; + key { [ 0x10009C0, 0x1000988 ] }; + key { [ 0x10009C2, 0x100098A ] }; + +// Mainly voiced consonants + + key { [ 0x10009AC, 0x10009AD ] }; + key { [ 0x10009B9, 0x1000999 ] }; + key { [ 0x1000997, 0x1000998 ] }; + key { [ 0x10009A6, 0x10009A7 ] }; + key { [ 0x100099C, 0x100099D ] }; + key { [ 0x10009A1, 0x10009A2 ] }; + key { [ 0x10009BC, 0x100099E ] }; + +// Mainly short vowels + key { [ 0x10009CB, 0x1000993 ] }; + key { [ 0x10009C7, 0x100098F ] }; + key { [ 0x10009CD, 0x1000985 ] }; + key { [ 0x10009BF, 0x1000987 ] }; + key { [ 0x10009C1, 0x1000989 ] }; + + +// Mainly unvoiced consonants + + key { [ 0x10009AA, 0x10009AB ] }; + key { [ 0x10009B0, 0x10009DD ] }; + key { [ 0x1000995, 0x1000996 ] }; + key { [ 0x10009A4, 0x10009A5 ] }; + key { [ 0x100099A, 0x100099B ] }; + key { [ 0x100099F, 0x10009A0 ] }; + key { [ backslash, bar ] }; + + key { [ 0x10009CE ] }; + key { [ 0x1000982, 0x1000981 ] }; + key { [ 0x10009AE, 0x10009A3 ] }; + key { [ 0x10009A8, 0x10009A8 ] }; + key { [ 0x10009AC, 0x10009AC ] }; + key { [ 0x10009B2, 0x10009B2 ] }; + key { [ 0x10009B8, 0x10009B6 ] }; + key { [ comma, 0x10009B7 ] }; + key { [ period, 0x1000964 ] }; + key { [ 0x10009DF, 0x10009AF ] }; +}; + +xkb_symbols "ben_gitanjali" { + name[Group1]= "Bangla (India, Uni Gitanjali)"; + key { [ Escape ] }; + +// numbers + key { [ colon, question ] }; + key { [ 0x10009E7, 0x10009CE ] }; + key { [ 0x10009E8, apostrophe ] }; + key { [ 0x10009E9, numbersign ] }; + key { [ 0x10009EA, 0x10009F3 ] }; + key { [ 0x10009EB, slash ] }; + key { [ 0x10009EC, period ] }; + key { [ 0x10009ED, ampersand ] }; + key { [ 0x10009EE, asterisk ] }; + key { [ 0x10009EF, parenleft ] }; + key { [ 0x10009E6, parenright ] }; + key { [ minus, 0x1000983 ] }; + key { [ 0x10009C3, 0x100098B ] }; + key { [ BackSpace ] }; + +// tab, q to ] + key { [ Tab, ISO_Left_Tab ] }; + key { [ 0x10009D7, 0x1000994 ] }; + key { [ 0x10009C8, 0x1000990 ] }; + key { [ 0x10009BE, 0x1000985 ] }; + key { [ 0x10009C0, 0x1000988 ] }; + key { [ 0x10009C2, 0x100098A ] }; + key { [ 0x10009AC, 0x10009AD ] }; + key { [ 0x10009B9, 0x1000999 ] }; + key { [ 0x1000997, 0x1000998 ] }; + key { [ 0x10009A6, 0x10009A7 ] }; + key { [ 0x100099C, 0x100099D ] }; + key { [ 0x10009A1, 0x10009A2 ] }; + key { [ 0x100200C, 0x100099E ] }; + key { [ Return ] }; + +// caps, a to ' +// key { [ Caps_Lock ] }; + key { [ 0x100200D, 0x1000993 ] }; + key { [ 0x10009C7, 0x100098F ] }; + key { [ 0x10009CD ] }; + key { [ 0x10009BF, 0x1000987 ] }; + key { [ 0x10009C1, 0x1000989 ] }; + key { [ 0x10009AA, 0x10009AB ] }; + key { [ 0x10009B0, 0x10009F0 ] }; + key { [ 0x1000995, 0x1000996 ] }; + key { [ 0x10009A4, 0x10009A5 ] }; + key { [ 0x100099A, 0x100099B ] }; + key { [ 0x100099F, 0x10009A0 ] }; + +// shift, z to / +// key { [ Shift_L ] }; + key { [ 0x10009C7, 0x100098F ] }; + key { [ 0x1000982, 0x1000981 ] }; + key { [ 0x10009AE, 0x10009A3 ] }; + key { [ 0x10009A8, 0x10009DC ] }; + key { [ 0x10009F1, 0x10009DD ] }; + key { [ 0x10009B2 ] }; + key { [ 0x10009B8, 0x10009B6 ] }; + key { [ comma, 0x10009B7 ] }; + key { [ 0x1000964, 0x10009FA ] }; + key { [ 0x10009AF, 0x10009DF ] }; + key { [ backslash, bar ] }; + +// third level with right-win +// include "level3(lwin_switch)" + +// key { [ Control_L ] }; +// key { [ space ] }; + +// modifier_map Shift { Shift_L }; +// modifier_map Lock { Caps_Lock }; +// modifier_map Control{ Control_L }; +}; + + +xkb_symbols "ben_bornona" { + name[Group1]= "Bangla (India, Bornona)"; + key { [ Escape ] }; + +// numbers + key { [ 0x100200D, 0x100200C ] }; + key { [ 0x10009E7, exclam ] }; + key { [ 0x10009E8, 0x1000981 ] }; + key { [ 0x10009E9, numbersign ] }; + key { [ 0x10009EA, 0x10009F3 ] }; + key { [ 0x10009EB, percent ] }; + key { [ 0x10009EC, 0x1000983 ] }; + key { [ 0x10009ED, 0x10009CE ] }; + key { [ 0x10009EE, asterisk ] }; + key { [ 0x10009EF, parenleft ] }; + key { [ 0x10009E6, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + key { [ BackSpace ] }; + +// tab, q to ] + key { [ Tab, ISO_Left_Tab ] }; + key { [ 0x1000982, 0x1000999, 0x10009D7 ] }; + key { [ 0x10009A2, 0x10009A0, 0x100098A ] }; + key { [ 0x10009C7, 0x10009C8, 0x1000988 ] }; + key { [ 0x10009B0, 0x10009C3, 0x100098B ] }; + key { [ 0x10009A4, 0x100099F ] }; + key { [ 0x10009A7, 0x10009A5, 0x100098F ] }; + key { [ 0x10009C1, 0x10009C2, 0x1000989 ] }; + key { [ 0x10009BF, 0x10009C0, 0x1000987 ] }; + key { [ 0x10009CB, 0x10009CC, 0x1000993 ] }; + key { [ 0x10009AA, 0x1000990, 0x1000994 ] }; + key { [ 0x100005B, 0x100007B, 0x10009DC ] }; + key { [ 0x100005D, 0x100007D ] }; + key { [ Return ] }; + +// caps, a to ' +// key { [ Caps_Lock ] }; + key { [ 0x10009BE, 0x1000985, 0x10009F4 ] }; + key { [ 0x10009B8, 0x10009B6, 0x10009F5 ] }; + key { [ 0x10009A6, 0x10009A1, 0x10009F8 ] }; + key { [ 0x10009AB ] }; + key { [ 0x1000997, 0x1000998 ] }; + key { [ 0x10009CD, 0x10009B9 ] }; + key { [ 0x100099C, 0x100099D ] }; + key { [ 0x1000995, 0x1000996 ] }; + key { [ 0x10009B2, 0x1000964 ] }; + key { [ semicolon, 0x100003A ] }; + key { [ apostrophe, quotedbl ] }; + +// shift, z to / +// key { [ Shift_L ] }; + key { [ 0x10009AF, 0x10009DC ] }; + key { [ 0x10009B7, 0x10009DD, 0x10009FA ] }; + key { [ 0x100099A, 0x100099B ] }; + key { [ 0x10009AD ] }; + key { [ 0x10009AC, 0x10009DF ] }; + key { [ 0x10009A8, 0x10009A3 ] }; + key { [ 0x10009AE, 0x100099E ] }; + key { [ comma, 0x100003C ] }; + key { [ 0x100002E, 0x100003E ] }; + key { [ 0x100002F, question ] }; + key { [ 0x10009F1, 0x10009F0 ] }; + +// key { [ Control_L ] }; +// key { [ space ] }; + +// modifier_map Shift { Shift_L }; +// modifier_map Lock { Caps_Lock }; +// modifier_map Control{ Control_L }; +// third level with right-alt + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "guj" { + name[Group1]= "Gujarati"; + + // Mainly numbers. + key { [ U0AE7, U0A8D ] }; + key { [ U0AE8, U0AC5 ] }; + key { [ U0AE9 ] }; + key { [ U0AEA ] }; + key { [ U0AEB ] }; + key { [ U0AEC ] }; + key { [ U0AED ] }; + key { [ U0AEE ] }; + key { [ U0AEF, parenleft ] }; + key { [ U0AE6, parenright ] }; + key { [ minus, U0A83 ] }; + key { [ U0A8B, U0AC3 ] }; + +// Mainly long vowels + + key { [ U0ACC, U0A94 ] }; + key { [ U0AC8, U0A90 ] }; + key { [ U0ABE, U0A86 ] }; + key { [ U0AC0, U0A88 ] }; + key { [ U0AC2, U0A8A ] }; + +// Mainly voiced consonants + + key { [ U0AAC, U0AAD ] }; + key { [ U0AB9, U0A99 ] }; + key { [ U0A97, U0A98 ] }; + key { [ U0AA6, U0AA7 ] }; + key { [ U0A9C, U0A9D ] }; + key { [ U0AA1, U0AA2 ] }; + key { [ U0ABC, U0A9E ] }; + +// Mainly short vowels + key { [ U0ACB, U0A93 ] }; + key { [ U0AC7, U0A8F ] }; + key { [ U0ACD, U0A85 ] }; + key { [ U0ABF, U0A87 ] }; + key { [ U0AC1, U0A89 ] }; + +// Mainly unvoiced consonants + + key { [ U0AAA, U0AAB ] }; + key { [ U0AB0, U0AB0 ] }; + key { [ U0A95, U0A96 ] }; + key { [ U0AA4, U0AA5 ] }; + key { [ U0A9A, U0A9B ] }; + key { [ U0A9F, U0AA0 ] }; + key { [ U0AC9, U0A91 ] }; + + key { [ z , Z ] }; + key { [ U0A82, U0A81 ] }; + key { [ U0AAE, U0AA3 ] }; + key { [ U0AA8, U0AA8 ] }; + key { [ U0AB5, U0AB5 ] }; + key { [ U0AB2, U0AB3 ] }; + key { [ U0AB8, U0AB6 ] }; + key { [ comma, U0AB7 ] }; + key { [ period, U0964 ] }; + key { [ U0AAF, question ] }; + include "rupeesign(4)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "kan" { + + // Inscript layout for Kannada + // Author : G Karunakar + // Date : Wed Nov 13 17:22:58 IST 2002 + // Kannada digits mapped in basic only + + name[Group1]= "Kannada"; + + key { [ U0cca, U0c92 ] }; + key { [ U0ce7 ] }; + key { [ U0ce8 ] }; + key { [ U0ce9 ] }; + key { [ U0cea ] }; + key { [ U0ceb ] }; + key { [ U0cec ] }; + key { [ U0ced ] }; + key { [ U0cee ] }; + key { [ U0cef ] }; + key { [ U0ce6 ] }; + key { [ U0c83 ] }; + key { [ U0cc3, U0c8b ] }; + + key { [ U0ccc, U0c94 ] }; + key { [ U0cc8, U0c90 ] }; + key { [ U0cbe, U0c86 ] }; + key { [ U0cc0, U0c88 ] }; + key { [ U0cc2, U0c8a ] }; + key { [ U0cac, U0cad ] }; + key { [ U0cb9, U0c99 ] }; + key { [ U0c97, U0c98 ] }; + key { [ U0ca6, U0ca7 ] }; + key { [ U0c9c, U0c9d ] }; + key { [ U0ca1, U0ca2 ] }; + key { [ U0cbc, U0c9e ] }; + + key { [ U0ccb, U0c93 ] }; + key { [ U0cc7, U0c8f ] }; + key { [ U0ccd, U0c85 ] }; + key { [ U0cbf, U0c87 ] }; + key { [ U0cc1, U0c89 ] }; + key { [ U0caa, U0cab ] }; + key { [ U0cb0, U0cb1 ] }; + key { [ U0c95, U0c96 ] }; + key { [ U0ca4, U0ca5 ] }; + key { [ U0c9a, U0c9b ] }; + key { [ U0c9f, U0ca0 ] }; + + key { [ U0cc6, U0c8e ] }; + key { [ U0c82 ] }; + key { [ U0cae, U0ca3 ] }; + key { [ U0ca8 ] }; + key { [ U0cb5, U0cb4 ] }; + key { [ U0cb2, U0cb3 ] }; + key { [ U0cb8, U0cb6 ] }; + key { [ comma , U0cb7 ] }; + key { [ period ] }; + key { [ U0caf, U0040 ] }; + + key { + symbols[Group1] = [ Mode_switch, Multi_key ], + virtualMods = AltGr + }; + include "rupeesign(4)" + include "level3(ralt_switch)" +}; + +// Description : A keymap for Malayalam +// Encoding : Unicode (http://www.unicode.org) +// Author : Baiju M +// Date : Sat Aug 17 21:10:48 IST 2002 +// Mapping: + +partial alphanumeric_keys +xkb_symbols "mal" { + + name[Group1] = "Malayalam"; + + //From grave to backslash (\) + + key { [ U0d4a , U0d12 ] }; + +// svu: +// These lines were in former "mal" variant - +// but the digits are replaced with the ones from 'mal_plusnum' - +// for the integrity of all Indian layouts +// +// key { [1 , exclam ] }; +// key { [2 , at ] }; +// key { [3 , numbersign ] }; +// key { [4 , dollar ] }; +// key { [5 , percent ] }; +// key { [6 ,asciicircum ] }; +// key { [7 , ampersand ] }; +// key { [8 , asterisk ] }; +// key { [9 , parenleft ] }; +// key { [0 , parenright ] }; + + key { [ U0d67 , exclam ] }; + key { [ U0d68 , at ] }; + key { [ U0d69 , numbersign ] }; + key { [ U0d6a , dollar ] }; + key { [ U0d6b , percent ] }; + key { [ U0d6c , asciicircum ] }; + key { [ U0d6d , ampersand ] }; + key { [ U0d6e , asterisk ] }; + key { [ U0d6f , parenleft ] }; + key { [ U0d66 , parenright ] }; + + key { [ minus , U0d03 ] }; + key { [ U0d43 , U0d0b ] }; + key { [U0200c, U05C ]};//bksl: ZWNJ + + + // From 'q' to right bracket (]) + + key { [ U0d4c , U0d14 ] }; + key { [ U0d48 , U0d10 ] }; + key { [ U0d3e , U0d06 ] }; + key { [ U0d40 , U0d08 ] }; + key { [ U0d42 , U0d0a ] }; + key { [ U0d2c , U0d2d ] }; + key { [ U0d39 , U0d19 ] }; + key { [ U0d17 , U0d18 ] }; + key { [ U0d26 , U0d27 ] }; + key { [ U0d1c , U0d1d ] }; + key { [ U0d21 , U0d22 ] }; + key { [ U0200d , U0d1e ] }; + + // From 'a' to apostrophe (') + + key { [ U0d4b , U0d13 ] }; + key { [ U0d47 , U0d0f ] }; + key { [ U0d4d , U0d05 ] }; + key { [ U0d3f , U0d07 ] }; + key { [ U0d41 , U0d09 ] }; + key { [ U0d2a , U0d2b ] }; + key { [ U0d30 , U0d31 ] }; + key { [ U0d15 , U0d16 ] }; + key { [ U0d24 , U0d25 ] }; + key { [ U0d1a , U0d1b ] }; + key { [ U0d1f , U0d20 ] }; + + // From 'z' to slash (/) + + key { [ U0d46 , U0d0e ] }; + key { [ U0d02 , U200b ] };//X:ZWSP + key { [ U0d2e , U0d23 ] }; + key { [ U0d28 ] }; + key { [ U0d35 , U0d34 ] }; + key { [ U0d32 , U0d33 ] }; + key { [ U0d38 , U0d36 ] }; + key { [ comma , U0d37 ] }; + key { [ period , U0200d ] }; + key { [ U0d2f , question ] }; + + include "rupeesign(4)" + include "level3(ralt_switch)" +}; + +//Name : Lalitha +//Description : A transliteration keyboard layout for Malayalam +//Original Author : Noah Levitt +//Current Main : Jinesh K.J, Swathantra Malayalam Computing (SMC) + +partial alphanumeric_keys +xkb_symbols "mal_lalitha" { + name[Group1] = "Malayalam (Lalitha)"; + key.type="FOUR_LEVEL"; + + // Roman digits + key { [ U0D4D, U0D02, apostrophe, asciitilde ] }; // apostrophe: virama(chandrakala),anusvara + key { [ 1, exclam, U0D67, exclam ] }; + key { [ 2, at, U0D68, at ] }; + key { [ 3, numbersign, U0D69, numbersign ] }; + key { [ 4, dollar, U0D6A ] }; + key { [ 5, percent, U0D6B, percent ] }; + key { [ 6, asciicircum, U0D6C, asciicircum ] }; + key { [ 7, ampersand, U0D6D, ampersand ] }; + key { [ 8, asterisk, U0D6E, asterisk ] }; + key { [ 9, parenleft, U0D6F, parenleft ] }; + key { [ 0, parenright, U0D66, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + key { [ U005C, U007C, U200C ] };//backslash:pipe,backslash,ZWNJ + + //Q Row + key { [ U0D48, U0D4C, U0D10, U0D14 ] }; // Q: ai and au matras + key { [ U0D35 ] }; // W: wa, OM + key { [ U0D46, U0D47, U0D0E, U0D0F ] }; // E: e,ee matras + key { [ U0D30, U0D31, U0D43, U0D0B ] }; // R: ra,rra, vocalic Ri + key { [ U0D24, U0D25, U0D1F, U0D20 ] }; // T: tha, ttha,ta,tta + key { [ U0D2f ] }; // Y: ya + key { [ U0D41, U0D42, U0D09, U0D0A ] }; // U: u, uu matras + key { [ U0D3F, U0D40, U0D07, U0D08 ] }; // I: i, ii matras + key { [ U0D4A, U0D4B, U0D12, U0D13 ] }; // O: o, oo matras + key { [ U0D2A ] }; // P: pa + key { [ bracketleft, braceleft ] };//braceleft: + key { [ bracketright, braceright ] };//braceright: + + //A Row + key { [ U0D3E, U0D05, U0D06, U0D05 ] }; // A: a,aa + key { [ U0D38, U0D37 ] }; // S: sa, ssa + key { [ U0D26, U0D27, U0D21, U0D22 ] }; // D: soft da,soft dda,hard da,hard dda, + key { [ U0D2B ] }; // F: pha + key { [ U0D17, U0D18 ] }; // G: ga, gha + key { [ U0D39, U0D03 ] }; // H: ha, visarg + key { [ U0D1C, U0D1D ] }; // J: ja, jha + key { [ U0D15, U0D16 ] }; // K: ka, kha + key { [ U0D32, U0D33 ] }; // L: la, vocalic L or lru matra` + key { [ semicolon, colon ] }; + key { [apostrophe, quotedbl ] }; + + //Z Row + key { [ U0D34, U0D36 ] }; // Z: sha,zha + key { [ U0D4D, U200B ] }; // X: chandrakala,ZWSP + key { [ U0D1A, U0D1B ] }; // C: ca, cha + key { [ U0D35, U200D ] }; // V: va,ZWJ + key { [ U0D2C, U0D2D ] }; // B: ba, bha + key { [ U0D28, U0D23, U0D19, U0D1E ] }; // N: na, hard na,nga,nha + key { [ U0D2E, U0D02 ] }; // M: ma + key { [ comma, U003C ] };// comma: comma + key { [ period, U003E ] }; // period: period + key { [ slash, question ] }; + +// modifier_map Shift { Shift_L }; +// modifier_map Lock { Caps_Lock }; +// modifier_map Control{ Control_L }; +// modifier_map Mod3 { Mode_switch }; + include "level3(ralt_switch)" + include "rupeesign(4)" +}; + + +partial alphanumeric_keys +xkb_symbols "ori" { + // Inscript layout for Oriya + // Author: G Karunakar + // Date: Wed Nov 13 18:16:19 IST 2002 + + name[Group1]= "Oriya"; + + key { [ U0b67 ] }; + key { [ U0b68 ] }; + key { [ U0b69 ] }; + key { [ U0b6a ] }; + key { [ U0b6b ] }; + key { [ U0b6c ] }; + key { [ U0b6d ] }; + key { [ U0b6e ] }; + key { [ U0b6f ] }; + key { [ U0b66 ] }; + key { [ U0b03 ] }; + key { [ U0b43, U0b0b ] }; + + key { [ U0b4c, U0b14 ] }; + key { [ U0b48, U0b10 ] }; + key { [ U0b3e, U0b06 ] }; + key { [ U0b40, U0b08 ] }; + key { [ U0b42, U0b0a ] }; + key { [ U0b2c, U0b2d ] }; + key { [ U0b39, U0b19 ] }; + key { [ U0b17, U0b18 ] }; + key { [ U0b26, U0b27 ] }; + key { [ U0b1c, U0b1d ] }; + key { [ U0b21, U0b22 ] }; + key { [ U0b3c, U0b1e ] }; + + key { [ U0b4b, U0b13 ] }; + key { [ U0b47, U0b0f ] }; + key { [ U0b4d, U0b05 ] }; + key { [ U0b3f, U0b07 ] }; + key { [ U0b41, U0b09 ] }; + key { [ U0b2a, U0b2b ] }; + key { [ U0b30 ] }; + key { [ U0b15, U0b16 ] }; + key { [ U0b24, U0b25 ] }; + key { [ U0b1a, U0b1b ] }; + key { [ U0b1f, U0b20 ] }; + + key { [ U0b02, U0b01 ] }; + key { [ U0b2e, U0b23 ] }; + key { [ U0b28 ] }; + key { [ U0b35 ] }; + key { [ U0b32, U0b33 ] }; + key { [ U0b38, U0b36 ] }; + key { [ comma , U0b37 ] }; + key { [ period ] }; + key { [ U0b2f, U0040 ] }; + + key { + symbols[Group1] = [ Mode_switch, Multi_key ], + virtualMods = AltGr + }; + include "rupeesign(4)" + include "level3(ralt_switch)" +}; + +// based on a keyboard map from an 'xkb/symbols/tml' file +// INSCRIPT +partial alphanumeric_keys +xkb_symbols "tam" { + name[Group1]= "Tamil"; + + key { [ U0BCA, U0B92 ] }; + + // Mainly numbers. + key { [ U0BE7 ] }; + key { [ U0BE8 ] }; + key { [ U0BE9 ] }; + key { [ U0BEA ] }; + key { [ U0BEB ] }; + key { [ U0BEC ] }; + key { [ U0BED ] }; + key { [ U0BEE ] }; + key { [ U0BEF, parenleft ] }; + key { [ U0BF0, parenright ] }; + key { [ U0BF1, U0B83 ] }; + key { [ U0BF2, plus ] }; + +// Mainly long vowels + + key { [ U0BCC, U0B94 ] }; + key { [ U0BC8, U0B90 ] }; + key { [ U0BBE, U0B86 ] }; + key { [ U0BC0, U0B88 ] }; + key { [ U0BC2, U0B8A ] }; + +// Mainly voiced consonants + + key { [ U0BB9, U0B99 ] }; + key { [ U0B9c ] }; + key { [ U0B9E ] }; + +// Mainly short vowels + key { [ U0BCB, U0B93 ] }; + key { [ U0BC7, U0B8F ] }; + key { [ U0BCD, U0B85 ] }; + key { [ U0BBF, U0B87 ] }; + key { [ U0BC1, U0B89 ] }; + +// Mainly unvoiced consonants + + key { [ U0BAA ] }; + key { [ U0BB0, U0BB1 ] }; + key { [ U0B95 ] }; + key { [ U0BA4 ] }; + key { [ U0B9A ] }; + key { [ U0B9F ] }; + key { [ U005C, U007C ] };//backslash-bar - Changed to Unicode + + key { [ U0BC6, U0B8E ] }; + key { [ U0B82 ] }; + key { [ U0BAE, U0BA3 ] }; + key { [ U0BA8, U0BA9 ] }; + key { [ U0BB5, U0BB4 ] }; + key { [ U0BB2, U0BB3 ] }; + key { [ U0BB8, U0BB6 ] }; + key { [ comma, U0BB7 ] }; + key { [ period, U0964 ] }; + key { [ U0BAF, question ] }; + + include "level3(ralt_switch)" + include "rupeesign(4)" +}; + +partial alphanumeric_keys +xkb_symbols "tam_unicode" { + +// Description: A keymap based on the TamilNet'99 typewriter keyboard +// Encoding: Unicode (http://www.unicode.org) +// Author: Thuraiappah Vaseeharan +// Modifed by: Malathi S +// Secondary contact: Sri Ramadoss M +// Date : Fri Sep 4 11:32:00 CST 2009 +// Mapping: + + name[Group1]= "Tamil (Unicode)"; + + // granthas + key { [ apostrophe, asciitilde ] }; + key { [ U0031, exclam ] } ; + key { [ U0032, at ] } ; + key { [ U0033, numbersign ] } ; + key { [ U0034, U0BF9 ] } ; + key { [ U0035, percent ] } ; + key { [ U0036, asciicircum ] } ; + key { [ U0037, ampersand ] } ; + key { [ U0038, asterisk ] } ; + key { [ U0039, parenleft ] } ; + key { [ U0030, parenright ] } ; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + + + // Qrow + key { [ U0B9E, U0BB6 ] }; + key { [ U0BB1, U0BB7 ] }; + key { [ U0BA8, U0BB8 ] }; + key { [ U0B9A, U0BB9 ] }; + key { [ U0BB5, U0B9C ] }; + key { [ U0BB2 ] }; + key { [ U0BB0 ] }; + key { [ U0BC8, U0B90 ] }; + key { [ U0BCA, U0BCB ] }; + key { [ U0BBF, U0BC0 ] }; + key { [ U0BC1, U0BC2 ] }; + + // Arow + key { [ U0BAF ] }; + key { [ U0BB3 ] }; + key { [ U0BA9 ] }; + key { [ U0B95 ] }; + key { [ U0BAA ] }; + key { [ U0BBE, U0BB4 ] }; + key { [ U0BA4 ] }; + key { [ U0BAE ] }; + key { [ U0B9F ] }; + key { [ U0BCD, U0B83 ] }; + key { [ U0B99 ] }; + + // Zrow + key { [ U0BA3 ] }; + key { [ U0B92, U0B93 ] }; + key { [ U0B89, U0B8A ] }; + key { [ U0B8E, U0B8F ] }; + key { [ U0BC6, U0BC7 ] }; + key { [ U0B94, U0BCC ] }; + key { [ U0B85, U0B86 ] }; + key { [ U0B87, U0B88 ] }; +}; + +partial alphanumeric_keys +xkb_symbols "tam_keyboard_with_numerals" { + +// Description: A keymap based on the TamilNet'99 typewriter keyboard +// Encoding: Unicode (http://www.unicode.org) +// Author: Malathi S +// Secondary contact: Sri Ramadoss M +// Date : Fri Sep 4 11:33:00 CST 2009 +// Mapping: + + name[Group1]= "Tamil (keyboard with numerals)"; + + // Mainly numbers. + key { [ apostrophe, asciitilde ] }; + key { [ U0BE7, exclam ] }; + key { [ U0BE8, at ] }; + key { [ U0BE9, numbersign ] }; + key { [ U0BEA, U0BF9 ] }; + key { [ U0BEB, percent ] }; + key { [ U0BEC, asciicircum ] }; + key { [ U0BED, ampersand ] }; + key { [ U0BEE, asterisk ] }; + key { [ U0BEF, parenleft ] }; + key { [ U0BE6, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + + + // Qrow + key { [ U0B9E, U0BB6 ] }; + key { [ U0BB1, U0BB7 ] }; + key { [ U0BA8, U0BB8 ] }; + key { [ U0B9a, U0BB9 ] }; + key { [ U0BB5, U0B9c ] }; + key { [ U0BB2 ] }; + key { [ U0BB0 ] }; + key { [ U0BC8, U0B90 ] }; + key { [ U0BCA, U0BCB ] }; + key { [ U0BBF, U0BC0 ] }; + key { [ U0BC1, U0BC2 ] }; + + // Arow + key { [ U0BAF ] }; + key { [ U0BB3 ] }; + key { [ U0BA9 ] }; + key { [ U0B95 ] }; + key { [ U0BAA ] }; + key { [ U0BBE, U0BB4 ] }; + key { [ U0BA4 ] }; + key { [ U0BAE ] }; + key { [ U0B9F ] }; + key { [ U0BCD, U0B83 ] }; + key { [ U0B99 ] }; + + // Zrow + key { [ U0BA3 ] }; + key { [ U0B92, U0B93 ] }; + key { [ U0B89, U0B8A ] }; + key { [ U0B8E, U0B8F ] }; + key { [ U0BC6, U0BC7 ] }; + key { [ U0B94, U0BCC ] }; + key { [ U0B85, U0B86 ] }; + key { [ U0B87, U0B88 ] }; +}; + +partial alphanumeric_keys +xkb_symbols "tam_TSCII" { + +// Description : A Tamil typewrite-style keymap +// loosely based on TamilNet'99 reommendations +// Encoding : TSCII (http://www.tscii.org) +// Author : Thuraiappah Vaseeharan +// Last Modified: Sat Jan 5 17:11:26 CST 2002 + + name[Group1]= "Tamil (TSCII typewriter)"; + + key { [ 0x10000b7, 0x10000a4 ] }; // aytham + key { [ 0x1000082, 0x10000a5 ] }; // shri + key { [ 0x1000083, 0x1000088 ] }; // ja + key { [ 0x1000084, 0x1000089 ] }; // sha + key { [ 0x1000085, 0x100008a ] }; // sa + key { [ 0x1000086, 0x100008b ] }; // ha + key { [ 0x1000087, 0x100008c ] }; // ksha + + // Qrow + key { [ 0x10000bb, 0x100009a ] }; // nja + key { [ 0x10000c8, 0x10000da ] }; // Ra + key { [ 0x10000bf, 0x10000d1 ] }; // NNa + key { [ 0x10000ba, 0x10000cd ] }; // ca + key { [ 0x10000c5, 0x10000d7 ] }; // va + key { [ 0x10000c4, 0x10000d6 ] }; // la + key { [ 0x10000c3, 0x10000d5 ] }; // ra + key { [ 0x10000a8, 0x10000b3 ] }; // sangili, ai + key { [ 0x10000ca, 0x10000cb ] }; // di, dI + key { [ 0x10000a2, 0x10000a3 ] }; // visiri + key { [ dead_acute, 0x10000a3 ] }; // Ukaaram + + // Arow + key { [ 0x10000c2, 0x10000d4 ] }; // ya + key { [ 0x10000c7, 0x10000d9 ] }; // La + key { [ 0x10000c9, 0x10000db ] }; // na + key { [ 0x10000b8, 0x10000cc ] }; // ka + key { [ 0x10000c0, 0x10000d2 ] }; // pa + key { [ dead_grave,0x10000a1 ] }; // pulli,aravu + key { [ 0x10000be, 0x10000d0 ] }; // tha + key { [ 0x10000c1, 0x10000d3 ] }; // ma + key { [ 0x10000bc, 0x10000ce ] }; // da + key { [ 0x10000c6, 0x10000d8 ] }; // zha + key { [ 0x10000b9, 0x1000099 ] }; // nga + + // Zrow + key { [ 0x10000bd, 0x10000cf ] }; // Na + key { [ 0x10000b4, 0x10000b5 ] }; // o, O + key { [ 0x10000af, 0x10000b0 ] }; // u, U + key { [ 0x10000b1, 0x10000b2 ] }; // e, E + key { [ 0x10000a6, 0x10000a7 ] }; // kombus + key { [ 0x10000b6, 0x10000aa ] }; // au + key { [ 0x10000ab, 0x10000ac ] }; // a, A + key { [ 0x10000fe, 0x10000ae ] }; // i, I +}; + +partial alphanumeric_keys +xkb_symbols "tam_TAB" { + +// Description: A keymap based on the TamilNet'99 typewriter keyboard +// Encoding: TAB (http://www.tamilnet99.org) +// Author: Thuraiappah Vaseeharan +// Date : Sun Aug 12 02:23:00 CDT 2001 + + name[Group1]= "Tamil (TAB typewriter)"; + + // numeral row + key { [ 0x10000e7, 0x10000a7 ] } ; + key { [ 0x10000fa, 0x10000a8 ] } ; + key { [ 0x10000fb ] } ; + key { [ 0x10000fc ] } ; + key { [ 0x10000fd ] } ; + key { [ 0x10000fe ] } ; + key { [ 0x10000ff ] } ; + + // q-row + key { [ 0x10000eb, 0x10000b3 ] }; + key { [ 0x10000f8, 0x10000c1 ] }; + key { [ 0x10000ef, 0x10000b8 ] }; + key { [ 0x10000ea, 0x10000b2 ] }; + key { [ 0x10000f5, 0x10000be ] }; + key { [ 0x10000f4, 0x10000bd ] }; + key { [ 0x10000f3, 0x10000bc ] }; + key { [ 0x10000ac, 0x10000e4 ] }; + key { [ 0x10000ae, 0x10000af ] }; + key { [ 0x10000a4, 0x10000a6 ] }; + key { [ dead_circumflex, 0x10000a6 ] }; // Ukaaram + + // a-row + key { [ 0x10000f2, 0x10000bb ] }; + key { [ 0x10000f7, 0x10000c0 ] }; + key { [ 0x10000f9, 0x10000c2 ] }; + key { [ 0x10000e8, 0x10000b0 ] }; + key { [ 0x10000f0, 0x10000b9 ] }; + key { [ 0x10000a2, 0x10000a3 ] }; + key { [ 0x10000ee, 0x10000b6 ] }; + key { [ 0x10000f1, 0x10000ba ] }; + key { [ 0x10000ec, 0x10000b4 ] }; + key { [ 0x10000f6, 0x10000bf ] }; + key { [ 0x10000e9, 0x10000b1 ] }; + + // z-row + key { [ 0x10000ed, 0x10000b5 ] }; + key { [ 0x10000e5, 0x10000e6 ] }; + key { [ 0x10000e0, 0x10000e1 ] }; + key { [ 0x10000e2, 0x10000e3 ] }; + key { [ 0x10000aa, 0x10000ab ] }; + key { [ 0x10000ac, 0x10000a3 ] }; + key { [ 0x10000dc, 0x10000dd ] }; + key { [ 0x10000de, 0x10000df ] }; +}; + +partial alphanumeric_keys +xkb_symbols "tel" { + + // Inscript layout for Telugu using Unicode + // Author: G Karunakar + // Date: + // See layout at http://www.indlinux.org/keymap/telugu.php + + name[Group1]= "Telugu"; + + key { [ U0c4a, U0c12 ] }; + key { [ U0c67 ] }; + key { [ U0c68 ] }; + key { [ U0c69, numbersign ] }; + key { [ U0c6a, dollar ] }; + key { [ U0c6b, percent ] }; + key { [ U0c6c, asciicircum ] }; + key { [ U0c6d, ampersand ] }; + key { [ U0c6e, asterisk ] }; + key { [ U0c6f, parenleft ] }; + key { [ U0c66, parenright ] }; + key { [ U0c03, underscore ] }; + key { [ U0c43, U0c0b ] }; + key { [ BackSpace ] }; + + key { [ U0c4c, U0c14 ] }; + key { [ U0c48, U0c10 ] }; + key { [ U0c3e, U0c06 ] }; + key { [ U0c40, U0c08 ] }; + key { [ U0c42, U0c0a ] }; + key { [ U0c2c, U0c2d ] }; + key { [ U0c39, U0c19 ] }; + key { [ U0c17, U0c18 ] }; + key { [ U0c26, U0c27 ] }; + key { [ U0c1c, U0c1d ] }; + key { [ U0c21, U0c22 ] }; + key { [ U0c1e ] }; + + key { [ U0c4b, U0c13 ] }; + key { [ U0c47, U0c0f ] }; + key { [ U0c4d, U0c05 ] }; + key { [ U0c3f, U0c07 ] }; + key { [ U0c41, U0c09 ] }; + key { [ U0c2a, U0c2b ] }; + key { [ U0c30, U0c31 ] }; + key { [ U0c15, U0c16 ] }; + key { [ U0c24, U0c25 ] }; + key { [ U0c1a, U0c1b ] }; + key { [ U0c1f, U0c20 ] }; + + key { [ U0c46, U0c0e ] }; + key { [ U0c02, U0c01 ] }; + key { [ U0c2e, U0c23 ] }; + key { [ U0c28 ] }; + key { [ U0c35 ] }; + key { [ U0c32, U0c33 ] }; + key { [ U0c38, U0c36 ] }; + key { [ comma , U0c37 ] }; + key { [ period ] }; + key { [ U0c2f, U0040 ] }; + + key { + symbols[Group1] = [ Mode_switch, Multi_key ], + virtualMods = AltGr + }; + include "rupeesign(4)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "urd-phonetic" { + include "pk(urd-phonetic)" + name[Group1]= "Urdu (phonetic)"; +}; + +partial alphanumeric_keys +xkb_symbols "urd-phonetic3" { + include "pk(urd-crulp)" + name[Group1]= "Urdu (alternative phonetic)"; +}; + +partial alphanumeric_keys +xkb_symbols "urd-winkeys" { + include "pk(urd-nla)" + name[Group1]= "Urdu (WinKeys)"; +}; + +// based on a keyboard map from an 'xkb/symbols/gur' file + +partial alphanumeric_keys +xkb_symbols "guru" { + name[Group1]= "Punjabi (Gurmukhi)"; + + // Mainly numbers. + key { [ U0A67 ] }; + key { [ U0A68 ] }; + key { [ U0A69, U0A71 ] }; + key { [ U0A6A, U0A74 ] }; + key { [ U0A6B, U262C ] }; + key { [ U0A6C ] }; + key { [ U0A6D ] }; + key { [ U0A6e ] }; + key { [ U0A6F, parenleft ] }; + key { [ U0A66, parenright ] }; + key { [ U0A03 ] }; + key { [ equal, plus ] }; + +// Mainly long vowels + + key { [ U0A4C, U0A14 ] }; + key { [ U0A48, U0A10 ] }; + key { [ U0A3E, U0A06 ] }; + key { [ U0A40, U0A08 ] }; + key { [ U0A42, U0A0A ] }; + +// Mainly voiced consonants + + key { [ U0A2C, U0A2D ] }; + key { [ U0A39, U0A19 ] }; + key { [ U0A17, U0A18 ] }; + key { [ U0A26, U0A27 ] }; + key { [ U0A1C, U0A1D ] }; + key { [ U0A21, U0A22 ] }; + key { [ U0A3C, U0A1E ] }; + +// Mainly short vowels + key { [ U0A4B, U0A13 ] }; + key { [ U0A47, U0A0F ] }; + key { [ U0A4D, U0A05 ] }; + key { [ U0A3F, U0A07 ] }; + key { [ U0A41, U0A09 ] }; + +// Mainly unvoiced consonants + + key { [ U0A2A, U0A2B ] }; + key { [ U0A30, U0A5C ] }; + key { [ U0A15, U0A16 ] }; + key { [ U0A24, U0A25 ] }; + key { [ U0A1A, U0A1B ] }; + key { [ U0A1F, U0A20 ] }; + key { [ U005C, U007C ] }; + + key { [ z, U0A01 ] }; + key { [ U0A02, U0A70, U0A71 ] }; + key { [ U0A2E, U0A23 ] }; + key { [ U0A28, U0A28 ] }; + key { [ U0A35, U0A35 ] }; + key { [ U0A32, U0A33 ] }; + key { [ U0A38, U0A36 ] }; + key { [ comma, less ] }; + key { [ period, U0964 ] }; + key { [ U0A2F, question ] }; + + include "rupeesign(4)" + include "level3(ralt_switch)" +}; + +//Name : Jhelum (Refind Inscript) +//Description : A Jhelum keyboard layout for Gurmukhi (Punjabi) +// http://www.satluj.org/Jhelum.html +//Modified for Inscript to make +//Original Author : Amanpreet Singh Alam { [ apostrophe, asciitilde, U0A02,U0A01 ] }; // apostrophe: anusvara, candrabindu + key { [ 1,exclam, U0A67, exclam ] }; + key { [ 2,at, U0A68, at ] }; + key { [ 3,numbersign, U0A69, numbersign ] }; + key { [ 4,dollar, U0A6A ] }; + key { [ 5,percent,U0A6B, percent ] }; + key { [ 6,U0A73, U0A6C,asciicircum ] }; + key { [ 7,U0A72,U0A6D,ampersand ] }; + key { [ 8,asterisk,U0A6E, asterisk ] }; + key { [ 9,parenleft,U0A6F,parenleft ] }; + key { [ 0,parenright,U0A66,parenright ] }; + key { [ minus,underscore] }; + key { [ equal,plus] }; + key { [ U0964,U0965,U007C,U005C] }; //pipe : danda, double danda + + //Q Row + key { [ U0A4C, U0A14 ] }; // Q: oo, ooh + key { [ U0A48, U0A10 ] }; // W: ee, ae + key { [ U0A3E, U0A06 ] }; // E: a, aa + key { [ U0A40, U0A08, U20B9 ] }; // R: ee, ai, rupeesign + key { [ U0A42, U0A0A ] }; // T: u, uu + key { [ U0A30, U0A5C ] }; // Y: ra, raa + key { [ U0A26, U0A27 ] }; // U: tha, thha + key { [ U0A17, U0A18, U0A5A ] }; // I:ga, gha + key { [ U0A24, U0A1F ] }; // O: ta, tha + key { [ U0A2A, U0A5E, VoidSymbol,U0A5E ] }; // P: pa, pha + key { [ U0A21, U0A22, bracketleft, braceleft ] }; + key { [ U0A19, U0A1E, bracketright, braceright ] }; + + //A Row + key { [ U0A4B, U0A13 ] }; // A: o, oo + key { [ U0A47, U0A0F ] }; // S: e, ee + key { [ U0A4D, U0A05 ] }; // D: halant, aa + key { [ U0A3F, U0A07 ] }; // F: i, aa + key { [ U0A41, U0A09 ] }; // G: u, uh + key { [ U0A39, U0A20 ] }; // H: ha, thha + key { [ U0A1C, U0A1D, U0A5B ] }; // J: ja, jha + key { [ U0A15, U0A16,VoidSymbol ,U0A59 ] }; // K: ka, kha + key { [ U0A32, U0A25, U0A33 ] }; // L: la, tha + key { [ U0A38, colon, U0A36 ] }; //; sa + key { [apostrophe, quotedbl ] }; + + //Z Row + key { [ U0A71, U0A3C ] }; // Z: addak, par bindi + key { [ U0A02, U0A70 ] }; // X: bindi, tippi + key { [ U0A1A, U0A1B ] }; // C: ca, cha + key { [ U0A35, U0A2F ] }; // V: va, ya + key { [ U0A2C, U0A2D ] }; // B: ba, bha + key { [ U0A28, U0A23 ] }; // N: na, nha + key { [ U0A2E, U0A2E ] }; // M: ma + key { [ comma, U262C ] };// comma: comma, dev abbreviation sign + key { [ period, U0A74 ] }; // period: period, nukta + key { [ slash, question ] }; + +// modifier_map Shift { Shift_L }; +// modifier_map Lock { Caps_Lock }; +// modifier_map Control{ Control_L }; +// modifier_map Mod3 { Mode_switch }; + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "olpc" { + +// Contact: Walter Bender + + include "in(deva)" + key { [ U094A, U0912 ] }; // DEVANAGARI VOWEL SIGN SHORT O; DEVANAGARI LETTER SHORT O + key { [ U0967, U090D ] }; // DEVANAGARI DIGIT ONE; DEVANAGARI LETTER CANDRA E + key { [ U0968, U0945 ] }; // DEVANAGARI DIGIT TWO; DEVANAGARI VOWEL SIGN CANDRA E + key { [ U0969 ] }; // DEVANAGARI DIGIT THREE; + key { [ U096A ] }; // DEVANAGARI DIGIT FOUR; + key { [ U096B ] }; // DEVANAGARI DIGIT FIVE; + key { [ U096C ] }; // DEVANAGARI DIGIT SIX; + key { [ U096D ] }; // DEVANAGARI DIGIT SEVEN; + key { [ U096E ] }; // DEVANAGARI DIGIT EIGHT; + key { [ U096F, parenleft ] }; // DEVANAGARI DIGIT NINE; + key { [ U0966, parenright ] }; // DEVANAGARI DIGIT ZERO; + key { [ minus, U0903 ] }; // DEVANAGARI SIGN VISARGA; + key { [ U0943, U090B ] }; // DEVANAGARI VOWEL SIGN VOCALIC R; DEVANAGARI LETTER VOCALIC R + + key { [ U094C, U0914 ] }; // DEVANAGARI VOWEL SIGN AU; DEVANAGARI LETTER AU + key { [ U0948, U0910 ] }; // DEVANAGARI VOWEL SIGN AI; DEVANAGARI LETTER AI + key { [ U093E, U0906 ] }; // DEVANAGARI VOWEL SIGN AA; DEVANAGARI LETTER AA + key { [ U0940, U0908 ] }; // DEVANAGARI VOWEL SIGN II; DEVANAGARI LETTER II + key { [ U0942, U090A ] }; // DEVANAGARI VOWEL SIGN UU; DEVANAGARI LETTER UU + key { [ U092C, U092D ] }; // DEVANAGARI LETTER BA; DEVANAGARI LETTER BHA + key { [ U0939, U0919 ] }; // DEVANAGARI LETTER HA; DEVANAGARI LETTER NGA + key { [ U0917, U0918 ] }; // DEVANAGARI LETTER GA; DEVANAGARI LETTER GHA + key { [ U0926, U0927 ] }; // DEVANAGARI LETTER DA; DEVANAGARI LETTER DHA + key { [ U091C, U091D ] }; // DEVANAGARI LETTER JA; DEVANAGARI LETTER JHA + key { [ U0921, U0922 ] }; // DEVANAGARI LETTER DDA; DEVANAGARI LETTER DDHA + key { [ U093C, U091E ] }; // DEVANAGARI SIGN NUKTA; DEVANAGARI LETTER NYA + + key { [ U0949, U0911 ] }; // DEVANAGARI VOWEL SIGN CANDRA O; DEVANAGARI LETTER CANDRA O + + key { [ U094B, U0913 ] }; // DEVANAGARI VOWEL SIGN O; DEVANAGARI LETTER O + key { [ U0947, U090F ] }; // DEVANAGARI VOWEL SIGN E; DEVANAGARI LETTER E + key { [ U094D, U0905 ] }; // DEVANAGARI SIGN VIRAMA; DEVANAGARI LETTER A + key { [ U093F, U0907 ] }; // DEVANAGARI VOWEL SIGN I; DEVANAGARI LETTER I + key { [ U0941, U0909 ] }; // DEVANAGARI VOWEL SIGN U; DEVANAGARI LETTER U + key { [ U092A, U092B ] }; // DEVANAGARI LETTER PA; DEVANAGARI LETTER PHA + key { [ U0930, U0931 ] }; // DEVANAGARI LETTER RA; DEVANAGARI LETTER RRA + key { [ U0915, U0916 ] }; // DEVANAGARI LETTER KA; DEVANAGARI LETTER KHA + key { [ U0924, U0925 ] }; // DEVANAGARI LETTER TA; DEVANAGARI LETTER THA + key { [ U091A, U091B ] }; // DEVANAGARI LETTER CA; DEVANAGARI LETTER CHA + key { [ U091F, U0920 ] }; // DEVANAGARI LETTER TTA; DEVANAGARI LETTER TTHA + + key { [ U0946, U090E ] }; // DEVANAGARI VOWEL SIGN SHORT E; DEVANAGARI LETTER SHORT E + key { [ U0902, U0901 ] }; // DEVANAGARI SIGN ANUSVARA; DEVANAGARI SIGN CANDRABINDU + key { [ U092E, U0923 ] }; // DEVANAGARI LETTER MA; DEVANAGARI LETTER NNA + key { [ U0928, U0929 ] }; // DEVANAGARI LETTER NA; DEVANAGARI LETTER NNNA + key { [ U0935, U0934 ] }; // DEVANAGARI LETTER VA; DEVANAGARI LETTER LLLA + key { [ U0932, U0933 ] }; // DEVANAGARI LETTER LA; DEVANAGARI LETTER LLA + key { [ U0938, U0936 ] }; // DEVANAGARI LETTER SA; DEVANAGARI LETTER SHA + key { [ comma, U0937 ] }; // DEVANAGARI LETTER SSA + key { [ period, U0964 ] }; // DEVANAGARI DANDA + key { [ U092F, U095F ] }; // DEVANAGARI LETTER YA; DEVANAGARI LETTER YYA + + // space, space, Zero-Width-Non-Joiner (ZWNJ), Zero-Width-Joiner (ZWJ): + include "nbsp(zwnj3zwj4)" + + include "group(olpc)" + include "rupeesign(4)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "hin-wx" { + + name[Group1]= "Hindi (Wx)"; + + key { [ grave, asciitilde, 2, 3 ] }; + + key { [ 0x1000967, exclam ] }; + key { [ 0x1000968, at ] }; + key { [ 0x1000969 , numbersign ] }; + key { [ 0x100096A , dollar ] }; + key { [ 0x100096B , percent ] }; + key { [ 0x100096C , asciicircum ] }; + key { [ 0x100096D , ampersand ] }; + key { [ 0x100096e , asterisk ] }; + key { [ 0x100096F, parenleft ] }; + key { [ 0x1000966, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + + + key { [ 0x1000943, 0x1000944, 0x100090B, 0x1000960] }; + key { [ 0x1000924, 0x1000925 ] }; + key { [ 0x1000947, 0x1000948, 0x100090F, 0x1000910] }; + key { [ 0x1000930, 0x1000937 ] }; + key { [ 0x100091F, 0x1000920 ] }; + + + key { [ 0x100092F ] }; + key { [ 0x1000941, 0x1000942, 0x1000909, 0x100090A ] }; + key { [ 0x100093F, 0x1000940, 0x1000907, 0x1000908 ] }; + key { [ 0x100094B, 0x100094C, 0x1000913, 0x1000914] }; + key { [ 0x100092A, 0x100092B ] }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + key { [ backslash, bar, 0x1000964, 0x1000965 ] }; + + key { [ 0x100094D, 0x100093E, 0x1000905,0x1000906 ] }; + key { [ 0x1000938, 0x1000936 ] }; + key { [ 0x1000921, 0x1000922 ] }; + key { [ 0x1000919, 0x100091E ] }; + key { [ 0x1000917, 0x1000918 ] }; + + + key { [ 0x1000939, 0x1000903 ] }; + key { [ 0x100091C, 0x100091D ] }; + key { [ 0x1000915, 0x1000916 ] }; + key { [ 0x1000932, 0x1000962, 0x1000933, 0x100090C] }; + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + + key { [ 0x1000901, 0x100093C, 0x100093D, 0x1000950] }; + key { [ 0x1000926, 0x1000927 ] }; + key { [ 0x100091A, 0x100091B ] }; + key { [ 0x1000935 ] }; + key { [ 0x100092C, 0x100092D ] }; + key { [ 0x1000928, 0x1000923 ] }; + key { [ 0x100092E, 0x1000902 ] }; + key { [ comma, less ] }; + key { [ period, greater ] }; + key { [ slash, question ] }; + + include "level3(ralt_switch)" + include "rupeesign(4)" +}; + +partial alphanumeric_keys +xkb_symbols "eng" { + + include "us(basic)" + name[Group1]= "English (India, with rupee sign)"; + + include "rupeesign(4)" + include "level3(ralt_switch)" +}; + + +// Description : Enhanced INSCRIPT keymap for Malayalam +// Encoding : Unicode (http://www.unicode.org) +// Author : Mahesh T Pai +// Date : March, 2011 +// Source : http://www.nongnu.org/smc/docs/images/ml_inscript_layout.jpg +// Comment : Based on the Inscript Keyboard created by M Baiju +// Mapping: + +partial alphanumeric_keys +xkb_symbols "mal_enhanced" { + + name[Group1] = "Malayalam (enhanced Inscript, with rupee sign)"; + + //From grave to backslash (\) + + key { [ U0d4a , U0d12 ] }; + key { [ U0d67 , exclam ] }; + key { [ U0d68 , at ] }; + key { [ U0d69 , numbersign ] }; + key { [ U0d6a , dollar ] }; + key { [ U0d6b , percent ] }; + key { [ U0d6c , asciicircum ] }; + key { [ U0d6d , ampersand ] }; + key { [ U0d6e , U0d7e ] }; + key { [ U0d6f , parenleft ] }; + key { [ U0d66 , parenright ] }; + + key { [ minus , U0d03 ] }; + key { [ U0d43 , U0d0b ] }; + key { [ U0d7c , U05C ] }; //bksl: chillu RR + + + // From 'q' to right bracket (]) + + key { [ U0d57 , U0d14 ] }; + key { [ U0d48 , U0d10 ] }; + key { [ U0d3e , U0d06 ] }; + key { [ U0d40 , U0d08 ] }; + key { [ U0d42 , U0d0a ] }; + key { [ U0d2c , U0d2d ] }; + key { [ U0d39 , U0d19 ] }; + key { [ U0d17 , U0d18 ] }; + key { [ U0d26 , U0d27 ] }; + key { [ U0d1c , U0d1d ] }; + key { [ U0d21 , U0d22 ] }; + key { [ U0200d , U0d1e ] }; + + // From 'a' to apostrophe (') + + key { [ U0d4b , U0d13 ] }; + key { [ U0d47 , U0d0f ] }; + key { [ U0d4d , U0d05 ] }; + key { [ U0d3f , U0d07 ] }; + key { [ U0d41 , U0d09 ] }; + key { [ U0d2a , U0d2b ] }; + key { [ U0d30 , U0d31 ] }; + key { [ U0d15 , U0d16 ] }; + key { [ U0d24 , U0d25 ] }; + key { [ U0d1a , U0d1b ] }; + key { [ U0d1f , U0d20 ] }; + + // From 'z' to slash (/) + + key { [ U0d46 , U0d0e ] }; + key { [ U0d02 , U0d7a ] }; + key { [ U0d2e , U0d23 ] }; + key { [ U0d28 , U0d7b ] }; + key { [ U0d35 , U0d34 ] }; + key { [ U0d32 , U0d33 ] }; + key { [ U0d38 , U0d36 ] }; + key { [ comma , U0d37 ] }; + key { [ period , U0d7d ] }; //chillu l + key { [ U0d2f , question ] }; + + include "rupeesign(4)" + include "level3(ralt_switch)" +}; + + +// ---- BEGIN Hindi KaGaPa phonetic ---- +// Name: KaGaPa phonetic +// Brief: Devanagari layout (Hindi, Sanskrit, Nepali, Marathi, etc.) +// Diagram: (Original)[http://baraha.com/help/Keyboards/dev_brhkbd.htm] +// (This layout)[http://bdsatish.in/lang/dev-kagapa.png] +// +// Description: Based on KaGaPa layout (also called Baraha layout or Nudi layout) +// which is a modified layout of the specification by Dr. K. P. Rao. +// This is a phonetic layout with the following features: +// [1] All letters are mapped to phonetically-similar English keys +// as much as possible. +// [2] The independent vowel (svara) and its dependent vowel (maatra) +// use the same key (depending upon SHIFT, ALTGR or ALTGR + SHIFT). +// [3] Consonant conjuncts are produced by explicitly invoking the +// 'viraama' (key f). The 'short a' maatra is implicit in all +// consonants. +// [4] Zero width non-joiner and joiner are on keys 6 and 7 +// respectively. These are absolutely essential for alternative +// glyph renderings of consonant half-forms. +// [5] Rigvedic accent marks, visarga variants. +// +// Author: Satish BD +// +partial alphanumeric_keys +xkb_symbols "hin-kagapa" { + name[Group1] = "Hindi (KaGaPa phonetic)"; + key.type="FOUR_LEVEL"; + + // Roman digits + key { [ apostrophe, asciitilde, U201C ] }; // U201C: left double quotation mark + key { [ 1, exclam, U0967 ] }; + key { [ 2, at, U0968, U20A8 ] }; // U20A8: generic rupee sign (Rs) + key { [ 3, numbersign, U0969 ] }; + key { [ 4, dollar, U096A, U20B9 ] }; // U20B9: new Indian rupee sign + key { [ 5, percent, U096B ] }; + key { [ 6, asciicircum, U096C, U200C ] }; // ZWNJ + key { [ 7, ampersand, U096D, U200D ] }; // ZWJ + key { [ 8, asterisk, U096E, U0901 ] }; // U0901: Devanagari candrabindu + key { [ 9, parenleft, U096F ] }; + key { [ 0, parenright, U0966, U0970 ] }; // U0970: Devanagari abbreviation sign + key { [ minus, underscore, U0952 ] }; // U0952: Devanagari stress sign anudatta + key { [ equal, plus ] }; + key { [ U005C, U007C, U0964, U0965 ] }; // backslash, pipe, danda, double danda + + //Q Row + key { [ U091F, U0920 ] }; // Q: retroflex Ta, Tha + key { [ U0921, U0922, U095C, U095D ] }; // W: retroflex Da, Dha, Da-nukta, Dha-nukta + key { [ U0946, U0947, U090E, U090F ] }; // E: matras, short E, long E + key { [ U0930, U0943, U090B, U0931 ] }; // R: ra, vocalic R matra, vocalic R, ra-nukta + key { [ U0924, U0925 ] }; // T: dental ta, tha + key { [ U092F, U0948, U0910, U095F ] }; // Y: ya, ai matra, ai, ya-nukta + key { [ U0941, U0942, U0909, U090A ] }; // U: matras, u, uu + key { [ U093F, U0940, U0907, U0908 ] }; // I: matras, i, ii + key { [ U094A, U094B, U0912, U0913 ] }; // O: matras, short o, long o + key { [ U092A, U092B, U095E ] }; // P: pa, pha, pha-nukta + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + //A Row + key { [ U093E, U0906, U0905, U0972 ] }; // A: aa matra, aa, short a, candra a + key { [ U0938, U0936 ] }; // S: sa, sha + key { [ U0926, U0927 ] }; // D: dental da, dha + key { [ U094D, U0944, U0960 ] }; // F: virama, vocalic RR matra, vocalic RR + key { [ U0917, U0918, U095A ] }; // G: ga, gha, ga-nukta + key { [ U0939, U0903, U1CF5, U1CF6 ] }; // H: ha, visarga, jihvamuliya, upadhmaniya + key { [ U091C, U091D, U095B ] }; // J: ja, jha, ja-nukta + key { [ U0915, U0916, U0958, U0959 ] }; // K: ka, kha, ka-nukta, kha-nukta + key { [ U0932, U0933, U0962, U090C ] }; // L: la, lla, vocalic L matra, vocalic L + key { [ semicolon, colon, U1CF2, U1CF3 ] }; // U1CF2/3: ardhavisarga/rotated ardhavisarga + key { [ apostrophe, quotedbl, U0951, U201D ] }; // U0951: Devanagari stress sign udatta + // U201D: Right double quotation mark + //Z Row + key { [ U091E, U0919 ] }; // Z: nya, nga + key { [ U0937, U093C, U0934 ] }; // X: ssa, nukta below, lla-nukta + key { [ U091A, U091B ] }; // C: ca, cha + key { [ U0935, U094C, U0914 ] }; // V: va, matra au, au + key { [ U092C, U092D ] }; // B: ba, bha + key { [ U0928, U0923, U0929 ] }; // N: na, nna, nnna + key { [ U092E, U0902, U093D, U0950 ] }; // M: ma, anusvara, avagraha, Devanagari OM + key { [ comma, U003C, U0945, U090D ] }; // comma: comma, less than, matra, candra e + key { [ period, U003E, U0949, U0911 ] }; // period: period, greater than, matra, candra o + key { [ slash, question ] }; + + include "level3(ralt_switch)" +}; +// ---- END Hindi KaGaPa ---- + +// Sanskrit uses Devanagari layout of Hindi +partial alphanumeric_keys +xkb_symbols "san-kagapa" { + include "in(hin-kagapa)" + name[Group1] = "Sanskrit (KaGaPa phonetic)"; +}; + +// Marathi uses Devanagari layout of Hindi +partial alphanumeric_keys +xkb_symbols "mar-kagapa" { + include "in(hin-kagapa)" + name[Group1] = "Marathi (KaGaPa phonetic)"; +}; + + +// ---- BEGIN Kannada KaGaPa phonetic ---- +// Name: Kannada KaGaPa phonetic +// Diagram: (Original)[http://www.baraha.com/help/Keyboards/kan_brhkbd.htm] +// (This layout)[http://bdsatish.in/lang/kan-kagapa.png] +// +// Description: Based on KaGaPa layout (also called Baraha layout or Nudi layout). +// See the description to "hin-kagapa" above. +// Certain punctuation characters from Devanagari block are +// retained for compatibility. +// +// Author: Satish BD +// +partial alphanumeric_keys +xkb_symbols "kan-kagapa" { + name[Group1] = "Kannada (KaGaPa phonetic)"; + key.type="FOUR_LEVEL"; + + // Roman digits + key { [ apostrophe, asciitilde, U201C ] }; // U201C: left double quotation mark + key { [ 1, exclam, U0CE7 ] }; + key { [ 2, at, U0CE8, U20A8 ] }; // U20A8: generic rupee sign (Rs) + key { [ 3, numbersign, U0CE9 ] }; + key { [ 4, dollar, U0CEA, U20B9 ] }; // U20B9: new Indian rupee sign + key { [ 5, percent, U0CEB ] }; + key { [ 6, asciicircum, U0CEC, U200C ] }; // ZWNJ + key { [ 7, ampersand, U0CED, U200D ] }; // ZWJ + key { [ 8, asterisk, U0CEE, U0901 ] }; // U0901: Devanagari candrabindu + key { [ 9, parenleft, U0CEF ] }; + key { [ 0, parenright, U0CE6 ] }; + key { [ minus, underscore, U0952 ] }; // U0952: Devanagari stress sign anudatta + key { [ equal, plus ] }; + key { [ U005C, U007C, U0964, U0965 ] }; // backslash, pipe, danda, double danda + + //Q Row + key { [ U0C9F, U0CA0 ] }; // Q: retroflex Ta, Tha + key { [ U0CA1, U0CA2 ] }; // W: retroflex Da, Dha + key { [ U0CC6, U0CC7, U0C8E, U0C8F ] }; // E: matras, short E, long E + key { [ U0CB0, U0CC3, U0C8B, U0CB1 ] }; // R: ra, vocalic R matra, vocalic R, RRA + key { [ U0CA4, U0CA5 ] }; // T: dental ta, tha + key { [ U0CAF, U0CC8, U0C90 ] }; // Y: ya, ai matra, ai + key { [ U0CC1, U0CC2, U0C89, U0C8A ] }; // U: matras, u, uu + key { [ U0CBF, U0CC0, U0C87, U0C88 ] }; // I: matras, i, ii + key { [ U0CCA, U0CCB, U0C92, U0C93 ] }; // O: matras, short o, long o + key { [ U0CAA, U0CAB ] }; // P: pa, pha + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + //A Row + key { [ U0CBE, U0C86, U0C85 ] }; // A: aa matra, aa, short a + key { [ U0CB8, U0CB6 ] }; // S: sa, sha + key { [ U0CA6, U0CA7 ] }; // D: dental da, dha + key { [ U0CCD, U0CC4, U0CE0 ] }; // F: virama, vocalic RR matra, vocalic RR + key { [ U0C97, U0C98 ] }; // G: ga, gha + key { [ U0CB9, U0C83, U0CF1, U0CF2 ] }; // H: ha, visarga, jihvanuliya, upadhmaniya + key { [ U0C9C, U0C9D ] }; // J: ja, jha + key { [ U0C95, U0C96 ] }; // K: ka, kha + key { [ U0CB2, U0CB3, U0CE2, U0C8C ] }; // L: la, lla, vocalic L matra, vocalic L + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl, U0951, U201D ] }; // U0951: Devanagari stress sign udatta + // U201D: Right double quotation mark + //Z Row + key { [ U0C9E, U0C99 ] }; // Z: nya, nga + key { [ U0CB7, U0CBC, U0CDE ] }; // X: ssa, nukta below, LLLA + key { [ U0C9A, U0C9B ] }; // C: ca, cha + key { [ U0CB5, U0CCC, U0C94 ] }; // V: va, matra au, au + key { [ U0CAC, U0CAD ] }; // B: ba, bha + key { [ U0CA8, U0CA3 ] }; // N: na, nna + key { [ U0CAE, U0C82, U0CBD, U0950 ] }; // M: ma, anusvara, avagraha, Devanagari OM + key { [ comma, U003C, U0CB1 ] }; // comma: comma, less than, RRA + key { [ period, U003E, U0CDE ] }; // period: period, greater than, LLLA + key { [ slash, question ] }; + + include "level3(ralt_switch)" +}; +// ---- END Kannada KaGaPa ---- + + +// ---- BEGIN Telugu KaGaPa phonetic ---- +// Name: Telugu KaGaPa phonetic +// Diagram: (Original)[http://www.baraha.com/help/Keyboards/tel_brhkbd.htm] +// (This layout)[http://bdsatish.in/lang/tel-kagapa.png] +// +// Description: Based on KaGaPa layout (also called Baraha layout or Nudi layout). +// See the description to "hin-kagapa" above. +// Certain punctuation characters from Devanagari block are +// retained for compatibility. +// +// Author: Satish BD +// +partial alphanumeric_keys +xkb_symbols "tel-kagapa" { + name[Group1] = "Telugu (KaGaPa phonetic)"; + key.type="FOUR_LEVEL"; + + // Roman digits + key { [ apostrophe, asciitilde, U201C ] }; // U201C: left double quotation mark + key { [ 1, exclam, U0C67 ] }; + key { [ 2, at, U0C68, U20A8 ] }; // U20A8: generic rupee sign (Rs) + key { [ 3, numbersign, U0C69 ] }; + key { [ 4, dollar, U0C6A, U20B9 ] }; // U20B9: new Indian rupee sign + key { [ 5, percent, U0C6B ] }; + key { [ 6, asciicircum, U0C6C, U200C ] }; // ZWNJ + key { [ 7, ampersand, U0C6D, U200D ] }; // ZWJ + key { [ 8, asterisk, U0C6E, U0C01 ] }; // U0C01: Telugu arasunna + key { [ 9, parenleft, U0C6F ] }; + key { [ 0, parenright, U0C66 ] }; + key { [ minus, underscore, U0952 ] }; // U0952: Devanagari stress sign anudatta + key { [ equal, plus ] }; + key { [ U005C, U007C, U0964, U0965 ] }; // backslash, pipe, danda, double danda + + //Q Row + key { [ U0C1F, U0C20 ] }; // Q: retroflex Ta, Tha + key { [ U0C21, U0C22 ] }; // W: retroflex Da, Dha + key { [ U0C46, U0C47, U0C0E, U0C0F ] }; // E: matras, short E, long E + key { [ U0C30, U0C43, U0C0B, U0C31 ] }; // R: ra, vocalic R matra, vocalic R, RRA + key { [ U0C24, U0C25 ] }; // T: dental ta, tha + key { [ U0C2F, U0C48, U0C10 ] }; // Y: ya, ai matra, ai + key { [ U0C41, U0C42, U0C09, U0C0A ] }; // U: matras, u, uu + key { [ U0C3F, U0C40, U0C07, U0C08 ] }; // I: matras, i, ii + key { [ U0C4A, U0C4B, U0C12, U0C13 ] }; // O: matras, short o, long o + key { [ U0C2A, U0C2B ] }; // P: pa, pha + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + //A Row + key { [ U0C3E, U0C06, U0C05 ] }; // A: aa matra, aa, short a + key { [ U0C38, U0C36 ] }; // S: sa, sha + key { [ U0C26, U0C27 ] }; // D: dental da, dha + key { [ U0C4D, U0C44, U0C60 ] }; // F: virama, vocalic RR matra, vocalic RR + key { [ U0C17, U0C18 ] }; // G: ga, gha + key { [ U0C39, U0C03 ] }; // H: ha, visarga + key { [ U0C1C, U0C1D ] }; // J: ja, jha + key { [ U0C15, U0C16 ] }; // K: ka, kha + key { [ U0C32, U0C33, U0C62, U0C0C ] }; // L: la, lla, vocalic L matra, vocalic L + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl, U0951, U201D ] }; // U0951: Devanagari stress sign udatta + // U201D: Right double quotation mark + //Z Row + key { [ U0C1E, U0C19 ] }; // Z: nya, nga + key { [ U0C37 ] }; // X: ssa + key { [ U0C1A, U0C1B ] }; // C: ca, cha + key { [ U0C35, U0C4C, U0C14 ] }; // V: va, matra au, au + key { [ U0C2C, U0C2D ] }; // B: ba, bha + key { [ U0C28, U0C23 ] }; // N: na, nna + key { [ U0C2E, U0C02, U0C3D, U0950 ] }; // M: ma, anusvara, avagraha, Devanagari OM + key { [ comma, U003C, U0C58 ] }; // comma: comma, less than, TSA + key { [ period, U003E, U0C59 ] }; // period: period, greater than, DZA + key { [ slash, question ] }; + + include "level3(ralt_switch)" +}; + +// Description : Keymap for Manipuri language (Meetei mayek script) +// Encoding : Unicode (http://www.unicode.org) +// Author : Santosh Heigrujam +// Date : December, 2013 +// Source : +// Comment : + +partial alphanumeric_keys modifier_keys +xkb_symbols "eeyek" { + + name[Group1]= "Manipuri (Eeyek)"; + + key { [ grave, asciitilde ] }; + key { [ Uabf1, exclam ] }; + key { [ Uabf2, at ] }; + key { [ Uabf3, numbersign ] }; + key { [ Uabf4, dollar ] }; + key { [ Uabf5, percent ] }; + key { [ Uabf6, asciicircum ] }; + key { [ Uabf7, ampersand ] }; + key { [ Uabf8, asterisk ] }; + key { [ Uabf9, parenleft ] }; + key { [ Uabf0, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + + key { [ Uabc8, Uabd8 ] }; + key { [ Uabcb, Uabcb ] }; + key { [ Uabcf, Uabe2 ] }; + key { [ Uabd4, Uabd4 ] }; + key { [ Uabc7, Uabe0 ] }; + key { [ Uabcc, Uabe6 ] }; + key { [ Uabce, Uabe8 ] }; + key { [ Uabe4, Uabe9 ] }; + key { [ Uabe3, Uabe7 ] }; + key { [ Uabc4, Uabde ] }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + key { [ Uabd1, Uabe5 ] }; + key { [ Uabc1, Uabd3 ] }; + key { [ Uabd7, Uabd9 ] }; + key { [ Uabd0, Uabda ] }; + key { [ Uabd2, Uabd8 ] }; + key { [ Uabcd, Uabea ] }; + key { [ Uabd6, Uabd3 ] }; + key { [ Uabc0, Uabdb ] }; + key { [ Uabc2, Uabdc ] }; + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + + key { [ Uabc9, Uabe1 ] }; + key { [ Uabca, Uabd9 ] }; + key { [ Uabc6, Uabeb ] }; + key { [ Uabda, Uabed ] }; + key { [ Uabd5, Uabec ] }; + key { [ Uabc5, Uabdf ] }; + key { [ Uabc3, Uabdd ] }; + key { [ comma, less ] }; + key { [ period, greater ] }; + key { [ slash, question ] }; + + key { [ backslash, bar ] }; + + include "level3(ralt_switch)" +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/inet b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/inet new file mode 100644 index 0000000..33b0583 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/inet @@ -0,0 +1,1877 @@ +// EAK (Easy Access keyboards: Internet, Multimedia, PDA) +// Copyright (C) 2002 Stanislav Brabec +// +// Based on the LinEAK project. +// LinEAK - Linux support for Easy Access and Internet Keyboards +// Copyright (C) 2001, 2002 Mark Smulders + +// Usage in XF86Config: +// Option "XkbLayout" "my_kb_layout" +// Option "XkbVariant" "my_kb_variant" +// Option "XkbModel" "my_eak_type" +// Option "XkbRules" "xfree86" +// Simple command line usage: +// setxkbmap 'my_kb_layout' -variant 'my_kb_variant' -model 'my_eak_type' + +// Very common set of media keys. +hidden partial alphanumeric_keys +xkb_symbols "media_common" { + key { [ XF86AudioMedia ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioStop, XF86Eject ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86Eject ] }; + key { [ XF86Eject ] }; +}; + +// Popular web navigation keys. +hidden partial alphanumeric_keys +xkb_symbols "nav_common" { + key { [ XF86Calculator ] }; + key { [ XF86WWW ] }; + key { [ XF86Search ] }; + key { [ XF86Favorites ] }; + key { [ XF86Reload ] }; + key { [ XF86Stop ] }; + key { [ XF86Forward ] }; + key { [ XF86Back ] }; + key { [ XF86MyComputer ] }; + key { [ XF86Mail ] }; + key { [ XF86AudioMedia ] }; +}; + +// ACPI Standard +hidden partial alphanumeric_keys +xkb_symbols "acpi_common" { + key { [ XF86PowerOff ] }; + key { [ XF86Standby ] }; + key { [ XF86WakeUp ] }; + key { [ XF86Battery ] }; + key { [ XF86WLAN ] }; + key { [ XF86Sleep ] }; +}; + +// Combined sections, for simplicity. +hidden partial alphanumeric_keys +xkb_symbols "media_nav_common" { + include "inet(media_common)" + include "inet(nav_common)" +}; + +hidden partial alphanumeric_keys +xkb_symbols "media_nav_acpi_common" { + include "inet(media_common)" + include "inet(nav_common)" + include "inet(acpi_common)" +}; + +hidden partial alphanumeric_keys +xkb_symbols "nav_acpi_common" { + include "inet(nav_common)" + include "inet(acpi_common)" +}; + +hidden partial alphanumeric_keys +xkb_symbols "media_acpi_common" { + include "inet(media_common)" + include "inet(acpi_common)" +}; + +// Evdev Standardized Keycodes +partial alphanumeric_keys +xkb_symbols "evdev" { + key { [ XF86AudioMute ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86PowerOff ] }; + key { [ Cancel ] }; + key { [ Redo ] }; + key { [ SunProps ] }; + key { [ Undo ] }; + key { [ SunFront ] }; + key { [ XF86Copy ] }; + key { [ XF86Open ] }; + key { [ XF86Paste ] }; + key { [ Find ] }; + key { [ XF86Cut ] }; + key { [ Help ] }; + key { [ Linefeed ] }; + +// Commented out because HZTG has same keycode as TLDE +// key { [ Zenkaku_Hankaku ] }; + + key { [ Hiragana_Katakana ] }; + key { [ Henkan ] }; + key { [ Muhenkan ] }; + key { [ Katakana ] }; + key { [ Hiragana ] }; + key { [ Romaji ] }; + + key { [ Hangul ] }; + key { [ Hangul_Hanja ] }; + key { [ XF86TouchpadToggle ] }; + key { [ XF86TouchpadOn ] }; + key { [ XF86TouchpadOff ] }; + + key { [ XF86AudioMicMute ] }; + +// key { [ ] }; // KEY_MACRO + key { [ plusminus ] }; + key { [ XF86LaunchA ] }; + key { [ XF86MenuKB ] }; + key { [ XF86Calculator ] }; +// key { [ ] }; // KEY_SETUP + key { [ XF86Sleep ] }; + key { [ XF86WakeUp ] }; + key { [ XF86Explorer ] }; + key { [ XF86Send ] }; +// key { [ ] }; // KEY_DELETEFILE + key { [ XF86Xfer ] }; + key { [ XF86Launch1 ] }; + key { [ XF86Launch2 ] }; + key { [ XF86WWW ] }; + key { [ XF86DOS ] }; + key { [ XF86ScreenSaver ] }; + key { [ XF86RotateWindows ] }; + key { [ XF86TaskPane ] }; + key { [ XF86Mail ] }; + key { [ XF86Favorites ] }; + key { [ XF86MyComputer ] }; + key { [ XF86Back ] }; + key { [ XF86Forward ] }; +// key { [ ] }; // KEY_CLOSECD (opposite of eject) + key { [ XF86Eject ] }; + key { [ XF86Eject, XF86Eject ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioStop, XF86Eject ] }; + key { [ XF86AudioRecord ] }; + key { [ XF86AudioRewind ] }; + key { [ XF86Phone ] }; +// key { [ ] }; // KEY_ISO + key { [ XF86Tools ] }; + key { [ XF86HomePage ] }; + key { [ XF86Reload ] }; + key { [ XF86Close ] }; +// key { [ ] }; // KEY_MOVE +// key { [ ] }; // KEY_EDIT + key { [ XF86ScrollUp ] }; + key { [ XF86ScrollDown ] }; + key { [ parenleft ] }; + key { [ parenright ] }; + key { [ XF86New ] }; + key { [ Redo ] }; + key { [ XF86LaunchA ] }; + key { [ XF86LaunchC ] }; + key { [ XF86LaunchD ] }; + key { [ XF86LaunchE ] }; + key { [ XF86LaunchF ] }; + key { [ XF86AudioPlay ] }; + key { [ XF86AudioPause ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Launch4 ] }; + key { [ XF86LaunchB ] }; + key { [ XF86Suspend ] }; + key { [ XF86Close ] }; + key { [ XF86AudioPlay ] }; + key { [ XF86AudioForward ] }; +// key { [ ] }; // KEY_BASSBOOST + key { [ Print ] }; +// key { [ ] }; // KEY_HP + key { [ XF86WebCam ] }; +// key { [ ] }; // KEY_SOUND +// key { [ ] }; // KEY_QUESTION + key { [ XF86Mail ] }; + key { [ XF86Messenger ] }; // KEY_CHAT + key { [ XF86Search ] }; + key { [ XF86Go ] }; // KEY_CONNECT + key { [ XF86Finance ] }; + key { [ XF86Game ] }; // KEY_SPORT + key { [ XF86Shop ] }; +// key { [ ] }; // KEY_ALTERASE + key { [ Cancel ] }; + key { [ XF86MonBrightnessDown ] }; + key { [ XF86MonBrightnessUp ] }; + key { [ XF86AudioMedia ] }; + key { [ XF86Display ] }; + key { [ XF86KbdLightOnOff ] }; // KEY_KBDILLUMTOGGLE + key { [ XF86KbdBrightnessDown ] }; // KEY_KBDILLUMDOWN + key { [ XF86KbdBrightnessUp ] }; // KEY_KBDILLUMUP + key { [ XF86Send ] }; + key { [ XF86Reply ] }; + key { [ XF86MailForward ] }; + key { [ XF86Save ] }; + key { [ XF86Documents ] }; + key { [ XF86Battery ] }; + key { [ XF86Bluetooth ] }; + key { [ XF86WLAN ] }; +// key { [ ] }; // KEY_VIDEO_NEXT -- drive next video source +// key { [ ] }; // KEY_VIDEO_PREV -- drive previous video source +// key { [ ] }; // KEY_BRIGHTNESS_CYCLE -- bright up, max++ == min +// key { [ ] }; // KEY_BRIGHTNESS_ZERO -- brightness off +// key { [ ] }; // KEY_DISPLAY_OFF -- turn off display +// key { [ ] }; // KEY_WIMAX + key { [ XF86Hibernate ] }; // KEY_HIBERNATE + + key { [ XF86Tools ] }; + key { [ XF86Launch5 ] }; + key { [ XF86Launch6 ] }; + key { [ XF86Launch7 ] }; + key { [ XF86Launch8 ] }; + key { [ XF86Launch9 ] }; +}; + + +// Acer + +// Acer AirKey V +partial alphanumeric_keys +xkb_symbols "airkey" { + include "inet(acpi_common)" + key { [ XF86AudioNext ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86Mail ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioMute ] }; + key { [ XF86WWW ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86Terminal ] }; + key { [ XF86AudioStop, XF86Eject ] }; +}; + +// Acer C300 Laptop +partial alphanumeric_keys +xkb_symbols "acer_c300" { + include "inet(nav_common)" + key { [ F14 ] }; + key { [ F13 ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86Launch2 ] }; + key { [ Help ] }; + key { [ XF86Launch1 ] }; +}; + +// Acer Ferrari 4000 Keyboard +// From Alex Dubov +partial alphanumeric_keys +xkb_symbols "acer_ferrari4k" { + include "inet(media_nav_common)" + key { [ dollar ] }; + key { [ EuroSign ] }; + key { [ XF86Display ] }; + // Missing keycodes - set-up with setkeycodes + key { [ Help ] }; + key { [ XF86Launch1 ] }; + key { [ XF86Launch2 ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Launch4 ] }; +}; + +// Acer Laptop (Generic layout for Acer laptops from 2004 onwards) +// From Carlos Corbacho +// Keys marked (HAL) require HAL 0.5.10 (or newer) to be set up correctly +// (Your laptop must also be added to hal-info) +// (Not all these keys will be available on every Acer laptop) +partial alphanumeric_keys +xkb_symbols "acer_laptop" { + include "inet(media_nav_acpi_common)" + key { [ XF86Launch2 ] }; // "P" or "P2" (HAL) + key { [ XF86Launch1 ] }; // "e" or "P1" (HAL) + + // Hotkeys (Function) + // Launch Keys + // Device keys + key { [ XF86Display ] }; // Fn+F5 (HAL) + key { [ XF86Launch4 ] }; // Fn+F3 (HAL) + key { [ XF86LaunchB ] }; // Bluetooth (HAL) + key { [ XF86LaunchA ] }; // Wireless (HAL) + key { [ Help ] }; // Fn+F1 (HAL) + key { [ XF86Launch5 ] }; // Fn+F7 (HAL) + key { [ XF86Launch3 ] }; // Fn+F2 (HAL) + + // Special Characters + // To avoid setting a precedent/standard that will be broken in later + // versions of HAL, these keys are commented out for now. When they are no + // longer marked 'FIXME' and have saner keycodes, these two entries can be + // fixed and permanently uncommented. In the meantime, just uncomment these + // to make the keys work. +// key { [ EuroSign ] }; // Euro (HAL) +// key { [ dollar ] }; // Dollar (HAL) +}; + + +// Azona + +// Azona RF2300 wireless Internet Keyboard +partial alphanumeric_keys +xkb_symbols "azonaRF2300" { + // From Radics Laszlo + include "inet(nav_acpi_common)" + key { [ XF86HomePage ] }; + key { [ XF86AudioStop ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioMute ] }; + key { [ XF86Copy ] }; + key { [ XF86Cut ] }; +// key { [ XF86Paste ] }; +}; + + +// Brother + +// Brother Internet Keyboard +partial alphanumeric_keys +xkb_symbols "brother" { + include "inet(acpi_common)" + key { [ XF86ScrollUp ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86ScrollDown ] }; + key { [ XF86ZoomOut ] }; + key { [ XF86AudioMute ] }; + key { [ XF86WWW ] }; + key { [ Menu ] }; + key { [ XF86AudioStop ] }; + key { [ XF86Calculator ] }; + key { [ XF86Xfer ] }; + key { [ XF86Mail ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86ZoomIn ] }; + key { [ XF86AudioLowerVolume ] }; +}; + + +// BTC + +// BTC 5113RF Multimedia +partial alphanumeric_keys +xkb_symbols "btc5113rf" { + include "inet(acpi_common)" + key { [ XF86AudioStop ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86Favorites ] }; + key { [ XF86Eject ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86Back ] }; + key { [ XF86WWW ] }; + key { [ XF86Search ] }; +}; + +// BTC 9000 +partial alphanumeric_keys +xkb_symbols "btc9000" { + include "inet(acpi_common)" + key { [ XF86AudioStop ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86Favorites ] }; + key { [ XF86AudioMedia ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86Reload ] }; + key { [ XF86Mail ] }; + key { [ XF86HomePage ] }; + key { [ XF86Search ] }; +}; + +// BTC 9000A +partial alphanumeric_keys +xkb_symbols "btc9000a" { + include "inet(acpi_common)" + key { [ XF86AudioStop ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86Favorites ] }; + key { [ XF86Eject ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86HomePage ] }; + key { [ Help ] }; + key { [ XF86WWW ] }; + key { [ XF86Search ] }; +}; + +// BTC 9001AH +xkb_symbols "btc9001ah" { + include "inet(acpi_common)" + key { [ XF86HomePage ] }; + key { [ XF86AudioStop ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioMute ] }; + key { [ XF86Mail ] }; + key { [ XF86Eject ] }; +}; + +// BTC 5090 +partial alphanumeric_keys +xkb_symbols "btc5090" { + include "inet(media_nav_acpi_common)" + key { [ XF86Start ] }; + key { [ XF86Eject ] }; +}; + +// BTC 9019U +partial alphanumeric_keys +xkb_symbols "btc9019u" { + include "inet(media_nav_acpi_common)" + key { [ XF86Search ] }; + key { [ XF86HomePage ] }; +}; + + +// Cherry + +// Cherry Blue Line CyBo@rd +partial alphanumeric_keys +xkb_symbols "cherryblue" { + include "inet(nav_common)" + key { [ XF86Reload ] }; + key { [ XF86HomePage ] }; + key { [ XF86AudioStop ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioMute ] }; + key { [ XF86Standby ] }; + key { [ XF86Terminal ] }; + key { [ XF86Go ] }; +}; + +// Cherry CyMotion Master XPress +partial alphanumeric_keys +xkb_symbols "cherryblueb" { + include "inet(media_nav_common)" + key { [ XF86Reload ] }; + key { [ XF86HomePage ] }; + key { [ XF86Forward ] }; + key { [ XF86Back ] }; + key { [ XF86Copy ] }; + key { [ XF86ScrollUp ] }; + key { [ XF86ScrollDown ] }; + key { [ XF86Cut ] }; + key { [ XF86Paste ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioMute ] }; + key { [ XF86Book ] }; + key { [ XF86Finance ] }; + key { [ XF86Standby ] }; + key { [ XF86AudioRewind ] }; + key { [ XF86Eject ] }; + key { [ XF86Book ] }; + key { [ XF86Book ] }; + key { [ XF86Terminal ] }; + key { [ XF86Go ] }; +}; + +// Cherry Blue Line CyBo@rd (alternate option) +partial alphanumeric_keys +xkb_symbols "cherrybluea" { + include "inet(media_nav_acpi_common)" + key { [ XF86Go ] }; +}; + +// Cherry CyBo@rd USB-Hub +partial alphanumeric_keys +xkb_symbols "cherrycyboard" { + include "inet(media_nav_acpi_common)" + key { [ XF86Search ] }; + key { [ XF86HomePage ] }; + key { [ XF86Terminal ] }; + key { [ XF86AudioMedia ] }; +}; + +// Cherry CyMotion Expert +partial alphanumeric_keys +xkb_symbols "cherrycmexpert" { + include "inet(cherryblueb)" + include "inet(acpi_common)" + key { [ XF86Mail ] }; +}; + + +// Chicony + +// Chicony Internet Keyboard +partial alphanumeric_keys +xkb_symbols "chicony" { + include "inet(acpi_common)" + key { [ XF86AudioMute ] }; + key { [ XF86Mail ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86Forward ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioStop ] }; + key { [ XF86Back ] }; + key { [ XF86LaunchB ] }; + key { [ XF86LaunchC ] }; + key { [ XF86LaunchA ] }; + key { [ XF86WWW ] }; + key { [ XF86ContrastAdjust ] }; + key { [ XF86BrightnessAdjust ] }; +}; + +// Chicony KU-0108 +partial alphanumeric_keys +xkb_symbols "chicony0108" { + include "inet(cherrycyboard)" +}; + +// Chicony KU-0420 AKA Targus Slim Internet Media USB Keyboard +partial alphanumeric_keys +xkb_symbols "chicony0420" { + include "inet(media_nav_acpi_common)" + key { [ XF86AudioMedia ] }; + key { [ XF86MyComputer ] }; +}; + +// Chicony KB-9885 +partial alphanumeric_keys +xkb_symbols "chicony9885" { + include "inet(acpi_common)" + key { [ XF86AudioMute ] }; + key { [ XF86Mail ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86Forward ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioStop ] }; + key { [ XF86Back ] }; + key { [ XF86LaunchB ] }; + key { [ XF86LaunchC ] }; + key { [ XF86LaunchA ] }; + key { [ XF86WWW ] }; +}; + + +// Compaq + +// Compaq Easy Access Keyboard +partial alphanumeric_keys +xkb_symbols "compaqeak8" { + key { [ XF86Community ] }; + key { [ XF86Market ] }; + key { [ XF86Meeting ] }; + key { [ XF86Search ] }; + key { [ XF86News ] }; + key { [ XF86Mail ] }; + key { [ XF86HomePage ] }; + key { [ XF86WWW ] }; +}; + +// Compaq Internet Keyboard (7 keys) +partial alphanumeric_keys +xkb_symbols "compaqik7" { + key { [ XF86LightBulb ] }; + key { [ XF86Mail ] }; + key { [ XF86Search ] }; + key { [ Help ] }; + key { [ XF86VendorHome ] }; + key { [ XF86HomePage ] }; + key { [ XF86Shop ] }; +}; + +// Compaq Internet Keyboard (13 keys) +partial alphanumeric_keys +xkb_symbols "compaqik13" { + include "inet(media_acpi_common)" + key { [ XF86Mail ] }; + key { [ XF86Go ] }; + key { [ XF86Search ] }; + key { [ XF86WWW ] }; + key { [ XF86Shop ] }; +}; + +// Compaq Internet Keyboard (18 keys) +partial alphanumeric_keys +xkb_symbols "compaqik18" { + include "inet(media_acpi_common)" + key { [ XF86LightBulb ] }; + key { [ XF86Eject ] }; + key { [ XF86Mail ] }; + key { [ XF86Go ] }; + key { [ XF86Search ] }; + key { [ XF86WWW ] }; + key { [ XF86VendorHome ] }; + key { [ XF86Community ] }; + key { [ XF86Shop ] }; + key { [ Print ] }; +}; + +// Laptop/notebook Compaq (eg. Armada, Evo) Laptop Keyboard +partial alphanumeric_keys +xkb_symbols "armada" { + include "inet(media_acpi_common)" + key { [ XF86Search ] }; + key { [ XF86Mail ] }; + key { [ XF86HomePage ] }; + key { [ XF86WWW ] }; + key { [ XF86Launch2 ] }; // Battery Monitor + key { [ XF86AudioMedia ] }; + key { [ XF86Launch0 ] }; // Info Center +}; + +// Laptop/notebook Compaq (eg. Presario) Internet Keyboard +partial alphanumeric_keys +xkb_symbols "presario" { + include "inet(media_acpi_common)" + key { [ XF86Q ] }; + key { [ XF86Launch2 ] }; + key { [ XF86Mail ] }; + key { [ XF86Launch1 ] }; + key { [ XF86WWW ] }; + key { [ XF86Shop ] }; + key { [ XF86AudioMedia ] }; +}; + +// Compaq iPaq Keyboard +partial alphanumeric_keys +xkb_symbols "ipaq" { + key { [ XF86Shop ] }; + key { [ XF86Standby ] }; + key { [ XF86Search ] }; + key { [ XF86Travel ] }; + key { [ XF86BackForward ] }; + key { [ XF86Q ] }; + key { [ XF86Mail ] }; +}; + + +// Dell + +partial alphanumeric_keys +xkb_symbols "dell" { + include "inet(acpi_common)" + key { [ XF86Mail ] }; + key { [ XF86Search ] }; + key { [ XF86HomePage ] }; +}; + +// Dell Precision M65 +partial alphanumeric_keys +xkb_symbols "dellm65" { + include "inet(media_common)" + key { [ XF86PowerOff ] }; + key { [ Super_L ] }; +}; + +// Laptop/notebook Dell Inspiron 8xxx +partial alphanumeric_keys +xkb_symbols "inspiron" { + include "inet(media_common)" + key { [ XF86AudioStop ] }; + key { [ XF86AudioNext ] }; + key { [ XF86Eject ] }; + key { [ XF86Display ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; +}; + +// DELL USB Multimedia Keyboard (former 8135, generalized, superset of 8125) +partial alphanumeric_keys +xkb_symbols "dellusbmm" { + // Describes the extra keys on a SK-8135 Multimedia keyboard + // From Olivier Lahaye + include "inet(media_nav_acpi_common)" + key { [ XF86HomePage ] }; + key { [ XF86MyComputer ] }; + key { [ XF86AudioMedia ] }; +}; + + +// Diamond + +// Diamond 9801 / 9802 series +partial alphanumeric_keys +xkb_symbols "diamond" { + include "inet(media_nav_acpi_common)" + key { [ XF86Go ] }; +}; + + +// Ennyah + +// Ennyah DKB-1008 +partial alphanumeric_keys +xkb_symbols "ennyah_dkb1008" { + include "inet(media_nav_acpi_common)" + key { [ XF86AudioMedia ] }; +}; + + +// Genius + +// Genius Comfy KB-16M / Genius MM Keyboard KWD-910 +partial alphanumeric_keys +xkb_symbols "genius" { + include "inet(media_acpi_common)" + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86Calculator ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86Forward ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86Back ] }; + key { [ XF86ScreenSaver ] }; + key { [ XF86Mail ] }; + key { [ XF86Eject ] }; + key { [ XF86WWW ] }; +}; + +// Genius Comfy 21e +partial alphanumeric_keys +xkb_symbols "geniuscomfy2" { + // Describes the extra keys on a Genius Comfy KB-21e-Scroll + // From Radics Laszlo + include "inet(media_nav_acpi_common)" + key { [ Return ] }; +}; + + +// Gyration + +partial alphanumeric_keys +xkb_symbols "gyration" { + include "inet(nav_common)" + key { [ XF86Reload ] }; + key { [ XF86HomePage ] }; + key { [ XF86AudioStop ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioMute ] }; +}; + + +// Hewlett-Packard + +// Hewlett-Packard Internet Keyboard +partial alphanumeric_keys +xkb_symbols "hpi6" { + include "inet(media_nav_acpi_common)" + key { [ XF86HomePage ] }; + key { [ XF86Search ] }; + key { [ XF86VendorHome ] }; + key { [ XF86Community ] }; + key { [ XF86AudioMedia ] }; + key { [ XF86Eject ] }; + key { [ XF86Shop ] }; + key { [ XF86Launch1 ] }; + key { [ Help ] }; + key { [ XF86Finance ] }; + key { [ Print ] }; + key { [ Help ] }; +}; + +// Hewlett-Packard SK-2501, SK-2505 Multimedia Keyboard +partial alphanumeric_keys +xkb_symbols "hp250x" { + key { [ XF86Tools ] }; + key { [ XF86Search ] }; + key { [ XF86Eject ] }; + key { [ XF86Mail ] }; + key { [ XF86AudioMute ] }; + key { [ XF86Launch5 ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Launch2 ] }; + key { [ XF86Launch4 ] }; + key { [ XF86Standby ] }; + key { [ Help ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86WWW ] }; +}; + +// Hewlett-Packard Omnibook XE3 GC, GD, GE and Pavilion N5xxx +partial alphanumeric_keys +xkb_symbols "hpxe3gc" { + // Describes the OneTouch buttons on HP Omnibook XE3 GC and + // HP Pavilion N52XX models. + // See http://sourceforge.net/projects/omke for details on enabling + // these keys + include "inet(media_common)" + key { [ Help ] }; + key { [ XF86Launch1 ] }; + key { [ XF86WWW ] }; + key { [ XF86Mail ] }; +}; + +// Hewlett-Packard Omnibook XE3 GF +partial alphanumeric_keys +xkb_symbols "hpxe3gf" { + // Describes the OneTouch buttons on HP Omnibook XE3 GF models. + // See http://sourceforge.net/projects/omke for details on enabling + // these keys + include "inet(media_nav_common)" + key { [ Help ] }; + key { [ XF86Launch1 ] }; +}; + +// Hewlett-Packard Omnibook XT1000 +partial alphanumeric_keys +xkb_symbols "hpxt1000" { + // Describes the OneTouch buttons on HP Omnibook XT1000 models. + // See http://sourceforge.net/projects/omke for details on enabling + // these keys + include "inet(media_nav_common)" + key { [ XF86Launch3 ] }; + key { [ Help ] }; + key { [ XF86Launch2 ] }; + key { [ XF86Launch1 ] }; +}; + +// Hewlett-Packard Pavilion ZT11xx +partial alphanumeric_keys +xkb_symbols "hpzt11xx" { + // Describes the OneTouch buttons on HP Pavilion ZT11xx models. + // See http://sourceforge.net/projects/omke for details on enabling + // these keys + include "inet(media_nav_common)" + key { [ XF86Launch3 ] }; + key { [ Help ] }; + key { [ XF86Launch2 ] }; + key { [ XF86Launch1 ] }; +}; + +// Hewlett-Packard Pavilion dv5 +partial alphanumeric_keys +xkb_symbols "hpdv5" { + // Describes the OneTouch buttons on HP Pavilion dv5 models. + // See http://sourceforge.net/projects/omke for details on enabling + // these keys + include "inet(media_common)" + key { [ XF86ScreenSaver ] }; + key { [ XF86WWW ] }; + key { [ Help ] }; + key { [ XF86Launch1 ] }; +}; + +// Hewlett-Packard Omnibook XE4xxx and ZE4xxx +partial alphanumeric_keys +xkb_symbols "hpxe4xxx" { + // Describes the OneTouch buttons on HP Omnibook XE4xxx and ZE4xxx + // models. + // See http://sourceforge.net/projects/omke for details on enabling + // these keys + include "inet(media_nav_common)" + key { [ Help ] }; + key { [ XF86Launch2 ] }; + key { [ XF86Launch1 ] }; +}; + +// Hewlett-Packard Omnibook 500 FA +partial alphanumeric_keys +xkb_symbols "hp500fa" { + // Describes the OneTouch buttons on HP Omnibook 500 FA models. + // See http://sourceforge.net/projects/omke for details on enabling + // these keys + key { [ Help ] }; + key { [ XF86Launch1 ] }; +}; + +// Hewlett-Packard Omnibook 5xx +partial alphanumeric_keys +xkb_symbols "hp5xx" { + // Describes the OneTouch buttons on HP Omnibook 5xx models. + // See http://sourceforge.net/projects/omke for details on enabling + // these keys + include "inet(media_common)" + key { [ Help ] }; + key { [ XF86Launch1 ] }; +}; + + +// Honeywell + +// Honeywell Euroboard +partial alphanumeric_keys +xkb_symbols "honeywell_euroboard" { + // January 2002 + // Scott Penrose + // http://linux.dd.com.au/quest/linux/keyboard/honeywell/ + key { [ XF86Game ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86Eject ] }; + key { [ XF86Launch2 ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86Launch1 ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioStop ] }; + key { [ XF86Mail ] }; + key { [ XF86ScreenSaver ] }; + key { [ XF86Calculator ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86WWW ] }; +}; + + +// IBM + +// IBM Rapid Access +partial alphanumeric_keys +xkb_symbols "rapidaccess" { + key { [ XF86AudioMute ] }; + key { [ XF86Launch2 ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPause ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioStop ] }; + key { [ XF86Standby ] }; + key { [ Help ] }; + key { [ XF86Launch4 ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Launch1 ] }; +}; + +// IBM Rapid Access II +partial alphanumeric_keys +xkb_symbols "rapidaccess2" { + include "inet(acpi_common)" + key { [ XF86AudioNext ] }; + key { [ XF86Favorites ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioStop ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86HomePage ] }; + key { [ XF86Shop ] }; + key { [ XF86Search ] }; + key { [ XF86MyComputer ] }; + key { [ XF86VendorHome ] }; +}; + +// IBM ThinkPad 60 series +partial alphanumeric_keys +xkb_symbols "thinkpad60" { + include "inet(media_nav_common)" + key { [ XF86VendorHome ] }; +}; + +// IBM Space Saver +partial alphanumeric_keys +xkb_symbols "ibm_spacesaver" { + key { + type="ONE_LEVEL", + symbols[Group1]= [ Num_Lock ] + }; +}; + + +// Logitech + +// Logitech common definitions +hidden partial alphanumeric_keys +xkb_symbols "logitech_base" { + include "inet(media_nav_acpi_common)" + key { [ XF86HomePage ] }; + key { [ XF86Community ] }; + key { [ XF86ScrollClick ] }; + key { [ XF86VendorHome ] }; + key { [ XF86New ] }; + key { [ XF86Reply ] }; + key { [ XF86MyComputer ] }; + key { [ XF86Documents ] }; + key { [ XF86Pictures ] }; + key { [ XF86Music ] }; +}; + +// Logitech second set of common keys +hidden partial alphanumeric_keys +xkb_symbols "logitech_set3" { + key { [ XF86AudioStop ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioMute ] }; + key { [ XF86New ] }; // F1 + key { [ XF86Reply ] }; // F2 + key { [ XF86Send ] }; // F4 + key { [ Print ] }; // F7 + key { [ XF86Save ] }; // F8 + key { [ XF86Documents ] }; // F10 + key { [ XF86Go ] }; + key { [ XF86AudioMedia ] }; +}; + +// Logitech Access Keyboard +partial alphanumeric_keys +xkb_symbols "logiaccess" { + include "inet(logitech_base)" + key { [ XF86MailForward ] }; + key { [ XF86Send ] }; + key { [ XF86Messenger ] }; + key { [ XF86WebCam ] }; +}; + +// Logitech Cordless Desktop (alternate option) +partial alphanumeric_keys +xkb_symbols "logicda" { + include "inet(logitech_base)" + include "inet(logitech_set3)" +}; + +// Logitech Internet Navigator Keyboard +partial alphanumeric_keys +xkb_symbols "logicink" { + include "inet(logitech_base)" + key { [ XF86Shop ] }; + key { [ XF86VendorHome ] }; + key { [ XF86Finance ] }; + key { [ XF86Start ] }; +}; + +// Logitech Cordless Desktop EX110 +partial alphanumeric_keys +xkb_symbols "logiex110" { + include "inet(logitech_base)" + key { [ XF86Close ] }; // Close +// Extended function keys +// In the Console before starting X +// Using setkeycodes e03b 212 e03c 213 e03d 214 e03e 215 e03f 216 e040 217 +// setkeycodes e041 218 e042 219 e043 220 e044 221 e057 222 e058 223 6d 206 +// *=keys that are there but need different symbol names. + key { [ Help ] }; // F1 + key { [ XF86Word ] }; // F2 + key { [ XF86Excel ] }; // F3 + key { [ XF86Pictures ] }; // F4 + key { [ Undo ] }; // F5 + key { [ Redo ] }; // F6 * + key { [ Print ] }; // F7 + key { [ XF86Save ] }; // F8 + key { [ XF86Launch1 ] }; // F9 * + key { [ XF86Launch2 ] }; // F10 + key { [ XF86Launch3 ] }; // F11 + key { [ XF86Launch4 ] }; // F12 +}; + +// Logitech iTouch Internet Navigator Keyboard SE +partial alphanumeric_keys +xkb_symbols "logiinkse" { + include "inet(logitech_base)" + key { [ XF86MailForward ] }; // F3 + key { [ XF86Send ] }; // F4 + key { [ Undo ] }; // F5 + key { [ Redo ] }; // F6 + key { [ Print ] }; // F7 + key { [ XF86Messenger ] }; + key { [ XF86WebCam ] }; + key { [ XF86VendorHome ] }; + key { [ XF86Shop ] }; + key { [ XF86Save ] }; // F8 +}; + +// Logitech iTouch Internet Navigator Keyboard SE (USB) +partial alphanumeric_keys +xkb_symbols "logiinkseusb" { + include "inet(logitech_base)" + include "inet(logitech_set3)" +}; + +// Logitech iTouch Cordless Keyboard (model Y-RB6) +partial alphanumeric_keys +xkb_symbols "logiitc" { + include "inet(logitech_base)" + key { [ XF86AudioRaiseVolume ] }; + + // Just to override RaiseVolume from logitech_base, + // since no keysym can have two keycodes, see + // https://bugs.freedesktop.org/show_bug.cgi?id=7095 + key { [ XF86Launch1 ] }; +}; + +// Logitech Internet Keyboard +partial alphanumeric_keys +xkb_symbols "logiik" { + include "inet(logitech_base)" + key { [ Find ] }; + key { [ Print ] }; + key { [ XF86Favorites ] }; + key { [ XF86Reload ] }; + key { [ XF86Search ] }; + key { [ XF86HotLinks ] }; + key { [ XF86Forward ] }; + key { [ XF86HomePage ] }; + key { [ XF86Stop ] }; + key { [ XF86OpenURL ] }; + key { [ XF86AddFavorite ] }; + key { [ XF86History ] }; + key { [ XF86WWW ] }; +}; + +// Logitech iTouch +partial alphanumeric_keys +xkb_symbols "itouch" { + include "inet(logitech_base)" + key { [ XF86AudioMute ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; +}; + +// Logitech UltraX Cordless Media Desktop +partial alphanumeric_keys +xkb_symbols "logiultraxc" { + key { [ XF86AudioMute ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioRaiseVolume ] }; +}; + +partial alphanumeric_keys +xkb_symbols "logidinovo" { + include "inet(media_nav_common)" + key { [ XF86HomePage ] }; + key { [ XF86Standby ] }; + key { [ XF86Search ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioMedia ] }; +}; + +partial alphanumeric_keys +xkb_symbols "logidinovoedge" { + include "inet(media_acpi_common)" + key { [ XF86HomePage ] }; + key { [ XF86Mail ] }; + key { [ XF86Search ] }; + key { [ XF86AudioMedia ] }; +}; + +partial alphanumeric_keys +xkb_symbols "logitech_g15" { + include "inet(media_nav_acpi_common)" + key { [ XF86Messenger ] }; + key { [ XF86Launch7 ] }; + key { [ XF86Launch9 ] }; + key { [ XF86Phone ] }; + key { [ XF86LaunchD ] }; + key { [ XF86Support ] }; + key { [ XF86LaunchF ] }; + key { [ XF86LogOff ] }; + key { [ XF86Launch5 ] }; + key { [ XF86Travel ] }; + key { [ XF86Spell ] }; + key { [ XF86Launch4 ] }; + key { [ XF86Music ] }; + key { [ XF86Forward ] }; + key { [ XF86Send ] }; + key { [ XF86Save ] }; + key { [ XF86Pictures ] }; + key { [ XF86LaunchA ] }; + key { [ XF86iTouch ] }; + key { [ XF86Launch3 ] }; + key { [ XF86ToDoList ] }; + key { [ XF86Calculator ] }; + key { [ XF86VendorHome ] }; + key { [ XF86Away ] }; + key { [ XF86WebCam ] }; + key { [ XF86Launch0 ] }; + key { [ XF86Launch6 ] }; + key { [ XF86Calendar ] }; + key { [ XF86LaunchB ] }; + key { [ XF86LaunchC ] }; + key { [ XF86WWW ] }; + key { [ XF86LaunchE ] }; + key { [ XF86Launch1 ] }; + key { [ XF86Launch2 ] }; + key { [ XF86Launch8 ] }; +}; + + +// Memorex + +// Memorex MX1998 +partial alphanumeric_keys +xkb_symbols "mx1998" { + include "inet(media_acpi_common)" + key { [ XF86ScrollDown ] }; + key { [ XF86AudioRewind ] }; + key { [ XF86Close ] }; + key { [ XF86Xfer ] }; + key { [ XF86AudioRecord ] }; + key { [ XF86Documents ] }; + key { [ XF86Game ] }; + key { [ XF86Calculator ] }; + key { [ Menu ] }; + key { [ XF86WWW ] }; + key { [ XF86WakeUp ] }; + key { [ XF86DOS ] }; + key { [ XF86ScreenSaver ] }; + key { [ XF86ScrollUp ] }; +}; + +// Memorex MX2500 EZ-Access Keyboard +partial alphanumeric_keys +xkb_symbols "mx2500" { + include "inet(media_nav_acpi_common)" + key { [ XF86Clear ] }; + key { [ XF86Phone ] }; + key { [ XF86DOS ] }; + key { [ XF86Close ] }; + key { [ XF86Xfer ] }; + key { [ XF86Eject ] }; + key { [ XF86Documents ] }; + key { [ XF86News ] }; + key { [ XF86WakeUp ] }; + key { [ XF86RotateWindows ] }; +}; + +// Memorex MX2750 +partial alphanumeric_keys +xkb_symbols "mx2750" { + include "inet(media_nav_acpi_common)" + key { [ XF86Launch0 ] }; +}; + + +// Microsoft + +// Microsoft Natural Ergonomic Keyboard 4000 +partial alphanumeric_keys +xkb_symbols "microsoft4000" { + include "inet(media_nav_common)" + key { [ XF86Launch1 ] }; + key { [ XF86Launch2 ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Launch4 ] }; + key { [ XF86Launch5 ] }; +// Missing because of lack of support from kbd driver: Zoom in and +// slider. +}; + +// Microsoft Natural Wireless Ergonomic Keyboard 7000 +partial alphanumeric_keys +xkb_symbols "microsoft7000" { + include "inet(media_nav_common)" + key { [ Undo ] }; + key { [ XF86New ] }; + key { [ Redo ] }; + key { [ XF86MailForward ] }; + key { [ XF86Close ] }; + key { [ Print ] }; + key { [ XF86Save ] }; + key { [ XF86Send ] }; + key { [ Help ] }; + key { [ XF86Reply ] }; + key { [ parenleft ] }; + key { [ parenright ] }; + key { [ KP_Equal ] }; + key { [ XF86Open ] }; +// Missing because of lack of support from kbd driver: Spell, Launch, +// and Zoom in and out buttons. +}; + +// Microsoft Internet Keyboard +partial alphanumeric_keys +xkb_symbols "microsoftinet" { + include "inet(nav_acpi_common)" + key { [ XF86AudioStop ] }; +}; + +// Microsoft Natural Keyboard Pro USB +partial alphanumeric_keys +xkb_symbols "microsoftprousb" { + include "inet(nav_common)" + key { [ XF86Reload ] }; + key { [ XF86AudioMedia ] }; + key { [ XF86HomePage ] }; + key { [ XF86AudioStop ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioMute ] }; + key { [ XF86Standby ] }; +// Internet Section -- Left Side +// Multimedia Section -- Right Side +// My Computer Section -- Far Right +// My computer maps to printscreen, so leaving commented out for now +// key { [ XF86MyComputer ] }; +}; + +// Microsoft Natural Keyboard Pro OEM +partial alphanumeric_keys +xkb_symbols "microsoftprooem" { + include "inet(media_nav_common)" + key { [ XF86Search ] }; + key { [ XF86HomePage ] }; + key { [ XF86Standby ] }; + key { [ XF86MyComputer ] }; +// Internet Section -- Left Side +// Multimedia Section -- Right Side +// My Computer Section -- Far Right +}; + +// Microsoft Internet Keyboard Pro, Swedish +partial alphanumeric_keys +xkb_symbols "microsoftprose" { + include "inet(nav_common)" + key { [ XF86Reload ] }; + key { [ XF86HomePage ] }; + key { [ XF86AudioStop ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioMute ] }; + key { [ XF86Standby ] }; + key { [ XF86AudioStop ] }; + key { [ XF86MyComputer ] }; + key { [ XF86AudioMedia ] }; +}; + +// Microsoft Office Keyboard +partial alphanumeric_keys +xkb_symbols "microsoftoffice" { + include "inet(nav_acpi_common)" + key { [ XF86Calendar ] }; + key { [ Undo ] }; + key { [ XF86HomePage ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioMute ] }; + key { [ XF86Cut ] }; + key { [ XF86LogOff ] }; + key { [ XF86ApplicationLeft ] }; + key { [ XF86TaskPane ] }; + key { [ XF86Spell ] }; + key { [ XF86WWW ] }; + key { [ XF86New ] }; + key { [ XF86Open ] }; + key { [ XF86Close ] }; + key { [ Help ] }; + key { [ XF86Save ] }; + key { [ Print ] }; + key { [ XF86OfficeHome ] }; + key { [ Redo ] }; + key { [ XF86Reply ] }; + key { [ XF86MailForward ] }; + key { [ XF86Send ] }; + key { [ XF86Copy ] }; + key { [ XF86ApplicationRight ] }; + key { [ XF86Paste ] }; +}; + +// Microsoft Wireless Multimedia Keyboard 1.0A +partial alphanumeric_keys +xkb_symbols "microsoftmult" { + include "inet(media_nav_acpi_common)" + key { [ XF86Messenger ] }; + key { [ XF86New ] }; + key { [ XF86Open ] }; + key { [ XF86Close ] }; + key { [ XF86Reply ] }; + key { [ Redo ] }; + key { [ Undo ] }; + key { [ XF86LogOff ] }; + key { [ XF86Spell ] }; + key { [ Help ] }; + key { [ XF86Music ] }; + key { [ XF86Forward ] }; + key { [ XF86Send ] }; + key { [ XF86Save ] }; + key { [ Print ] }; + key { [ XF86Pictures ] }; + key { [ XF86Documents ] }; +}; + + +// Oretec + +// Oretec MCK-800 MM/Internet keyboard +partial alphanumeric_keys +xkb_symbols "oretec" { + include "inet(acpi_common)" + key { [ XF86ScrollUp ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86ScrollDown ] }; + key { [ XF86ZoomOut ] }; + key { [ XF86AudioMute ] }; + key { [ XF86WWW ] }; + key { [ Menu ] }; + key { [ XF86AudioStop ] }; + key { [ XF86Calculator ] }; + key { [ XF86Xfer ] }; + key { [ XF86Mail ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86ZoomIn ] }; + key { [ XF86AudioLowerVolume ] }; +}; + + +// Propeller + +// Propeller Voyager (KTEZ-1000) +partial alphanumeric_keys +xkb_symbols "propeller" { + include "inet(media_common)" + key { [ XF86AudioRewind ] }; + key { [ XF86Close ] }; + key { [ XF86Xfer ] }; + key { [ XF86AudioRecord ] }; + key { [ XF86Documents ] }; + key { [ XF86Game ] }; + key { [ XF86Calculator ] }; + key { [ Menu ] }; + key { [ XF86WWW ] }; + key { [ XF86DOS ] }; + key { [ XF86Standby ] }; +}; + + +// QTronix + +// QTronix Scorpius 98N+ +partial alphanumeric_keys +xkb_symbols "qtronix" { + key { [ XF86ScrollDown ] }; + key { [ XF86Forward ] }; + key { [ XF86WakeUp ] }; + key { [ XF86Search ] }; + key { [ XF86Standby ] }; + key { [ XF86ScrollUp ] }; + key { [ XF86Back ] }; + key { [ XF86Reload ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioStop ] }; + key { [ XF86HomePage ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRecord ] }; + key { [ XF86PowerOff ] }; + key { [ XF86Stop ] }; + key { [ XF86Calculator ] }; +}; + + +// Samsung + +// Samsung SDM 4500P +partial alphanumeric_keys +xkb_symbols "samsung4500" { + include "inet(media_nav_acpi_common)" + key { [ XF86Launch4 ] }; + key { [ XF86Launch1 ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Launch5 ] }; + key { [ XF86Close ] }; + key { [ XF86Book ] }; + key { [ XF86Eject ] }; + key { [ Help ] }; + key { [ XF86Explorer ] }; + key { [ XF86Launch2 ] }; +}; + +// Samsung SDM 4510P +partial alphanumeric_keys +xkb_symbols "samsung4510" { + include "inet(media_acpi_common)" + key { [ XF86Launch1 ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Eject ] }; + key { [ XF86Launch2 ] }; +}; + + +// SK + +// SK-1300 +partial alphanumeric_keys +xkb_symbols "sk1300" { + include "inet(media_common)" + key { [ XF86Eject ] }; + key { [ XF86Forward ] }; + key { [ XF86WWW ] }; + key { [ XF86Standby ] }; + key { [ XF86Back ] }; + key { [ XF86Stop ] }; +}; + +// SK-2500 +partial alphanumeric_keys +xkb_symbols "sk2500" { + include "inet(media_nav_common)" + key { [ XF86AudioRewind ] }; + key { [ XF86Close ] }; + key { [ XF86Eject ] }; + key { [ XF86Eject ] }; + key { [ XF86Forward ] }; + key { [ XF86AudioRecord ] }; + key { [ XF86Xfer ] }; + key { [ XF86PowerOff ] }; + key { [ Menu ] }; + key { [ XF86ScreenSaver ] }; +}; + +// SK-6200 +partial alphanumeric_keys +xkb_symbols "sk6200" { + include "inet(acpi_common)" + key { [ XF86Favorites ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86Back ] }; + key { [ XF86Forward ] }; + key { [ XF86WWW ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioStop ] }; + key { [ XF86Mail ] }; +}; + +// SK-7100 +partial alphanumeric_keys +xkb_symbols "sk7100" { + include "inet(media_common)" + key { [ XF86AudioPause ] }; + key { [ XF86Close ] }; + key { [ XF86Video ] }; + key { [ XF86Eject ] }; + key { [ XF86CD ] }; + key { [ XF86Display ] }; + key { [ XF86WWW ] }; +}; + + +// Sven + +// SVEN Ergonomic 2500 +partial alphanumeric_keys +xkb_symbols "sven" { + include "inet(acpi_common)" + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86Forward ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86ZoomOut ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioStop ] }; + key { [ XF86HomePage ] }; + key { [ XF86Mail ] }; + key { [ XF86ZoomIn ] }; + key { [ XF86MyComputer ] }; + key { [ XF86Stop ] }; + key { [ XF86ScreenSaver ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioMute ] }; + key { [ XF86Calculator ] }; + key { [ XF86Reload ] }; + key { [ XF86Search ] }; + key { [ XF86Favorites ] }; + key { [ XF86ScrollUp ] }; + key { [ XF86ScrollDown ] }; + key { [ XF86AudioNext ] }; + key { [ XF86Back ] }; +}; + +// SVEN Slim 303 +partial alphanumeric_keys +xkb_symbols "sven303" { + key { [ XF86PowerOff ] }; + key { [ XF86Sleep ] }; + key { [ XF86WakeUp ] }; +}; + + +// Symplon + +// Symplon PaceBook (tablet PC) +partial alphanumeric_keys +xkb_symbols "symplon" { + include "inet(nav_acpi_common)" + key { [ XF86RotationPB ] }; + key { [ XF86SplitScreen ] }; + key { [ XF86Support ] }; + key { [ XF86New ] }; + key { [ XF86User2KB ] }; + key { [ XF86RotationKB ] }; + key { [ XF86MenuKB ] }; + key { [ XF86User1KB ] }; + key { [ XF86UserPB ] }; + key { [ XF86MenuPB ] }; +}; + + +// Toshiba + +// Toshiba Satellite S3000 +partial alphanumeric_keys +xkb_symbols "toshiba_s3000" { + include "inet(media_common)" + // Describes the Special buttons on Toshiba Satellite 3000 models. + // See http://sourceforge.net/projects/omke for details on enabling + // these keys + key { [ XF86Launch1 ] }; + key { [ XF86Launch2 ] }; + key { [ XF86WWW ] }; + key { [ XF86Mail ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioLowerVolume ] }; +}; + + +// Trust + +// Trust Wireless Keyboard Classic +partial alphanumeric_keys +xkb_symbols "trust" { + include "inet(media_nav_acpi_common)" + key { [ XF86ScreenSaver ] }; + key { [ XF86Eject ] }; +}; + +// Trust Direct Access Keyboard +partial alphanumeric_keys +xkb_symbols "trustda" { + include "inet(media_common)" + key { [ XF86AudioRewind ] }; + key { [ XF86Close ] }; + key { [ XF86Eject ] }; + key { [ XF86AudioRecord ] }; + key { [ XF86Xfer ] }; + key { [ XF86Standby ] }; + key { [ Help ] }; + key { [ XF86WWW ] }; + key { [ XF86Away ] }; +}; + + +// YaHoo! + +// Yahoo! Internet Keyboard +partial alphanumeric_keys +xkb_symbols "yahoo" { + include "inet(acpi_common)" + key { [ XF86AudioPrev ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioStop ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioRecord ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioMute ] }; + key { [ XF86Close ] }; + key { [ XF86Calculator ] }; + key { [ Help ] }; + key { [ XF86Mail ] }; + key { [ XF86WWW ] }; +}; + + +// Apple keyboards (macbooks, powerbooks, powermac G5, etc) +partial alphanumeric_keys +xkb_symbols "apple" { +// Really brightness up/down + key { [ XF86BrightnessAdjust ] }; + key { [ XF86BrightnessAdjust ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86RotateWindows ] }; +// Really keyboard backlight off/up/down + key { [ XF86Launch0 ] }; + key { [ XF86Launch1 ] }; + key { [ XF86Launch2 ] }; + key { [ XF86PowerOff ] }; + key { [ F13 ] }; + key { [ F14 ] }; + key { [ F15 ] }; + key { [ XF86Eject ] }; + key { [ F16 ] }; + key { [ KP_Equal ] }; +}; + +partial alphanumeric_keys +xkb_symbols "cymotionlinux" { + include "inet(media_nav_acpi_common)" + key { [ Undo ] }; + key { [ Redo ] }; + key { [ XF86ScrollDown ] }; + key { [ XF86Launch2 ] }; + key { [ XF86Launch1 ] }; + key { [ XF86MenuKB ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Cut ] }; + key { [ XF86Copy ] }; + key { [ XF86Paste ] }; + key { [ XF86ScrollUp ] }; + key { [ XF86AudioMedia ] }; +}; + +partial alphanumeric_keys +xkb_symbols "silvercrest" { + include "inet(media_nav_acpi_common)" + key { [ XF86HomePage ] }; + key { [ XF86Launch2 ] }; + key { [ XF86Launch1 ] }; +}; + + +// eMachines + +partial alphanumeric_keys +xkb_symbols "emachines" { + include "inet(media_nav_acpi_common)" + key { [ XF86iTouch ] }; + key { [ KP_0 ] }; + key { [ KP_1 ] }; + key { [ KP_2 ] }; + key { [ KP_3 ] }; + key { [ KP_4 ] }; + key { [ KP_5 ] }; + key { [ KP_6 ] }; + key { [ KP_7 ] }; + key { [ KP_8 ] }; + key { [ KP_9 ] }; + key { [ KP_Add ] }; + key { [ KP_Decimal ] }; + key { [ KP_Divide ] }; + key { [ KP_Multiply ] }; + key { [ KP_Subtract ] }; +}; + + +// BenQ + +// BenQ X* (X730, X500, X800) +// +// To make the FN_LOCK and CONFIG key work on the BenQ X500 , use: +// setkeycodes e074 130 # KEY_PROPS from /usr/include/linux/input.h +// setkeycodes e075 171 # KEY_CONFIG from /usr/include/linux/input.h +partial alphanumeric_keys +xkb_symbols "benqx" { + include "inet(media_nav_acpi_common)" + key { [ XF86ModeLock ] }; + key { [ XF86WWW ] }; + key { [ XF86Go ] }; + key { [ XF86Calendar ] }; +}; + + +// Intel + +// Intel Classmate +partial alphanumeric_keys +xkb_symbols "classmate" { + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; +}; + + +// Unitek + +partial alphanumeric_keys +xkb_symbols "unitekkb1925" { + include "inet(media_nav_common)" + key { [ XF86AudioMute ] }; + key { [ XF86PowerOff ] }; + key { [ XF86Sleep ] }; + key { [ XF86WakeUp ] }; + key { [ XF86Search ] }; + key { [ XF86Reload ] }; +}; + + +// Creative + +// Creative Desktop Wireless 7000 +partial alphanumeric_keys +xkb_symbols "creativedw7000" { + include "inet(media_nav_acpi_common)" + key { [ XF86Pictures ] }; +}; + + +// Compal + +// Compal FL90 +partial alphanumeric_keys +xkb_symbols "compalfl90" { + include "inet(media_nav_acpi_common)" + key { [ XF86MonBrightnessUp ] }; + key { [ XF86MonBrightnessDown ] }; +}; + +partial alphanumeric_keys +xkb_symbols "pc105" { + include "inet(media_nav_acpi_common)" +}; + + +// HTC Dream +partial alphanumeric_keys +xkb_symbols "htcdream" { + key { [ BackSpace ] }; + key { [ Return ] }; + + key { [ 1, 1, exclam, exclam ] }; + key { [ 2, 2, at, at ] }; + key { [ 3, 3, numbersign, numbersign ] }; + key { [ 4, 4, dollar, dollar ] }; + key { [ 5, 5, percent, percent ] }; + key { [ 6, 6, dead_circumflex, dead_circumflex ] }; + key { [ 7, 7, ampersand, ampersand ] }; + key { [ 8, 8, asterisk, asterisk ] }; + key { [ 9, 9, parenleft, parenleft ] }; + key { [ 0, 0, parenright, parenright ] }; + + key { [ Shift_L ] }; + key { [ space ] }; + key { [ period, period, slash, slash ] }; + key { [ Shift_R ] }; + + modifier_map Shift { , }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/keypad b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/keypad new file mode 100644 index 0000000..1efc02b --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/keypad @@ -0,0 +1,625 @@ +hidden partial keypad_keys +xkb_symbols "overlay" { + include "keypad(overlay1)" +}; + +hidden partial keypad_keys +xkb_symbols "overlay1" { + + key { [ KP_Home ], overlay1= }; + key { [ KP_Up ], overlay1= }; + key { [ KP_Prior ], overlay1= }; + + key { [ KP_Left ], overlay1= }; + key { [ KP_Begin ], overlay1= }; + key { [ KP_Right ], overlay1= }; + + key { [ KP_End ], overlay1= }; + key { [ KP_Down ], overlay1= }; + key { [ KP_Next ], overlay1= }; + + key { [ KP_Insert ], overlay1= }; + key { [ KP_Delete ], overlay1= }; + + key { [ KP_7 ] }; + key { [ KP_8 ] }; + key { [ KP_9 ] }; + + key { [ KP_4 ] }; + key { [ KP_5 ] }; + key { [ KP_6 ] }; + + key { [ KP_1 ] }; + key { [ KP_2 ] }; + key { [ KP_3 ] }; + + key { [ KP_0 ] }; + key { [ KP_Decimal ] }; +}; + +hidden partial keypad_keys +xkb_symbols "overlay2" { + + key { [ KP_Home ], overlay2= }; + key { [ KP_Up ], overlay2= }; + key { [ KP_Prior ], overlay2= }; + + key { [ KP_Left ], overlay2= }; + key { [ KP_Begin ], overlay2= }; + key { [ KP_Right ], overlay2= }; + + key { [ KP_End ], overlay2= }; + key { [ KP_Down ], overlay2= }; + key { [ KP_Next ], overlay2= }; + + key { [ KP_Insert ], overlay2= }; + key { [ KP_Delete ], overlay2= }; + + key { [ KP_7 ] }; + key { [ KP_8 ] }; + key { [ KP_9 ] }; + + key { [ KP_4 ] }; + key { [ KP_5 ] }; + key { [ KP_6 ] }; + + key { [ KP_1 ] }; + key { [ KP_2 ] }; + key { [ KP_3 ] }; + + key { [ KP_0 ] }; + key { [ KP_Decimal ] }; +}; + +hidden partial keypad_keys +xkb_symbols "operators" { + // Puts some commands to control the X server on + // the fifth level of the keypad's operator keys. + key { + type="CTRL+ALT", // Ungrab cancels server/keyboard/pointer grabs + symbols[Group1]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86_Ungrab ] + }; + key { + type="CTRL+ALT", // ClsGrb kills whichever client has a grab in effect + symbols[Group1]= [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86_ClearGrab ] + }; + key { + type="CTRL+ALT", // -VMode switches to the previous video mode + symbols[Group1]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86_Prev_VMode ] + }; + key { + type="CTRL+ALT", // +VMode switches to the next video mode + symbols[Group1]= [ KP_Add, KP_Add, KP_Add, KP_Add, XF86_Next_VMode ] + }; +}; + +default hidden partial keypad_keys +xkb_symbols "x11" { + + include "keypad(operators)" + + key { [ KP_Home, KP_7 ] }; + key { [ KP_Up, KP_8 ] }; + key { [ KP_Prior, KP_9 ] }; + + key { [ KP_Left, KP_4 ] }; + key { [ KP_Begin, KP_5 ] }; + key { [ KP_Right, KP_6 ] }; + + key { [ KP_End, KP_1 ] }; + key { [ KP_Down, KP_2 ] }; + key { [ KP_Next, KP_3 ] }; + key { [ KP_Enter ] }; + key { [ KP_Equal ] }; + + key { [ KP_Insert, KP_0 ] }; + key { [ KP_Delete, KP_Decimal ] }; + key { [ KP_Decimal, KP_Decimal ] }; +}; + + +// Legacy PC keypad definition +// Copyright © 2006-2007 Nicolas Mailhot +keypad_keys +xkb_symbols "legacy" { + + include "keypad(core)" + include "keypad(legacymath)" + include "keypad(legacynumber)" + include "kpdl(dot)" +}; + + +// Legacy Wang 725-3771-ae and 725-3771-uk keypad definition +// Copyright © 2006-2007 Nicolas Mailhot +keypad_keys +xkb_symbols "legacy_wang" { + + include "keypad(core)" + include "keypad(legacymath)" + include "keypad(legacynumber_wang)" + include "kpdl(dot)" +}; + + +// Complete new keypad definition +// Copyright © 2006-2007 Nicolas Mailhot +keypad_keys +xkb_symbols "oss" { + + include "keypad(core)" + include "keypad(ossmath)" + include "keypad(ossnumber)" + include "kpdl(dotoss)" +}; + + +// Latin9 restriction of new keypad definition +// Copyright © 2006-2007 Nicolas Mailhot +keypad_keys +xkb_symbols "oss_latin9" { + + include "keypad(core)" + include "keypad(ossmath_latin9)" + include "keypad(legacynumber)" + include "kpdl(dotoss_latin9)" +}; + + +// Wang 725-3771-ae and 725-3771-uk keypad variant of oss keypad +// Copyright © 2006-2007 Nicolas Mailhot +keypad_keys +xkb_symbols "oss_wang" { + + include "keypad(core)" + include "keypad(ossmath)" + include "keypad(ossnumber_wang)" + include "kpdl(dotoss)" +}; + + +// Forward-looking keypad definition +// Won't work with applications that make ASCII assumptions +// Copyright © 2007 Nicolas Mailhot +keypad_keys +xkb_symbols "future" { + + include "keypad(core)" + include "keypad(futuremath)" + include "keypad(ossnumber)" + include "kpdl(commaoss)" +}; + + +// Forward-looking keypad definition +// Won't work with applications that make ASCII assumptions +// Copyright © 2007 Nicolas Mailhot +keypad_keys +xkb_symbols "future_wang" { + + include "keypad(core)" + include "keypad(futuremath)" + include "keypad(ossnumber_wang)" + include "kpdl(commaoss)" +}; + + +// Keypad keys nobody changes +// Copyright © 2006 Nicolas Mailhot +partial keypad_keys +xkb_symbols "core" { + + modifier_map Mod2 { Num_Lock }; + + key { [ Num_Lock ] }; + key { [ KP_Enter ] }; + key { [ KP_Equal ] }; +}; + + +// Legacy keypad math area +// Copyright © 2006 Nicolas Mailhot +// +// ┏━━━━━┱─────┬─────┬─────┐ +// ┃Num ┃ ₁ │ ₂ │ ₃ │ ₁ +// ┃Lock⇭┃ / │ * │ - │ ₂ +// ┡━━━━━╃─────┼─────┼─────┤ ₃ +// │ ₄ │ ₄ +// │ │ +// ┤ │ 1 None +// │ │ 2 Ctrl+Alt +// │ + │ +// ╆━━━━━┪ +partial keypad_keys +xkb_symbols "legacymath" { + + key.type[Group1]="CTRL+ALT" ; + + key { [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86_Ungrab ] }; // / + key { [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86_ClearGrab ] }; // * + key { [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86_Prev_VMode ] }; // - + + key { [ KP_Add, KP_Add, KP_Add, KP_Add, XF86_Next_VMode ] }; // + +}; + + +// Keypad math area with non-CS operators +// Copyright © 2006 Nicolas Mailhot +// +// ┏━━━━━┱─────┬─────┬─────┐ +// ┃Num ┃ ∕ ₁ │ . ₂ │ − ₃ │ ₁ +// ┃Lock⇭┃ / ÷ │ * × │ - − │ ₂ +// ┡━━━━━╃─────┼─────┼─────┤ ₃ +// │ + ₄ │ ₄ +// │ │ +// ┤ │ 1 None +// │ │ 2 Level3 ⇮ +// │ + + │ 3 Shift+Level3 ⇧⇮ +// ╆━━━━━┪ 4 Ctrl+Alt +partial keypad_keys +xkb_symbols "ossmath" { + + key.type[Group1]="CTRL+ALT" ; + + key { [ KP_Divide, 0x1002215, 0x10000F7, VoidSymbol, XF86_Ungrab ] }; // / ∕ ÷ + key { [ KP_Multiply, 0x10022C5, 0x10000D7, VoidSymbol, XF86_ClearGrab ] }; // * ⋅ × + key { [ KP_Subtract, 0x1002212, 0x1002212, VoidSymbol, XF86_Prev_VMode ] }; // - − − + + key { [ KP_Add, 0x100002B, 0x100002B, VoidSymbol, XF86_Next_VMode ] }; // + + + +}; + + +// Keypad math area with non-CS operators in first levels +// As demanded by users not interested in legacy pre-unicode junk +// Copyright © 2007 Nicolas Mailhot +// +// ┏━━━━━┱─────┬─────┬─────┐ +// ┃Num ┃ / ₁ │ * ₂ │ - ₃ │ ₁ +// ┃Lock⇭┃ ∕ ÷ │ . × │ − − │ ₂ +// ┡━━━━━╃─────┼─────┼─────┤ ₃ +// │ + ₄ │ ₄ +// │ │ +// ┤ │ 1 None +// │ │ 2 Level3 ⇮ +// │ + + │ 3 Shift+Level3 ⇧⇮ +// ╆━━━━━┪ 4 Ctrl+Alt +partial keypad_keys +xkb_symbols "futuremath" { + + key.type[Group1]="FOUR_LEVEL_X" ; + + key { [ 0x1002215, KP_Divide, 0x10000F7, XF86_Ungrab ] }; // ∕ / ÷ + key { [ 0x10022C5, KP_Multiply, 0x10000D7, XF86_ClearGrab ] }; // ⋅ * × + key { [ 0x1002212, KP_Subtract, 0x1002212, XF86_Prev_VMode ] }; // − - − + + key { [ 0x100002B, KP_Add, 0x100002B, XF86_Next_VMode ] }; // + + + +}; + + +// Keypad math area with non-CS operators, restricted to latin9 +// Copyright © 2006 Nicolas Mailhot +// +// ┏━━━━━┱─────┬─────┬─────┐ +// ┃Num ┃ / ₁ │ · ₂ │ - ₃ │ ₁ +// ┃Lock⇭┃ / ÷ │ * × │ - - │ ₂ +// ┡━━━━━╃─────┼─────┼─────┤ ₃ +// │ + ₄ │ ₄ +// │ │ +// ┤ │ 1 None +// │ │ 2 Level3 ⇮ +// │ + + │ 3 Shift+Level3 ⇧⇮ +// ╆━━━━━┪ 4 Ctrl+Alt +partial keypad_keys +xkb_symbols "ossmath_latin9" { + + key.type[Group1]="FOUR_LEVEL_X"; + + key { [ KP_Divide, slash, division, XF86_Ungrab ] }; // / / ÷ + key { [ KP_Multiply, periodcentered, multiply, XF86_ClearGrab ] }; // * · × + key { [ KP_Subtract, minus, minus, XF86_Prev_VMode ] }; // - - - + + key { [ KP_Add, plus, plus, XF86_Next_VMode ] }; // + + + +}; + + +// Legacy keypad number area +// Copyright © 2006 Nicolas Mailhot +// +// ┏━━━━━┱ +// ┃Num ┃ ⇱ Home +// ┃Lock⇭┃ ⇲ End +// ┡━━━━━╃─────┼─────┼ ⇞ Page up +// │ 7 │ 8 │ 9 │ ⇟ Page down +// │ ⇱ │ ⇧ │ ⇞ │ ⎀ Insert +// ├─────┼─────┼─────┤ ␥ Delete +// │ 4 │ 5 │ 6 │ ⇦⇧⇨⇩ Directions +// │ ⇦ │ │ ⇨ │ +// ├─────┼─────┼─────╆ +// │ 1 │ 2 │ 3 ┃ +// │ ⇲ │ ⇩ │ ⇟ ┃ 1 None +// ├─────┴─────┼─────┨ 2 Num Lock ⇭ +// │ 0 │ +// │ ⎀ │ +// └───────────┴ +partial keypad_keys +xkb_symbols "legacynumber" { + + key.type[Group1]="KEYPAD" ; + + key { [ KP_Home, KP_7 ] }; // 7 + key { [ KP_Up, KP_8 ] }; // 8 + key { [ KP_Prior, KP_9 ] }; // 9 + + key { [ KP_Left, KP_4 ] }; // 4 + key { [ KP_Begin, KP_5 ] }; // 5 + key { [ KP_Right, KP_6 ] }; // 6 + + key { [ KP_End, KP_1 ] }; // 1 + key { [ KP_Down, KP_2 ] }; // 2 + key { [ KP_Next, KP_3 ] }; // 3 + + key { [ KP_Insert, KP_0 ] }; // 0 +}; + + +// Legacy Wang 725-3771-ae and 725-3771-uk keypad number area +// Copyright © 2007 Nicolas Mailhot +// This is actually a three-level keypad, declared as four-level +// to avoid defining a new type +// +// ┏━━━━━┱ +// ┃Num ┃ ⇱ Home +// ┃Lock⇭┃ ⇲ End +// ┡━━━━━╃─────┼─────┼ ⇞ Page up +// │ 7 │ 8 │ 9 │ ⇟ Page down +// │ ⇱ < │ ⇧ > │ ⇞ ^ │ ⎀ Insert +// ├─────┼─────┼─────┤ ␥ Delete +// │ 4 │ 5 │ 6 │ ⇦⇧⇨⇩ Directions +// │ ⇦ [ │ ] │ ⇨ $ │ +// ├─────┼─────┼─────╆ +// │ 1 │ 2 │ 3 ┃ +// │ ⇲ & │ ⇩ @ │ ⇟ # ┃ 1 None +// ├─────┴─────┼─────┨ 2 Num Lock ⇭ +// │ 0 │ 3 Level3 ⇮ +// │ ⎀ │ +// └───────────┴ +partial keypad_keys +xkb_symbols "legacynumber_wang" { + + key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; + + key { [ KP_Home, KP_7, less ] }; // 7 < + key { [ KP_Up, KP_8, greater ] }; // 8 > + key { [ KP_Prior, KP_9, asciicircum ] }; // 9 ^ + + key { [ KP_Left, KP_4, bracketleft ] }; // 4 [ + key { [ KP_Begin, KP_5, bracketright ] }; // 5 ] + key { [ KP_Right, KP_6, dollar ] }; // 6 $ + + key { [ KP_End, KP_1, ampersand ] }; // 1 & + key { [ KP_Down, KP_2, at ] }; // 2 @ + key { [ KP_Next, KP_3, numbersign ] }; // 3 # + + key { [ KP_Insert, KP_0, apostrophe ] }; // 0 ' +}; + + +// Keypad number area with arrow symbols +// Copyright © 2006 Nicolas Mailhot +// +// ┏━━━━━┱ +// ┃Num ┃ ⇱ Home +// ┃Lock⇭┃ ⇲ End +// ┡━━━━━╃─────┼─────┼ ⇞ Page up +// │ 7 ⇖ │ 8 ⇑ │ 9 ⇗ │ ⇟ Page down +// │ ⇱ ↖ │ ⇧ ↑ │ ⇞ ↗ │ ⎀ Insert +// ├─────┼─────┼─────┤ ␥ Delete +// │ 4 ⇐ │ 5 ⇔ │ 6 ⇒ │ ⇦⇧⇨⇩ Directions +// │ ⇦ ← │ ↔ │ ⇨ → │ ⍽ narrow no-break space +// ├─────┼─────┼─────╆ +// │ 1 ⇙ │ 2 ⇓ │ 3 ⇘ ┃ +// │ ⇲ ↙ │ ⇩ ↓ │ ⇟ ↘ ┃ 1 None +// ├─────┴─────┼─────┨ 2 Num Lock ⇭ +// │ 0 ⇕ │ 3 Level3 ⇮ +// │ ⎀ ↕ │ 4 Shift+Level3 ⇧⇮ +// └───────────┴ +partial keypad_keys +xkb_symbols "ossnumber" { + + key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; + + key { [ KP_Home, KP_7, 0x1002196, 0x10021D6 ] }; // 7 ↖ ⇖ + key { [ KP_Up, KP_8, 0x1002191, 0x10021D1 ] }; // 8 ↑ ⇑ + key { [ KP_Prior, KP_9, 0x1002197, 0x10021D7 ] }; // 9 ↗ ⇗ + + key { [ KP_Left, KP_4, 0x1002190, 0x10021D0 ] }; // 4 ← ⇐ + key { [ KP_Begin, KP_5, 0x1002194, 0x10021D4 ] }; // 5 ↔ ⇔ + key { [ KP_Right, KP_6, 0x1002192, 0x10021D2 ] }; // 6 → ⇒ + + key { [ KP_End, KP_1, 0x1002199, 0x10021D9 ] }; // 1 ↙ ⇙ + key { [ KP_Down, KP_2, 0x1002193, 0x10021D3 ] }; // 2 ↓ ⇓ + key { [ KP_Next, KP_3, 0x1002198, 0x10021D8 ] }; // 3 ↘ ⇘ + + key { [ KP_Insert, KP_0, 0x1002195, 0x10021D5 ] }; // 0 ↕ ⇕ +}; + + +// Wang 725-3771-ae and 725-3771-uk keypad number area with additional arrow symbols +// Copyright © 2007 Nicolas Mailhot +// +// ┏━━━━━┱ +// ┃Num ┃ ⇱ Home +// ┃Lock⇭┃ ⇲ End +// ┡━━━━━╃─────┼─────┼ ⇞ Page up +// │ 7 ↖ │ 8 ↑ │ 9 ↗ │ ⇟ Page down +// │ ⇱ < │ ⇧ > │ ⇞ ^ │ ⎀ Insert +// ├─────┼─────┼─────┤ ␥ Delete +// │ 4 ← │ 5 ↔ │ 6 → │ ⇦⇧⇨⇩ Directions +// │ ⇦ [ │ ] │ ⇨ $ │ ⍽ narrow no-break space +// ├─────┼─────┼─────╆ +// │ 1 ↙ │ 2 ↓ │ 3 ↘ ┃ +// │ ⇲ & │ ⇩ @ │ ⇟ # ┃ 1 None +// ├─────┴─────┼─────┨ 2 Num Lock ⇭ +// │ 0 ↕ │ 3 Level3 ⇮ +// │ ⎀ ' │ 4 Shift+Level3 ⇧⇮ +// └───────────┴ +partial keypad_keys +xkb_symbols "ossnumber_wang" { + + key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; + + key { [ KP_Home, KP_7, less, 0x1002196 ] }; // 7 < ↖ + key { [ KP_Up, KP_8, greater, 0x1002191 ] }; // 8 > ↑ + key { [ KP_Prior, KP_9, asciicircum, 0x1002197 ] }; // 9 ^ ↗ + + key { [ KP_Left, KP_4, bracketleft, 0x1002190 ] }; // 4 [ ← + key { [ KP_Begin, KP_5, bracketright, 0x1002194 ] }; // 5 ] ↔ + key { [ KP_Right, KP_6, dollar, 0x1002192 ] }; // 6 $ → + + key { [ KP_End, KP_1, ampersand, 0x1002199 ] }; // 1 & ↙ + key { [ KP_Down, KP_2, at, 0x1002193 ] }; // 2 @ ↓ + key { [ KP_Next, KP_3, numbersign, 0x1002198 ] }; // 3 # ↘ + + key { [ KP_Insert, KP_0, apostrophe, 0x1002195 ] }; // 0 ' ↕ +}; + +// Standard base "pc" layout only contains cursor keys, and then gets +// augmented with the digits later. If you define your own layout for +// the numpad you can inherit the cursors, but you'll have to define +// the digits yourself. This module can be included in the rules to +// define math operators; these are the variants used in computer +// languages that are based on ASCII. NoSymbol doesn't mean that +// nothing is bound to the key but that no assignment is done here. +// srvr_ctrl(stdkeypad) and keypad(x11) declare the operator keys to +// be of type CTRL+ALT in order to assign server control events to +// them, but it uses the second level which is overwritten if we have +// more than one definition (shift state) for the key. Instead, here +// the commands are put at the fourth level. +partial keypad_keys +xkb_symbols "ops" { + key { [ NoSymbol, slash, NoSymbol, XF86_Ungrab ] }; + key { [ NoSymbol, asterisk, NoSymbol, XF86_ClearGrab ] }; + key { [ NoSymbol, minus, NoSymbol, XF86_Prev_VMode ] }; + key { [ NoSymbol, plus, NoSymbol, XF86_Next_VMode ] }; + key { [ NoSymbol, equal ] }; +}; + +// Hexadecimal Numpad, by Roland Kaufmann +// License: BSD (also covers variant with ATM digit order) +// Third-level gives the letters used in hexadecimal numbers, or +// columns in small spreadsheets. As a bonus, having 'e' available at +// the center of the keyboard makes it easy to enter floating point +// numbers in scientific notation. +// Equal is added to start formulas (most numpads on PCs don't have +// their own equal key), comma as a list separator (as most +// programming languages wants period as a decimal separator) and +// colon to enter times and ranges. Someone also may want to represent +// multiplication and division in prose using x and colon. +// Two first levels are specified as NoSymbol to not override any +// previous specification. Combine this with another keypad specifier, +// e.g. "legacy". +partial keypad_keys +xkb_symbols "hex" { + key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; + + // None NumLock AltGr + // symbol row + key { [ NoSymbol, NoSymbol, parenleft ] }; + key { [ NoSymbol, NoSymbol, parenright ] }; + key { [ NoSymbol, NoSymbol, dollar ] }; + + // upper row + key { [ NoSymbol, NoSymbol, a ] }; + key { [ NoSymbol, NoSymbol, b ] }; + key { [ NoSymbol, NoSymbol, c ] }; + + // home row + key { [ NoSymbol, NoSymbol, d ] }; + key { [ NoSymbol, NoSymbol, e ] }; + key { [ NoSymbol, NoSymbol, f ] }; + key { [ NoSymbol, NoSymbol, comma ] }; + + // lower row + key { [ NoSymbol, NoSymbol, equal ] }; + key { [ NoSymbol, NoSymbol, x ] }; + key { [ NoSymbol, NoSymbol, colon ] }; + + // decimal row + key { [ NoSymbol, NoSymbol, backslash ] }; +}; + +// Main numbers follows the traditions from ATMs and phones with +// numbers increasing downwards to the right. (It is easier to +// change the keyboard layout than to reprogram your local ATM; +// also cell-phones are becoming more common while calculators are +// becoming more rare). +// First level is left unspecified, so it may be combined with another +// layout, e.g. "legacy". +partial keypad_keys +xkb_symbols "atm" { + // upper row + key { [ NoSymbol, KP_1 ] }; + key { [ NoSymbol, KP_2 ] }; + key { [ NoSymbol, KP_3 ] }; + + // lower row + key { [ NoSymbol, KP_7 ] }; + key { [ NoSymbol, KP_8 ] }; + key { [ NoSymbol, KP_9 ] }; +}; + + +partial modifier_keys +xkb_symbols "pointerkeys" { + key { [ Num_Lock, Pointer_EnableKeys ] }; +}; + + +// Only numbers, operators and decimal separator, +// as seen on keypad overlay on Japanese keyboard. +// ┌─┬─┬─┬─┐ +// │7│8│9│*│ +// ├─┼─┼─┼─┤ +// │4│5│6│-│ +// ├─┼─┼─┼─┤ +// │1│2│3│+│ +// ├─┼─┼─┼─┤ +// │0│ │·│/│ +// └─┴─┴─┴─┘ +partial keypad_keys +xkb_symbols "numoperdecsep" { + key { [ KP_7 ] }; + key { [ KP_8 ] }; + key { [ KP_9 ] }; +// ClsGrb kills whichever client has a grab in effect + key { + type="CTRL+ALT", + symbols[Group1]= [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86_ClearGrab ] + }; + + key { [ KP_4 ] }; + key { [ KP_5 ] }; + key { [ KP_6 ] }; +// -VMode switches to the previous video mode + key { + type="CTRL+ALT", + symbols[Group1]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86_Prev_VMode ] + }; + + key { [ KP_1 ] }; + key { [ KP_2 ] }; + key { [ KP_3 ] }; +// +VMode switches to the next video mode + key { + type="CTRL+ALT", + symbols[Group1]= [ KP_Add, KP_Add, KP_Add, KP_Add, XF86_Next_VMode ] + }; + + key { [ KP_0 ] }; + key { [ KP_Decimal ] }; +// Ungrab cancels server/keyboard/pointer grabs + key { + type="CTRL+ALT", + symbols[Group1]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86_Ungrab ] + }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/kpdl b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/kpdl new file mode 100644 index 0000000..968dbd2 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/kpdl @@ -0,0 +1,102 @@ +// The key is a mess. +// It was probably originally meant to be a decimal separator. +// Except since it was declared by USA people it didn't use the original +// SI separator "," but a "." (since then the USA managed to f-up the SI +// by making "." an accepted alternative, but standards still use "," as +// default) +// As a result users of SI-abiding countries expect either a "." or a "," +// or a "decimal_separator" which may or may not be translated in one of the +// above depending on applications. +// It's not possible to define a default per-country since user expectations +// depend on the conflicting choices of their most-used applications, +// operating system, etc. Therefore it needs to be a configuration setting +// Copyright © 2007 Nicolas Mailhot + + +// Legacy #1 +// This assumes KP_Decimal will be translated in a dot +partial keypad_keys +xkb_symbols "dot" { + + key.type[Group1]="KEYPAD" ; + + key { [ KP_Delete, KP_Decimal ] }; // +}; + + +// Legacy #2 +// This assumes KP_Separator will be translated in a comma +partial keypad_keys +xkb_symbols "comma" { + + key.type[Group1]="KEYPAD" ; + + key { [ KP_Delete, KP_Separator ] }; // +}; + + +// Period , usual keyboard serigraphy in most countries +partial keypad_keys +xkb_symbols "dotoss" { + + key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; + + key { [ KP_Delete, period, comma, 0x100202F ] }; // . , ⍽ (narrow no-break space) +}; + + +// Period , usual keyboard serigraphy in most countries, latin-9 restriction +partial keypad_keys +xkb_symbols "dotoss_latin9" { + + key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; + + key { [ KP_Delete, period, comma, nobreakspace ] }; // . , ⍽ (no-break space) +}; + + +// Comma , what most non anglo-saxon people consider the real separator +partial keypad_keys +xkb_symbols "commaoss" { + + key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; + + key { [ KP_Delete, comma, period, 0x100202F ] }; // , . ⍽ (narrow no-break space) +}; + + +// Momayyez : Bahrain, Iran, Iraq, Kuwait, Oman, Qatar, Saudi Arabia, Syria, UAE +partial keypad_keys +xkb_symbols "momayyezoss" { + + key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; + + key { [ KP_Delete, 0x100066B, comma, 0x100202F ] }; // ? , ⍽ (narrow no-break space) +}; + + +// Abstracted , pray everything will work out (it usually does not) +partial keypad_keys +xkb_symbols "kposs" { + + key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; + + key { [ KP_Delete, KP_Decimal, KP_Separator, 0x100202F ] }; // ? ? ⍽ (narrow no-break space) +}; + +// Spreadsheets may be configured to use the dot as decimal +// punctuation, comma as a thousands separator and then semi-colon as +// the list separator. Of these, dot and semi-colon is most important +// when entering data by the keyboard; the comma can then be inferred +// and added to the presentation afterwards. Using semi-colon as a +// general separator may in fact be preferred to avoid ambiguities +// in data files. Most times a decimal separator is hard-coded, it +// seems to be period, probably since this is the syntax used in +// (most) programming languages. +partial keypad_keys +xkb_symbols "semi" { + + key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; + + key { [ NoSymbol, NoSymbol, semicolon ] }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/latin b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/latin new file mode 100644 index 0000000..25a7d73 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/latin @@ -0,0 +1,256 @@ +// Common Latin alphabet layout + +default partial +xkb_symbols "basic" { + + key { [ 1, exclam, onesuperior, exclamdown ] }; + key { [ 2, at, twosuperior, oneeighth ] }; + key { [ 3, numbersign, threesuperior, sterling ] }; + key { [ 4, dollar, onequarter, dollar ] }; + key { [ 5, percent, onehalf, threeeighths ] }; + key { [ 6, asciicircum, threequarters, fiveeighths ] }; + key { [ 7, ampersand, braceleft, seveneighths ] }; + key { [ 8, asterisk, bracketleft, trademark ] }; + key { [ 9, parenleft, bracketright, plusminus ] }; + key { [ 0, parenright, braceright, degree ] }; + key { [ minus, underscore, backslash, questiondown ] }; + key { [ equal, plus, dead_cedilla, dead_ogonek ] }; + + key { [ q, Q, at, Greek_OMEGA ] }; + key { [ w, W, lstroke, Lstroke ] }; + key { [ e, E, e, E ] }; + key { [ r, R, paragraph, registered ] }; + key { [ t, T, tslash, Tslash ] }; + key { [ y, Y, leftarrow, yen ] }; + key { [ u, U, downarrow, uparrow ] }; + key { [ i, I, rightarrow, idotless ] }; + key { [ o, O, oslash, Ooblique ] }; + key { [ p, P, thorn, THORN ] }; + key { [bracketleft, braceleft, dead_diaeresis, dead_abovering ] }; + key { [bracketright, braceright, dead_tilde, dead_macron ] }; + + key { [ a, A, ae, AE ] }; + key { [ s, S, ssharp, section ] }; + key { [ d, D, eth, ETH ] }; + key { [ f, F, dstroke, ordfeminine ] }; + key { [ g, G, eng, ENG ] }; + key { [ h, H, hstroke, Hstroke ] }; + key { [ j, J, dead_hook, dead_horn ] }; + key { [ k, K, kra, ampersand ] }; + key { [ l, L, lstroke, Lstroke ] }; + key { [ semicolon, colon, dead_acute, dead_doubleacute ] }; + key { [apostrophe, quotedbl, dead_circumflex, dead_caron ] }; + key { [ grave, asciitilde, notsign, notsign ] }; + + key { [ backslash, bar, dead_grave, dead_breve ] }; + key { [ z, Z, guillemotleft, less ] }; + key { [ x, X, guillemotright, greater ] }; + key { [ c, C, cent, copyright ] }; + key { [ v, V, leftdoublequotemark, leftsinglequotemark ] }; + key { [ b, B, rightdoublequotemark, rightsinglequotemark ] }; + key { [ n, N, n, N ] }; + key { [ m, M, mu, masculine ] }; + key { [ comma, less, horizconnector, multiply ] }; + key { [ period, greater, periodcentered, division ] }; + key { [ slash, question, dead_belowdot, dead_abovedot ] }; + +}; + +// Northern Europe ( Danish, Finnish, Norwegian, Swedish) common layout + +partial +xkb_symbols "type2" { + + include "latin" + + key { [ 1, exclam, exclamdown, onesuperior ] }; + key { [ 2, quotedbl, at, twosuperior ] }; + key { [ 3, numbersign, sterling, threesuperior] }; + key { [ 4, currency, dollar, onequarter ] }; + key { [ 5, percent, onehalf, cent ] }; + key { [ 6, ampersand, yen, fiveeighths ] }; + key { [ 7, slash, braceleft, division ] }; + key { [ 8, parenleft, bracketleft, guillemotleft] }; + key { [ 9, parenright, bracketright, guillemotright] }; + key { [ 0, equal, braceright, degree ] }; + + key { [ e, E, EuroSign, cent ] }; + key { [ r, R, registered, registered ] }; + key { [ t, T, thorn, THORN ] }; + key { [ o, O, oe, OE ] }; + key { [ aring, Aring, dead_diaeresis, dead_abovering ] }; + key { [dead_diaeresis, dead_circumflex, dead_tilde, dead_caron ] }; + + key { [ a, A, ordfeminine, masculine ] }; + + key { [ c, C, copyright, copyright ] }; + key { [ comma, semicolon, dead_cedilla, dead_ogonek ] }; + key { [ period, colon, periodcentered, dead_abovedot ] }; + key { [ minus, underscore, dead_belowdot, dead_abovedot ] }; +}; + +// Slavic Latin ( Albanian, Croatian, Polish, Slovene, Yugoslav) +// common layout + +partial +xkb_symbols "type3" { + + include "latin" + + key { [ q, Q, backslash, Greek_OMEGA ] }; + key { [ w, W, bar, Lstroke ] }; + key { [ z, Z, leftarrow, yen ] }; + + key { [ f, F, bracketleft, ordfeminine ] }; + key { [ g, G, bracketright, ENG ] }; + key { [ k, K, lstroke, ampersand ] }; + + key { [ y, Y, guillemotleft, less ] }; + key { [ v, V, at, grave ] }; + key { [ b, B, braceleft, apostrophe ] }; + key { [ n, N, braceright, braceright ] }; + key { [ m, M, section, masculine ] }; + key { [ comma, semicolon, less, multiply ] }; + key { [ period, colon, greater, division ] }; +}; + +// Another common Latin layout +// (German, Estonian, Spanish, Icelandic, Italian, Latin American, Portuguese) + +partial +xkb_symbols "type4" { + + include "latin" + + key { [ 2, quotedbl, at, oneeighth ] }; + key { [ 6, ampersand, notsign, fiveeighths ] }; + key { [ 7, slash, braceleft, seveneighths ] }; + key { [ 8, parenleft, bracketleft, trademark ] }; + key { [ 9, parenright, bracketright, plusminus ] }; + key { [ 0, equal, braceright, degree ] }; + + key { [ e, E, EuroSign, cent ] }; + + key { [ comma, semicolon, horizconnector, multiply ] }; + key { [ period, colon, periodcentered, division ] }; + key { [ minus, underscore, dead_belowdot, dead_abovedot ] }; +}; + +partial +xkb_symbols "nodeadkeys" { + + key { [ equal, plus, cedilla, ogonek ] }; + key { [bracketleft, braceleft, diaeresis, degree ] }; + key { [bracketright, braceright, asciitilde, macron ] }; + key { [ semicolon, colon, acute, doubleacute ] }; + key { [apostrophe, quotedbl, asciicircum, caron ] }; + key { [ backslash, bar, grave, breve ] }; + key { [ slash, question, dead_belowdot, abovedot ] }; +}; + +partial +xkb_symbols "type2_nodeadkeys" { + + include "latin(nodeadkeys)" + + key { [ aring, Aring, diaeresis, degree ] }; + key { [ diaeresis, asciicircum, asciitilde, caron ] }; + key { [ comma, semicolon, cedilla, ogonek ] }; + key { [ period, colon, periodcentered, abovedot ] }; + key { [ minus, underscore, dead_belowdot, abovedot ] }; +}; + +partial +xkb_symbols "type3_nodeadkeys" { + + include "latin(nodeadkeys)" +}; + +partial +xkb_symbols "type4_nodeadkeys" { + + include "latin(nodeadkeys)" + + key { [ minus, underscore, dead_belowdot, abovedot ] }; +}; + +// Added 2008.03.05 by Marcin Woliński +// See http://marcinwolinski.pl/keyboard/ for a description. +// Used by pl(intl) +// +// ┌─────┐ +// │ 2 4 │ 2 = Shift, 4 = Level3 + Shift +// │ 1 3 │ 1 = Normal, 3 = Level3 +// └─────┘ +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ ~ ~ │ ! ' │ @ " │ # ˝ │ $ ¸ │ % ˇ │ ^ ^ │ & ˘ │ * ̇ │ ( ̣ │ ) ° │ _ ¯ │ + ˛ ┃ ⌫ Back- ┃ +// │ ` ` │ 1 ¡ │ 2 © │ 3 • │ 4 § │ 5 € │ 6 ¢ │ 7 − │ 8 × │ 9 ÷ │ 0 ° │ - – │ = — ┃ space ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { « │ } » ┃ Enter ┃ +// ┃Tab ↹ ┃ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ ‹ │ ] › ┃ ⏎ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ ┃ A │ S │ D │ F │ G │ H │ J │ K │ L │ : “ │ " ” │ | ¶ ┃ ┃ +// ┃Caps ⇬ ┃ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; ‘ │ ' ’ │ \ ┃ ┃ +// ┣━━━━━━━━┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ +// ┃ │ Z │ X │ C │ V │ B │ N │ M │ < „ │ > · │ ? ¿ ┃ ┃ +// ┃Shift ⇧ │ z │ x │ c │ v │ b │ n │ m │ , ‚ │ . … │ / ⁄ ┃Shift ⇧ ┃ +// ┣━━━━━━━┳━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ␣ ⍽ ┃ ┃ ┃ ┃ +// ┃Ctrl ┃Meta ┃Alt ┃ ␣ Space ⍽ ┃AltGr ⇮┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ + +partial +xkb_symbols "intl" { + + key { [ grave, asciitilde, dead_grave, dead_tilde ] }; + key { [ 1, exclam, exclamdown, dead_acute ] }; + key { [ 2, at, copyright, dead_diaeresis ] }; + key { [ 3, numbersign, U2022, dead_doubleacute ] }; // U+2022 is bullet (the name bullet doesn't work) + key { [ 4, dollar, section, dead_cedilla ] }; + key { [ 5, percent, EuroSign, dead_caron ] }; + key { [ 6, asciicircum, cent, dead_circumflex ] }; + key { [ 7, ampersand, U2212, dead_breve ] }; // U+2212 is MINUS SIGN + key { [ 8, asterisk, multiply, dead_abovedot ] }; + key { [ 9, parenleft, division, dead_belowdot ] }; + key { [ 0, parenright, degree, dead_abovering ] }; + key { [ minus, underscore, endash, dead_macron ] }; + key { [ equal, plus, emdash, dead_ogonek ] }; + + key { [ q, Q ] }; + key { [ w, W ] }; + key { [ e, E ] }; + key { [ r, R ] }; + key { [ t, T ] }; + key { [ y, Y ] }; + key { [ u, U ] }; + key { [ i, I ] }; + key { [ o, O ] }; + key { [ p, P ] }; + key { [bracketleft, braceleft, U2039, guillemotleft ] }; + key { [bracketright, braceright, U203A, guillemotright ] }; + + key { [ a, A ] }; + key { [ s, S ] }; + key { [ d, D ] }; + key { [ f, F ] }; + key { [ g, G ] }; + key { [ h, H ] }; + key { [ j, J ] }; + key { [ k, K ] }; + key { [ l, L ] }; + key { [ semicolon, colon, leftsinglequotemark, leftdoublequotemark ] }; + key { [apostrophe, quotedbl, rightsinglequotemark, rightdoublequotemark ] }; + + key { [ backslash, bar, NoSymbol, paragraph ] }; + key { [ z, Z ] }; + key { [ x, X ] }; + key { [ c, C ] }; + key { [ v, V ] }; + key { [ b, B ] }; + key { [ n, N ] }; + key { [ m, M ] }; + key { [ comma, less, singlelowquotemark, doublelowquotemark ] }; + key { [ period, greater, ellipsis, periodcentered ] }; + key { [ slash, question, U2044, questiondown ] }; // U+2044 is FRACTION SLASH + +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/level3 b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/level3 new file mode 100644 index 0000000..1aef970 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/level3 @@ -0,0 +1,211 @@ +// These partial variants assign ISO_Level3_Shift to various XKB keycodes +// so that the third shift level can be reached. + +// The default behaviour: +// the right Alt key (AltGr) chooses the third symbol engraved on a key. +default partial modifier_keys +xkb_symbols "ralt_switch" { + key { + type[Group1]="ONE_LEVEL", + symbols[Group1] = [ ISO_Level3_Shift ] + }; + include "level3(modifier_mapping)" +}; + +// Ensure a mapping to a real modifier for LevelThree. +partial modifier_keys +xkb_symbols "modifier_mapping" { + replace key { + type[Group1] = "ONE_LEVEL", + symbols[Group1] = [ ISO_Level3_Shift ] + }; + modifier_map Mod5 { }; +}; + +// The right Alt key never chooses the third level. +// This option attempts to undo the effect of a layout's inclusion of +// 'ralt_switch'. You may want to also select another level3 option +// to map the level3 shift to some other key. +partial modifier_keys +xkb_symbols "ralt_alt" { + key { + type[Group1]="TWO_LEVEL", + type[Group2]="TWO_LEVEL", + type[Group3]="TWO_LEVEL", + type[Group4]="TWO_LEVEL", + symbols[Group1] = [ Alt_R, Meta_R ], + symbols[Group2] = [ Alt_R, Meta_R ], + symbols[Group3] = [ Alt_R, Meta_R ], + symbols[Group4] = [ Alt_R, Meta_R ] + }; + modifier_map Mod1 { }; +}; + +// The right Alt key (while pressed) chooses the third shift level, +// and Compose is mapped to its second level. +partial modifier_keys +xkb_symbols "ralt_switch_multikey" { + key { + type[Group1]="TWO_LEVEL", + symbols[Group1] = [ ISO_Level3_Shift, Multi_key ] + }; + include "level3(modifier_mapping)" +}; + +// A special case of the right-Alt switch -- for use with grp:alts_toggle. +hidden partial modifier_keys +xkb_symbols "ralt_switch_for_alts_toggle" { + virtual_modifiers LAlt, AltGr; + key { + type[Group1]="PC_RALT_LEVEL2", + symbols[Group1] = [ Alt_L, ISO_Prev_Group, ISO_Prev_Group ], + virtualMods= LAlt + }; + key { + type[Group1]="PC_ALT_LEVEL2", + symbols[Group1] = [ ISO_Level3_Shift, ISO_Next_Group ], + virtualMods= AltGr + }; + include "level3(modifier_mapping)" +}; + +// Either Alt key (while pressed) chooses the third shift level. +// (To be used mostly to imitate Mac OS functionality.) +partial modifier_keys +xkb_symbols "alt_switch" { + include "level3(lalt_switch)" + include "level3(ralt_switch)" +}; + +// The left Alt key (while pressed) chooses the third shift level. +partial modifier_keys +xkb_symbols "lalt_switch" { + key { + type[Group1]="ONE_LEVEL", + symbols[Group1] = [ ISO_Level3_Shift ] + }; + include "level3(modifier_mapping)" +}; + +// The right Ctrl key (while pressed) chooses the third shift level. +partial modifier_keys +xkb_symbols "switch" { + key { + type[Group1]="ONE_LEVEL", + symbols[Group1] = [ ISO_Level3_Shift ] + }; + include "level3(modifier_mapping)" +}; + +// The Menu key (while pressed) chooses the third shift level. +partial modifier_keys +xkb_symbols "menu_switch" { + key { + type[Group1]="ONE_LEVEL", + symbols[Group1] = [ ISO_Level3_Shift ] + }; + include "level3(modifier_mapping)" +}; + +// Either Win key (while pressed) chooses the third shift level. +partial modifier_keys +xkb_symbols "win_switch" { + include "level3(lwin_switch)" + include "level3(rwin_switch)" +}; + +// The left Win key (while pressed) chooses the third shift level. +partial modifier_keys +xkb_symbols "lwin_switch" { + key { + type[Group1]="ONE_LEVEL", + symbols[Group1] = [ ISO_Level3_Shift ] + }; + include "level3(modifier_mapping)" +}; + +// The right Win key (while pressed) chooses the third shift level. +// (When using this map, you should set your keyboard as pc101 or pc102 +// instead of pc104 or pc105.) +partial modifier_keys +xkb_symbols "rwin_switch" { + key { + type[Group1]="ONE_LEVEL", + symbols[Group1] = [ ISO_Level3_Shift ] + }; + include "level3(modifier_mapping)" +}; + +// The Enter key on the kepypad (while pressed) chooses the third shift level. +// (This is especially useful for Mac laptops which miss the right Alt key.) +partial modifier_keys +xkb_symbols "enter_switch" { + key { + type[Group1]="ONE_LEVEL", + symbols[Group1] = [ ISO_Level3_Shift ] + }; + include "level3(modifier_mapping)" +}; + +// The CapsLock key (while pressed) chooses the third shift level. +partial modifier_keys +xkb_symbols "caps_switch" { + key { + type[Group1]="ONE_LEVEL", + symbols[Group1] = [ ISO_Level3_Shift ] + }; + include "level3(modifier_mapping)" +}; + +// The Backslash key (while pressed) chooses the third shift level. +partial modifier_keys +xkb_symbols "bksl_switch" { + key { + type[Group1]="ONE_LEVEL", + symbols[Group1] = [ ISO_Level3_Shift ] + }; + include "level3(modifier_mapping)" +}; + +// The Less/Greater key (while pressed) chooses the third shift level. +partial modifier_keys +xkb_symbols "lsgt_switch" { + key { + type[Group1]="ONE_LEVEL", + symbols[Group1] = [ ISO_Level3_Shift ] + }; + include "level3(modifier_mapping)" +}; + +// The CapsLock key (while pressed) chooses the third shift level, +// and latches when pressed together with another third-level chooser. +partial modifier_keys +xkb_symbols "caps_switch_latch" { + key { + type[Group1]="THREE_LEVEL", + symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ] + }; + include "level3(modifier_mapping)" +}; + +// The Backslash key (while pressed) chooses the third shift level, +// and latches when pressed together with another third-level chooser. +partial modifier_keys +xkb_symbols "bksl_switch_latch" { + key { + type[Group1]="THREE_LEVEL", + symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ] + }; + include "level3(modifier_mapping)" +}; + +// The Less/Greater key (while pressed) chooses the third shift level, +// and latches when pressed together with another third-level chooser. +partial modifier_keys +xkb_symbols "lsgt_switch_latch" { + key { + type[Group1]="THREE_LEVEL", + symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ] + }; + include "level3(modifier_mapping)" +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/level5 b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/level5 new file mode 100644 index 0000000..1ae2e6d --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/level5 @@ -0,0 +1,142 @@ +// These partial variants assign ISO_Level5_Shift to various XKB keycodes +// so that the fifth shift level can be reached. + +// The right Ctrl key (while pressed) chooses the fifth shift level. +partial modifier_keys +xkb_symbols "rctrl_switch" { + key { + type[Group1]="ONE_LEVEL", + symbols[Group1] = [ ISO_Level5_Shift ] + }; + include "level5(modifier_mapping)" +}; + +// The Less/Greater key (while pressed) chooses the fifth shift level. +partial modifier_keys +xkb_symbols "lsgt_switch" { + key { + type[Group1]="ONE_LEVEL", + symbols[Group1] = [ ISO_Level5_Shift ] + }; + include "level5(modifier_mapping)" +}; + +// The right Alt key (while pressed) chooses the fifth shift level. +partial modifier_keys +xkb_symbols "ralt_switch" { + key { + type[Group1]="ONE_LEVEL", + symbols[Group1] = [ ISO_Level5_Shift ] + }; + include "level5(modifier_mapping)" +}; + +// Ensure a mapping to a real modifier for LevelFive. +partial modifier_keys +xkb_symbols "modifier_mapping" { + replace key { + type[Group1] = "ONE_LEVEL", + symbols[Group1] = [ ISO_Level5_Shift ] + }; + modifier_map Mod3 { }; +}; + + +// This adds the definitions needed to create a level5-lock behaviour, using +// the real modifier NumLock as a lock indicator. +// See also: types/level5 : EIGHT_LEVEL_LEVEL_FIVE_LOCK +// See also: compat/level5(level5_lock) +partial modifier_keys +xkb_symbols "lock" { + key.type[Group1] = "ONE_LEVEL"; + include "level5(modifier_mapping)" + replace key { + vmods = NumLock, + symbols[Group1] = [ NoSymbol ], + actions[Group1] = [ SetMods(modifiers=NumLock) ] + }; + modifier_map Mod2 { }; +}; + +// The following modifier keys are used to switch to the third shift level +// and to set a corresponding lock, implemented as NumLock. + +partial modifier_keys +xkb_symbols "lsgt_switch_lock" { + include "level5(lock)" + key { + type[Group1] = "EIGHT_LEVEL", + symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, + ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ] + }; +}; + +partial modifier_keys +xkb_symbols "lwin_switch_lock" { + include "level5(lock)" + key { + type[Group1] = "EIGHT_LEVEL", + symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, + ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ] + }; +}; + +partial modifier_keys +xkb_symbols "ralt_switch_lock" { + include "level5(lock)" + key { + type[Group1] = "EIGHT_LEVEL", + symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, + ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ] + }; +}; + +partial modifier_keys +xkb_symbols "rwin_switch_lock" { + include "level5(lock)" + key { + type[Group1] = "EIGHT_LEVEL", + symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, + ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ] + }; +}; + +partial modifier_keys +xkb_symbols "lsgt_switch_lock_cancel" { + include "level5(lock)" + key { + type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK", + symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, + ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ] + }; +}; + +partial modifier_keys +xkb_symbols "lwin_switch_lock_cancel" { + include "level5(lock)" + key { + type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK", + symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, + ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ] + }; +}; + +partial modifier_keys +xkb_symbols "ralt_switch_lock_cancel" { + include "level5(lock)" + key { + type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK", + symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, + ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ] + }; +}; + +partial modifier_keys +xkb_symbols "rwin_switch_lock_cancel" { + include "level5(lock)" + key { + type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK", + symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, + ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ] + }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/macintosh_vndr/apple b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/macintosh_vndr/apple new file mode 100644 index 0000000..551eabc --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/macintosh_vndr/apple @@ -0,0 +1,141 @@ +// +// Keyboard modification for Apple keyboards +// + +partial default modifier_keys +xkb_symbols "extended" { + + key { [ KP_Equal ] }; + +// The key in the PC's Insert position is sometimes engraved Help (at least +// in Switzerland and Great Britain), with Insert sometimes above. But in the +// US and Canada, it remains Insert. So this should probably be an XkbOption, +// but I have to do more research. +// Perhaps Help should be the primary symbol with Insert in the 1st shift-level +// key { [ Help, Insert ] }; +// The keys next to F12, labeled F13, F14, & F15 generate codes that XFree86 +// claims not to generate. I think they should be equivalent to the PC keys +// Print Screen / SysRq, Scroll Lock, and Pause. Linux kernel bug? +// key { [ F13 ] }; // should be keycode 93 or +// key { [ F13 ] }; // should be keycode 118 +// key { [ F14 ] }; // should be keycode 123 or +// key { [ F14 ] }; // should be keycode 119 +// key { [ F15 ] }; // should be keycode 127 or +// key { [ F15 ] }; // should be keycode 120 +}; + +partial modifier_keys +xkb_symbols "laptop" { + + include "macintosh_vndr/apple(extended)" + + // The real numlock key on the iBook (shared with F5) works internally to + // the keyboard. It illuminates the Num_Lock led and locks the fn-key to + // type only the keypad keys on the letter keys (U=4, I=5, O=6, P=*, etc.). + // The key in the Num_lock position is engraved with Clear. + override key { [ Clear ] }; + // The key engraved Delete sends BKSP. To get Delete, use Shift-Delete + override key { [ BackSpace, Delete ] }; + // These keyboards only generate a when pressing fn+Alt. This makes + // it impossible to get to the third shift level on keys that are on + // the fn-keypad, so use the Enter key (right of ) for Mode_switch, + // and use fn+Enter (Apple's code for Menu) for KP_Enter. + replace key { [ ISO_Level3_Shift ] }; + modifier_map Mod5 { ISO_Level3_Shift }; + // Linux kernel bug with Menu on macs means this doesn't work yet +// replace key { [ KP_Enter ] }; // should be keycode 117 +}; + +partial modifier_keys +xkb_symbols "laptop_bad_switch" { + // Kept for backward compatibility + include "macintosh_vndr/apple(laptop)" +}; + +// Long Aluminium Keyboards +partial function_keys +xkb_symbols "alukbd" { + // The base is a inet PC keyboard + include "pc" + + // Additional Fxx keys + key { [ F13 ] }; + key { [ F14 ] }; + key { [ F15 ] }; + key { [ F16 ] }; + key { [ F17 ] }; + key { [ F18 ] }; + key { [ F19 ] }; + + // On aluminium keyboards, Num_Lock is replace by Clear + replace key { [ Clear ] }; + // CAPS key is always Caps_Lock, even for JIS keyboards + replace key { [ Caps_Lock ] }; + + // F1..F12 are multimedia keys when used with the 'Fn' key + // Make those multimedia actions available via ISO_Level3_Shift too, + // it is useful when the Fn key is remapped to something else (e.g. Insert) + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86KbdBrightnessDown, NoSymbol, XF86_Switch_VT_1 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86KbdBrightnessUp, NoSymbol, XF86_Switch_VT_2 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, NoSymbol, NoSymbol, XF86_Switch_VT_3 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, NoSymbol, NoSymbol, XF86_Switch_VT_4 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, NoSymbol, NoSymbol, XF86_Switch_VT_5 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, NoSymbol, NoSymbol, XF86_Switch_VT_6 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86AudioPrev, NoSymbol, XF86_Switch_VT_7 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86AudioPlay, NoSymbol, XF86_Switch_VT_8 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86AudioNext, NoSymbol, XF86_Switch_VT_9 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86AudioMute, NoSymbol, XF86_Switch_VT_10 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86AudioLowerVolume, NoSymbol, XF86_Switch_VT_11 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86AudioRaiseVolume, NoSymbol, XF86_Switch_VT_12 ] + }; +}; + +// Aluminium Keyboard: make F13, F14, F15 PC-ish (Print, Scroll_Lock, Pause) +partial function_keys keypad_keys +xkb_symbols "alupckeys" { + key { + type= "PC_ALT_LEVEL2", + symbols[Group1]= [ Print, Sys_Req ] + }; + key { [ Scroll_Lock ] }; + key { + type= "PC_CONTROL_LEVEL2", + symbols[Group1]= [ Pause, Break ] + }; + override key { [ Num_Lock, Pointer_EnableKeys ] }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/macintosh_vndr/us b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/macintosh_vndr/us new file mode 100644 index 0000000..81e4b77 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/macintosh_vndr/us @@ -0,0 +1,145 @@ +// symbols definition for a Macintosh "Extended" keyboard + +xkb_symbols "extended" { + + name[Group1]= "USA"; + key { [ Escape ] }; + + key { [ grave, asciitilde ] }; + key { [ 1, exclam ] }; + key { [ 2, at ] }; + key { [ 3, numbersign ] }; + key { [ 4, dollar ] }; + key { [ 5, percent ] }; + key { [ 6, asciicircum ] }; + key { [ 7, ampersand ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + + key { [ q, Q ] }; + key { [ w, W ] }; + key { [ e, E ] }; + key { [ r, R ] }; + key { [ t, T ] }; + key { [ y, Y ] }; + key { [ u, U ] }; + key { [ i, I ] }; + key { [ o, O ] }; + key { [ p, P ] }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + key { [ backslash, bar ] }; + + key { [ a, A ] }; + key { [ s, S ] }; + key { [ d, D ] }; + key { [ f, F ] }; + key { [ g, G ] }; + key { [ h, H ] }; + key { [ j, J ] }; + key { [ k, K ] }; + key { [ l, L ] }; + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + + key { [ z, Z ] }; + key { [ x, X ] }; + key { [ c, C ] }; + key { [ v, V ] }; + key { [ b, B ] }; + key { [ n, N ] }; + key { [ m, M ] }; + key { [ comma, less ] }; + key { [ period, greater ] }; + key { [ slash, question ] }; + + key { [ space ] }; + + include "eurosign(e)" + include "keypad" + + key { [ equal ] }; +}; + +hidden +xkb_symbols "oldmac" { + + include "macintosh_vndr/us(extended)" + + // Begin "Function" section + key { [ F1 ] }; + key { [ F2 ] }; + key { [ F3 ] }; + key { [ F4 ] }; + key { [ F5 ] }; + key { [ F6 ] }; + key { [ F7 ] }; + key { [ F8 ] }; + key { [ F9 ] }; + key { [ F10 ] }; + key { [ F11 ] }; + key { [ F12 ] }; + key { [ Print ] }; + key { [ Scroll_Lock ] }; + key { [ Pause ] }; + // End "Function" section + + // Begin "Editing" section + key { [ Insert ] }; + key { [ Home ] }; + key { [ Prior ] }; + key { [ Delete ] }; + key { [ End ] }; + key { [ Next ] }; + + key { [ Up ] }; + key { [ Left ] }; + key { [ Down ] }; + key { [ Right ] }; + // End "Editing" section + + key { [ BackSpace ] }; + key { [ Tab, ISO_Left_Tab ] }; + key { [ Return ] }; + key { [ Caps_Lock ] }; + key { [ Num_Lock, Pointer_EnableKeys ] }; + + // Begin "Modifier" section + key { [ Shift_L ] }; + key { [ Shift_R ] }; + key { [ Control_L ] }; + key { [ Control_R ] }; + key { [ Alt_L, Meta_L ] }; + key { [ Alt_R, Meta_R ] }; + key { [ Super_L ] }; + key { [ Super_R ] }; + // End "Modifier" section + + // begin modifier mappings + modifier_map Shift { Shift_L, Shift_R }; + modifier_map Lock { Caps_Lock }; + modifier_map Control{ Control_L, Control_R }; + modifier_map Mod2 { Num_Lock }; + + // Fake keys for virtual<->real modifiers mapping + key { [ ISO_Level3_Shift ] }; + key { [ Mode_switch ] }; + modifier_map Mod5 { , }; + + key { [ NoSymbol, Alt_L ] }; + modifier_map Mod1 { , }; + + key { [ NoSymbol, Meta_L ] }; + modifier_map Mod1 { }; + + key { [ NoSymbol, Super_L ] }; + modifier_map Mod4 { }; + + key { [ NoSymbol, Hyper_L ] }; + modifier_map Mod4 { }; + // end modifier mappings + +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/nbsp b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/nbsp new file mode 100644 index 0000000..77b40df --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/nbsp @@ -0,0 +1,204 @@ +// Let Space key provide No-Break Space (NBSP), Narrow No-Break Space (NNBSP), +// Zero-Width Non-Joiner (ZWNJ), and Zero-Width Joiner (ZWJ) for the desired +// levels. + + +//////////////////////////////////////// +// Only Space + +partial +xkb_symbols "none" { + key { + type[Group1]="ONE_LEVEL", + symbols[Group1]= [ space ] + }; +}; + + +//////////////////////////////////////// +// No-Break Space + +partial +xkb_symbols "level2" { + key { + type[Group1]="TWO_LEVEL", + symbols[Group1]= [ space, nobreakspace ] + }; +}; + + +// level3 & level3ns provide no-breaking spaces starting from level3 +// This is good for typographers but experience shows many users accidently +// type no-breaking spaces on the CLI (resulting in errors) +// Used by fr(latin9) and lt(std) +partial +xkb_symbols "level3" { + key { + type[Group1]="FOUR_LEVEL", + symbols[Group1]= [ space, space, nobreakspace ] + }; +}; + +// level3s kills fourth level +// Used by ca(multix) +partial +xkb_symbols "level3s" { + key { + type[Group1]="FOUR_LEVEL", + symbols[Group1]= [ space, space, nobreakspace, NoSymbol ] + }; +}; + +// for this reason pushing no-breaking spaces to level4 is the safe default nowadays +partial +xkb_symbols "level4" { + key { + type[Group1]="FOUR_LEVEL", + symbols[Group1]= [ space, space, space, nobreakspace ] + }; +}; + + +//////////////////////////////////////// +// Narrow No-Break Space + +// level3n provides narrow no-breaking space in addition to the normal one +partial +xkb_symbols "level3n" { + key { + type[Group1]="FOUR_LEVEL", + symbols[Group1]= [ space, space, nobreakspace, 0x100202F ] + }; +}; + +// level4n provides narrow no-breaking space in addition to the normal one +partial +xkb_symbols "level4n" { + key { + type[Group1]="EIGHT_LEVEL", + symbols[Group1]= [ space, space, space, nobreakspace, space, 0x100202F, NoSymbol, NoSymbol ] + }; +}; + +// level4nl provides narrow no-breaking space in addition to the normal one +// without forcing the use of level5 for mostly four-level layouts +// Used by fr(oss), be(oss)… +partial +xkb_symbols "level4nl" { + key { + type[Group1]="LOCAL_EIGHT_LEVEL", + symbols[Group1]= [ space, space, space, nobreakspace, space, 0x100202F, NoSymbol, NoSymbol ] + }; +}; + + +//////////////////////////////////////// +// Zero-Width Non-Joiner & Zero-Width Joiner +// Author: Behnam Esfahbod + +// ZWNJ and ZWJ are widely used in Persian, Kurdinsh, Pashto, Uzbek and other +// languages that use PersoArabic script. + + +// ZWNJ on level 2 +partial +xkb_symbols "zwnj2" { + key { + type[Group1]="TWO_LEVEL", + symbols[Group1]= [ space, 0x100200c ] + }; +}; + + +// ZWNJ on level 2 +// ZWJ on level 3 +partial +xkb_symbols "zwnj2zwj3" { + key { + type[Group1]="FOUR_LEVEL", + symbols[Group1]= [ space, 0x100200c, 0x100200d ] + }; +}; + + +// ZWNJ on level 2 +// ZWJ on level 3 +// NBSP on level 4 +partial +xkb_symbols "zwnj2zwj3nb4" { + key { + type[Group1]="FOUR_LEVEL", + symbols[Group1]= [ space, 0x100200c, 0x100200d, nobreakspace ] + }; +}; + +// ZWNJ on level 2 +// NBSP on level 3 +// Used by ir(ku_ara), af(basic), af(ps), af(uz), af(olpc-fa), af(olpc-ps), af(olpc-uz) +partial +xkb_symbols "zwnj2nb3" { + key { + type[Group1]="FOUR_LEVEL", + symbols[Group1]= [ space, 0x100200c, nobreakspace ] + }; +}; + + +// ZWNJ on level 2 +// NBSP on level 3 +partial +xkb_symbols "zwnj2nb3s" { + key { + type[Group1]="FOUR_LEVEL", + symbols[Group1]= [ space, 0x100200c, nobreakspace, NoSymbol ] + }; +}; + + +// ZWNJ on level 2 +// NBSP on level 3 +// ZWJ on level 4 +partial +xkb_symbols "zwnj2nb3zwj4" { + key { + type[Group1]="FOUR_LEVEL", + symbols[Group1]= [ space, 0x100200c, nobreakspace, 0x100200d ] + }; +}; + + +// ZWNJ on level 2 +// NBSP on level 3 +// NNBSP on level 4 +// Used by ir(pes) +partial +xkb_symbols "zwnj2nb3nnb4" { + key { + type[Group1]="FOUR_LEVEL", + symbols[Group1]= [ space, 0x100200c, nobreakspace, 0x100202F ] + }; +}; + + +// ZWNJ on level 3 +// ZWJ on level 4 +// Used by in(deva), in(olpc) +partial +xkb_symbols "zwnj3zwj4" { + key { + type[Group1]="FOUR_LEVEL", + symbols[Group1]= [ space, space, 0x100200c, 0x100200d ] + }; +}; + + +// NBSP on level 2 +// ZWNJ on level 3 +// Used by lk(sin_phonetic) +partial +xkb_symbols "nb2zwnj3s" { + key { + type[Group1]="FOUR_LEVEL", + symbols[Group1]= [ space, nobreakspace, 0x100200c, NoSymbol ] + }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/pc b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/pc new file mode 100644 index 0000000..0199713 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/pc @@ -0,0 +1,87 @@ +default partial alphanumeric_keys modifier_keys +xkb_symbols "pc105" { + + key { [ Escape ] }; + + // The extra key on many European keyboards: + key { [ less, greater, bar, brokenbar ] }; + + // The following keys are common to all layouts. + key { [ backslash, bar ] }; + key { [ space ] }; + + include "srvr_ctrl(fkey2vt)" + include "pc(editing)" + include "keypad(x11)" + + key { [ BackSpace, BackSpace ] }; + + key { [ Tab, ISO_Left_Tab ] }; + key { [ Return ] }; + + key { [ Caps_Lock ] }; + key { [ Num_Lock ] }; + + key { [ Shift_L ] }; + key { [ Control_L ] }; + key { [ Super_L ] }; + + key { [ Shift_R ] }; + key { [ Control_R ] }; + key { [ Super_R ] }; + key { [ Menu ] }; + + // Beginning of modifier mappings. + modifier_map Shift { Shift_L, Shift_R }; + modifier_map Lock { Caps_Lock }; + modifier_map Control{ Control_L, Control_R }; + modifier_map Mod2 { Num_Lock }; + modifier_map Mod4 { Super_L, Super_R }; + + // Fake keys for virtual<->real modifiers mapping: + key { [ ISO_Level3_Shift ] }; + key { [ Mode_switch ] }; + modifier_map Mod5 { , }; + + key { [ NoSymbol, Alt_L ] }; + include "altwin(meta_alt)" + + key { [ NoSymbol, Meta_L ] }; + modifier_map Mod1 { }; + + key { [ NoSymbol, Super_L ] }; + modifier_map Mod4 { }; + + key { [ NoSymbol, Hyper_L ] }; + modifier_map Mod4 { }; + // End of modifier mappings. + + key { [ XF86Display ] }; + key { [ XF86KbdLightOnOff ] }; + key { [ XF86KbdBrightnessDown ] }; + key { [ XF86KbdBrightnessUp ] }; +}; + +hidden partial alphanumeric_keys +xkb_symbols "editing" { + key { + type= "PC_ALT_LEVEL2", + symbols[Group1]= [ Print, Sys_Req ] + }; + key { [ Scroll_Lock ] }; + key { + type= "PC_CONTROL_LEVEL2", + symbols[Group1]= [ Pause, Break ] + }; + key { [ Insert ] }; + key { [ Home ] }; + key { [ Prior ] }; + key { [ Delete ] }; + key { [ End ] }; + key { [ Next ] }; + + key { [ Up ] }; + key { [ Left ] }; + key { [ Down ] }; + key { [ Right ] }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/ru b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/ru new file mode 100644 index 0000000..c4f4818 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/ru @@ -0,0 +1,651 @@ +// Keyboard layouts for Russia. +// AEN +// 2001/12/23 by Leon Kanter +// 2005/12/09 Valery Inozemtsev + +// Windows layout +default partial alphanumeric_keys +xkb_symbols "winkeys" { + + include "ru(common)" + name[Group1]= "Russian"; + + key { [ 3, numerosign ] }; + key { [ 4, semicolon ] }; + key { [ 5, percent ] }; + key { [ 6, colon ] }; + key { [ 7, question ] }; + key { [ 8, asterisk ] }; + + key { [ period, comma ] }; + key { [ backslash, slash ] }; +}; + +hidden partial alphanumeric_keys +xkb_symbols "common" { + + key { [ 1, exclam ] }; + key { [ 2, quotedbl ] }; + key { [ 3, numbersign ] }; + key { [ 4, asterisk ] }; + key { [ 5, colon ] }; + key { [ 6, comma ] }; + key { [ 7, period ] }; + key { [ 8, semicolon ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + key { [ backslash, bar ] }; + + key { [ slash, question ] }; + key { [ slash, bar ] }; + + key { [ Cyrillic_io, Cyrillic_IO ] }; + key { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; + key { [ Cyrillic_tse, Cyrillic_TSE ] }; + key { [ Cyrillic_u, Cyrillic_U ] }; + key { [ Cyrillic_ka, Cyrillic_KA ] }; + key { [ Cyrillic_ie, Cyrillic_IE ] }; + key { [ Cyrillic_en, Cyrillic_EN ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE ] }; + key { [ Cyrillic_sha, Cyrillic_SHA ] }; + key { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; + key { [ Cyrillic_ze, Cyrillic_ZE ] }; + key { [ Cyrillic_ha, Cyrillic_HA ] }; + key { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; + + key { [ Cyrillic_ef, Cyrillic_EF ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU ] }; + key { [ Cyrillic_ve, Cyrillic_VE ] }; + key { [ Cyrillic_a, Cyrillic_A ] }; + key { [ Cyrillic_pe, Cyrillic_PE ] }; + key { [ Cyrillic_er, Cyrillic_ER ] }; + key { [ Cyrillic_o, Cyrillic_O ] }; + key { [ Cyrillic_el, Cyrillic_EL ] }; + key { [ Cyrillic_de, Cyrillic_DE ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key { [ Cyrillic_e, Cyrillic_E ] }; + + key { [ Cyrillic_ya, Cyrillic_YA ] }; + key { [ Cyrillic_che, Cyrillic_CHE ] }; + key { [ Cyrillic_es, Cyrillic_ES ] }; + key { [ Cyrillic_em, Cyrillic_EM ] }; + key { [ Cyrillic_i, Cyrillic_I ] }; + key { [ Cyrillic_te, Cyrillic_TE ] }; + key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; + key { [ Cyrillic_be, Cyrillic_BE ] }; + key { [ Cyrillic_yu, Cyrillic_YU ] }; + + include "kpdl(comma)" +}; + +partial alphanumeric_keys +xkb_symbols "legacy" { + + include "ru(common)" + name[Group1]= "Russian (legacy)"; +}; + +partial alphanumeric_keys +xkb_symbols "olpc" { + + include "ru(common)" + + key { [ 0x01000451, 0x01000401, grave ] }; // Ñ‘, Ð + key { [ 3, numbersign, 0x01002116 ] }; // â„– + key { [ 4, dollar, semicolon ] }; + key { [ 6, asciicircum, colon ] }; + key { [ 7, ampersand ] }; + key { [ 9, parenleft, acute ] }; + key { [ backslash, bar, slash ] }; + + include "group(olpc)" +}; + +partial alphanumeric_keys +xkb_symbols "typewriter" { + + include "ru(common)" + name[Group1]= "Russian (typewriter)"; + + key { [ bar, plus ] }; + key { [ numerosign, 1 ] }; + key { [ minus, 2 ] }; + key { [ slash, 3 ] }; + key { [ quotedbl, 4 ] }; + key { [ colon, 5 ] }; + key { [ comma, 6 ] }; + key { [ period, 7 ] }; + key { [ underscore, 8 ] }; + key { [ question, 9 ] }; + key { [ percent, 0 ] }; + key { [ exclam, equal ] }; + key { [ semicolon, backslash ] }; + + key { [ parenright, parenleft ] }; + + key { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; + key { [ Cyrillic_io, Cyrillic_IO ] }; +}; + +partial alphanumeric_keys +xkb_symbols "typewriter-legacy" { + + include "ru(common)" + name[Group1]= "Russian (typewriter, legacy)"; + + key { [ apostrophe, quotedbl ] }; + key { [ exclam, 1 ] }; + key { [ numerosign, 2 ] }; + key { [ slash, 3 ] }; + key { [ semicolon, 4 ] }; + key { [ colon, 5 ] }; + key { [ comma, 6 ] }; + key { [ period, 7 ] }; + key { [ underscore, 8 ] }; + key { [ question, 9 ] }; + key { [ percent, 0 ] }; + + key { [ parenleft, parenright ] }; + + key { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; + key { [ Cyrillic_io, Cyrillic_IO ] }; +}; + +partial alphanumeric_keys +xkb_symbols "phonetic" { + + name[Group1]= "Russian (phonetic)"; + + key { [ 1, exclam ] }; + key { [ 2, at ] }; + key { [ 3, Cyrillic_io ] }; + key { [ 4, Cyrillic_IO ] }; + key { [ 5, Cyrillic_hardsign ] }; + key { [ 6, Cyrillic_HARDSIGN ] }; + key { [ 7, ampersand ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ minus, underscore ] }; + + key { [ period, greater ] }; + key { [ slash, question ] }; + key { [ comma, less ] }; + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + key { [ bar, brokenbar ] }; + + key { [ Cyrillic_yu, Cyrillic_YU ] }; + key { [ Cyrillic_ya, Cyrillic_YA ] }; + key { [ Cyrillic_ze, Cyrillic_ZE ] }; + key { [ Cyrillic_es, Cyrillic_ES ] }; + key { [ Cyrillic_a, Cyrillic_A ] }; + key { [ Cyrillic_ve, Cyrillic_VE ] }; + key { [ Cyrillic_tse, Cyrillic_TSE ] }; + key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; + key { [ Cyrillic_de, Cyrillic_DE ] }; + key { [ Cyrillic_ie, Cyrillic_IE ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key { [ Cyrillic_ef, Cyrillic_EF ] }; + key { [ Cyrillic_te, Cyrillic_TE ] }; + key { [ Cyrillic_er, Cyrillic_ER ] }; + key { [ Cyrillic_en, Cyrillic_EN ] }; + key { [ Cyrillic_be, Cyrillic_BE ] }; + key { [ Cyrillic_ha, Cyrillic_HA ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU ] }; + key { [ Cyrillic_em, Cyrillic_EM ] }; + key { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; + key { [ Cyrillic_u, Cyrillic_U ] }; + key { [ Cyrillic_ka, Cyrillic_KA ] }; + key { [ Cyrillic_i, Cyrillic_I ] }; + key { [ Cyrillic_o, Cyrillic_O ] }; + key { [ Cyrillic_el, Cyrillic_EL ] }; + key { [ Cyrillic_pe, Cyrillic_PE ] }; + + key { [ Cyrillic_sha, Cyrillic_SHA ] }; + key { [ Cyrillic_che, Cyrillic_CHE ] }; + key { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; + key { [ Cyrillic_e, Cyrillic_E ] }; +}; + +partial alphanumeric_keys +xkb_symbols "phonetic_winkeys" { + + include "ru(phonetic)" + name[Group1]= "Russian (phonetic WinKeys)"; + + key { [ Cyrillic_ha, Cyrillic_HA ] }; + key { [ Cyrillic_che, Cyrillic_CHE ] }; + key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; +}; + +partial alphanumeric_keys +xkb_symbols "tt" { + + include "ru(winkeys)" + name[Group1]= "Tatar"; + + key.type[group1]="FOUR_LEVEL"; + + key { [ 0x010004bb, 0x010004ba, Cyrillic_io, Cyrillic_IO ] }; + key { [ 0x010004e9, 0x010004e8, Cyrillic_tse, Cyrillic_TSE ] }; + key { [ 0x010004d9, 0x010004d8, Cyrillic_shcha, Cyrillic_SHCHA ] }; + key { [ 0x010004af, 0x010004ae, Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; + key { [ 0x010004a3, 0x010004a2, Cyrillic_zhe, Cyrillic_ZHE ] }; + key { [ 0x01000497, 0x01000496, Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "os_legacy" { + + include "ru(common)" + name[Group1]= "Ossetian (legacy)"; + + key { [ Cyrillic_e, Cyrillic_E ] }; + key { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] }; + key { [ 0x010004D5, 0x010004D4 ] }; +}; + +partial alphanumeric_keys +xkb_symbols "os_winkeys" { + + include "ru(winkeys)" + name[Group1]= "Ossetian (WinKeys)"; + + key { [ Cyrillic_e, Cyrillic_E ] }; + key { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] }; + key { [ 0x010004D5, 0x010004D4 ] }; +}; + +partial alphanumeric_keys +xkb_symbols "cv" { + + include "ru(winkeys)" + name[Group1]= "Chuvash"; + + key.type[group1]="FOUR_LEVEL"; + + key { [ Cyrillic_u, Cyrillic_U, 0x010004f3, 0x010004f2 ] }; + key { [ Cyrillic_ie, Cyrillic_IE, 0x010004d7, 0x010004d6 ] }; + key { [ Cyrillic_a, Cyrillic_A, 0x010004d1, 0x010004d0 ] }; + key { [ Cyrillic_es, Cyrillic_ES, 0x010004ab, 0x010004aa ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "udm" { + + include "ru(winkeys)" + name[Group1]= "Udmurt"; + + key.type[group1]="FOUR_LEVEL"; + + key { [ question, exclam, 1, 1 ] }; + key { [ parenleft, quotedbl, 2, 2 ] }; + key { [ parenright, numerosign, 3, 3 ] }; + key { [ colon, semicolon, 4, 4 ] }; + key { [ asterisk, percent, 5, 5 ] }; + key { [ 0x010004dd, 0x010004dc, 6, 6 ] }; + key { [ 0x010004e7, 0x010004e6, 7, 7 ] }; + key { [ 0x010004f5, 0x010004f4, 8, 8 ] }; + key { [ 0x010004e5, 0x010004e4, 9, 9 ] }; + key { [ 0x010004df, 0x010004de, 0, 0 ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "cv_latin" { + + include "us(alt-intl)" + name[Group1]= "Chuvash (Latin)"; + + key.type[group1]="FOUR_LEVEL"; + + key { [ q, Q, 0x01000161, 0x01000160 ] }; + key { [ w, W, udiaeresis, Udiaeresis ] }; + key { [ e, E, 0x01000115, 0x01000114 ] }; + key { [ u, U, udiaeresis, Udiaeresis ] }; + key { [ i, I, 0x0100012d, 0x0100012c ] }; + key { [ o, O, odiaeresis, Odiaeresis ] }; + key { [ a, A, abreve, Abreve ] }; + key { [ s, S, scedilla, Scedilla ] }; + key { [ g, G, gbreve, Gbreve ] }; + key { [ j, J, 0x01000131, 0x01000130 ] }; + key { [ c, C, ccedilla, Ccedilla ] }; + + include "level3(ralt_switch)" +}; + +// Komi language layout +// Vlad Shakhov +// last changes 2007/10/23 +partial alphanumeric_keys +xkb_symbols "kom" { + + include "ru(winkeys)" + name[Group1]= "Komi"; + + key.type[group1]="FOUR_LEVEL_ALPHABETIC"; + + // cyrilllic o with diaeresis + key { [ Cyrillic_o, Cyrillic_O, U04E7, U04E6 ] }; + + // hard I as additional key for soft Cyrillic_I + key { [ Cyrillic_i, Cyrillic_I, Ukrainian_i, Ukrainian_I ] }; + + include "level3(ralt_switch)" +}; + +// Yakut language layout +// 2008/04/23 Yakov Aleksandrov +// 2008/04/23 Anatoliy Zhozhikov +// 2008/04/23 Aleksandr Varlamov +partial alphanumeric_keys +xkb_symbols "sah" { + + include "ru(winkeys)" + name[Group1]= "Yakut"; + + key.type[group1]="FOUR_LEVEL_ALPHABETIC"; + + key { [ Cyrillic_io, Cyrillic_IO, U04EB, U04EA ] }; + key { [ Cyrillic_shorti, Cyrillic_SHORTI, U048B, U048A ] }; + key { [ Cyrillic_u, Cyrillic_U, Cyrillic_u_straight, Cyrillic_U_straight ] }; + key { [ Cyrillic_ka, Cyrillic_KA, U04C4, U04C3 ] }; + key { [ Cyrillic_en, Cyrillic_EN, U04A5, U04A4 ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE, U0495, U0494 ] }; + key { [ Cyrillic_ze, Cyrillic_ZE, U04E1, U04E0 ] }; + key { [ Cyrillic_ha, Cyrillic_HA, Cyrillic_shha, Cyrillic_SHHA ] }; + key { [ Cyrillic_o, Cyrillic_O, Cyrillic_o_bar, Cyrillic_O_bar ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE, U0461, U0460 ] }; + key { [ Cyrillic_che, Cyrillic_CHE, Cyrillic_u_macron, Cyrillic_U_macron ] }; + key { [ Cyrillic_em, Cyrillic_EM, U04C8, U04C7 ] }; + key { [ Cyrillic_i, Cyrillic_I, Cyrillic_i_macron, Cyrillic_I_macron ] }; + + include "level3(ralt_switch)" +}; + + +//Kalmyk language layout +//based on the Kalmyk language layout: http://soft.oyrat.org/ +//Nikolay Korneev +//Toli Miron +partial alphanumeric_keys +xkb_symbols "xal" { + + include "ru(winkeys)" + name[Group1]= "Kalmyk"; + + key.type[group1]="FOUR_LEVEL"; + + key { [ question, exclam, 1 ] }; + key { [ numerosign, quotedbl, 2 ] }; + key { [ Cyrillic_u_straight, Cyrillic_U_straight, 3 ] }; + key { [ Cyrillic_schwa, Cyrillic_SCHWA, 4 ] }; + key { [ asterisk, percent, 5 ] }; + key { [ Cyrillic_en_descender, Cyrillic_EN_descender, 6 ] }; + key { [ Cyrillic_o_bar, Cyrillic_O_bar, 7 ] }; + key { [ Cyrillic_shha, Cyrillic_SHHA, 8 ] }; + key { [ Cyrillic_zhe_descender, Cyrillic_ZHE_descender, 9 ] }; + key { [ semicolon, colon, 0 ] }; + + key { [ parenleft, parenright, Cyrillic_io, Cyrillic_IO ] }; + + key { [ Cyrillic_tse, Cyrillic_TSE, dollar ] }; + key { [ Cyrillic_u, Cyrillic_U, EuroSign ] }; + key { [ Cyrillic_ka, Cyrillic_KA, registered ] }; + key { [ Cyrillic_ie, Cyrillic_IE, trademark ] }; + key { [ Cyrillic_ha, Cyrillic_HA, bracketleft ] }; + key { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, bracketright ] }; + key { [ Cyrillic_e, Cyrillic_E, apostrophe ] }; + key { [ Cyrillic_es, Cyrillic_ES, copyright ] }; + key { [ Cyrillic_be, Cyrillic_BE, less ] }; + key { [ Cyrillic_yu, Cyrillic_YU, greater ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "dos" { + + include "ru(common)" + name[Group1]= "Russian (DOS)"; + + key { [ parenright, parenleft ] }; + key { [ 4, currency ] }; + key { [ 9, question ] }; + key { [ 0, percent ] }; + + key { [ Cyrillic_io, Cyrillic_IO ] }; +}; + +partial alphanumeric_keys +xkb_symbols "bak" { + + include "ru(winkeys)" + name[Group1]= "Bashkirian"; + + key.type[group1]="FOUR_LEVEL"; + + key { [ 0x010004d9, 0x010004d8, Cyrillic_io, Cyrillic_IO ] }; + key { [ exclam, quotedbl, 1, 1 ] }; + key { [ 0x010004e9, 0x010004e8, 2, 2 ] }; + key { [ 0x010004a1, 0x010004a0, 3, 3 ] }; + key { [ 0x01000493, 0x01000492, 4, 4 ] }; + key { [ 0x010004ab, 0x010004aa, 5, 5 ] }; + key { [ colon, semicolon, 6, 6 ] }; + key { [ 0x01000499, 0x01000498, 7, 7 ] }; + key { [ 0x010004bb, 0x010004ba, 8, 8 ] }; + key { [ question, parenleft, 9, 9 ] }; + key { [ numerosign, parenright, 0, 0 ] }; + key { [ minus, percent, minus, underscore ] }; + key { [ 0x010004af, 0x010004ae, equal, plus ] }; + key { [ 0x010004a3, 0x010004a2, backslash, slash ] }; + + include "level3(ralt_switch)" +}; + +// Serbian characters are added as third-level symbols to Russian keyboard layout. +partial alphanumeric_keys +xkb_symbols "srp" { + + include "ru(common)" + name[Group1]= "Serbian (Russia)"; + + key { [ 3, numerosign ] }; + key { [ 4, semicolon ] }; + key { [ 5, percent ] }; + key { [ 6, colon ] }; + key { [ 7, question ] }; + key { [ 8, asterisk ] }; + key { [ period, comma ] }; + key { [ backslash, slash ] }; + key { [ Cyrillic_shorti, Cyrillic_SHORTI, U458, U408 ] }; + key { [ Cyrillic_en, Cyrillic_EN, U45A, U40A ] }; + key { [ Cyrillic_el, Cyrillic_EL, U459, U409 ] }; + key { [ Cyrillic_de, Cyrillic_DE, U45F, U40F ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE, U452, U402 ] }; + key { [ Cyrillic_che, Cyrillic_CHE, U45B, U40B ] }; + + include "level3(ralt_switch)" +}; + +// Mari language layout +// http://www.marlamuter.ru/ +partial alphanumeric_keys +xkb_symbols "chm" { + + include "ru(common)" + name[Group1]= "Mari"; + + key.type[group1]="FOUR_LEVEL_ALPHABETIC"; + + key { [ Cyrillic_a, Cyrillic_A, U04D3, U04D2 ] }; + key { [ Cyrillic_u, Cyrillic_U, U04F1, U04F0 ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU, U04F9, U04F8 ] }; + key { [ Cyrillic_en, Cyrillic_EN, U04A5, U04A4 ] }; + key { [ Cyrillic_e, Cyrillic_E, U04E9, U04E8 ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE, U04EB, U04EA ] }; + key { [ Cyrillic_ef, Cyrillic_EF, UF537, UF536 ] }; + + include "level3(ralt_switch)" +}; + +// EXTRAS: + +// Church Slavonic language layout +// based on the Russian standard keyboard +// by Aleksandr Andreev and Yuri Shardt +// last changes 2010/08/01; contact +partial alphanumeric_keys +xkb_symbols "chu" { + + name[Group1]= "Church Slavonic"; + + key { [ U0457, U0407, U0482, U20DD ] }; // ї Ї ҂ e.g: а⃝ where the last is a combining ten thousands sign + key { [ U0461, U0460, U047D, U047C ] }; // ѡ Ѡ ѽ Ѽ + key { [ U0454, U0404, U0465, U0464 ] }; // є Є ѥ Ѥ + key { [ U046F, U046E, U0469, U0468 ] }; // ѯ Ѯ ѩ Ѩ + key { [ U0471, U0470, U046D, U046C ] }; // ѱ Ѱ ѭ Ѭ + key { [ U0473, U0472, UA657, UA656 ] }; // ѳ Ѳ iotified A + key { [ U0475, U0474, U0477, U0476 ] }; // ѵ Ѵ ѷ Ѷ + key { [ U047B, U047A, UA64D, UA64C ] }; // ѻ Ѻ ꙍ Ꙍ + key { [ U047F, U047E, U046B, U046A ] }; // ѿ Ѿ ѫ Ѫ + key { [ U0455, U0405,parenleft,U002A ] }; // ѕ Ѕ ( * + key { [Cyrillic_u,Cyrillic_U,parenright,U0488]}; // у У ) NB: for digraph Ouk, use Cyrillic_o + Cyrillic_u + key { [ U0483, U0486, U0487, U005F ] }; // а҃ а҆ а҇, _ (titlo, psili, pokrytie, underscore) + key { [ U0301, U0300, U0484, UA67E ] }; // а̀ а́ а҄ ꙾ (oxia, varia, kamora, kavyka) + + key { [ Cyrillic_shorti, Cyrillic_SHORTI, U0456 ] }; + key { [ Cyrillic_tse, Cyrillic_TSE, U2DF0 ] }; + key { [ UA64B, UA64A, U2DF9 ] }; // Cyrillic monograph Uk (not U)! + key { [ Cyrillic_ka, Cyrillic_KA, U2DE6 ] }; + key { [ Cyrillic_ie, Cyrillic_IE, U2DF7 ] }; + key { [ Cyrillic_en, Cyrillic_EN, U2DE9 ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE, U2DE2 ] }; + key { [ Cyrillic_sha, Cyrillic_SHA, U2DF2 ] }; + key { [ Cyrillic_shcha, Cyrillic_SHCHA, U2DF3 ] }; + key { [ Cyrillic_ze, Cyrillic_ZE, U2DE5 ] }; + key { [ Cyrillic_ha, Cyrillic_HA, U2DEF ] }; + key { [Cyrillic_hardsign,Cyrillic_HARDSIGN, UA67D ] }; // Payerok + key { [ backslash, slash, colon, question ] }; // \ / : ? NB: for Slavonic question, use semicolon + + key { [ Cyrillic_ef, Cyrillic_EF ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU ] }; + key { [ Cyrillic_ve, Cyrillic_VE, U2DE1 ] }; + key { [ Cyrillic_a, Cyrillic_A, U2DF6 ] }; + key { [ Cyrillic_pe, Cyrillic_PE, U2DEB ] }; + key { [ Cyrillic_er, Cyrillic_ER, U2DEC ] }; + key { [ Cyrillic_o, Cyrillic_O, U2DEA ] }; + key { [ Cyrillic_el, Cyrillic_EL, U2DE7 ] }; + key { [ Cyrillic_de, Cyrillic_DE, U2DE3 ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE, U2DE4 ] }; + key { [ U0463, U0462, U2DFA ] }; // Yat + + key { [ U0467, U0466, U2DFD ] }; // Small Yus + key { [ Cyrillic_che, Cyrillic_CHE, U2DF1 ] }; + key { [ Cyrillic_es, Cyrillic_ES, U2DED ] }; + key { [ Cyrillic_em, Cyrillic_EM, U2DE8 ] }; + key { [ Cyrillic_i, Cyrillic_I ] }; + key { [ Cyrillic_te, Cyrillic_TE, U2DEE ] }; + key { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] }; + key { [ Cyrillic_be, Cyrillic_BE, U2DE0 ] }; + key { [ Cyrillic_yu, Cyrillic_YU, U2DFB ] }; + key { [ period, comma, semicolon, exclam ] }; +}; + + +// RUU (Russian-Ukrainian United keyboard layout). +// This is a modified Russian standard keyboard, with the third level containing +// Ukrainian and Belorusian alphabetic letters and commonly used Unicode symbols. +// For a description see http://wiki.opennet.ru/RUU [in Russian]. +// Vasyĺ V. Vercynśkyj +// last changes 2011/05/11 +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ ' ~ │ ! ≈ │ " ∞ │ № ₴ │ ; € │ % ‰ │ : ≤ │ ? ≥ │ * × │ ( { │ ) } │ _ – │ + ± ┃ ⌫ ┃ +// │ ’ ́ │ 1 ÷ │ 2 ¤ │ 3 § │ 4 $ │ 5 ° │ 6 < │ 7 > │ 8 • │ 9 [ │ 0 ] │ - — │ = ≠ ┃Backspace┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ Й │ Ц │ У Ў │ К │ Е Ё │ Н │ Г Ґ │ Ш │ Щ │ З │ Х │ Ъ Ї ┃ Enter ┃ +// ┃ Tab ↹ ┃ й │ ц │ у ў │ к ® │ е ё │ н │ г ґ │ ш │ щ │ з │ х │ ъ ї ┃ ⏎ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ Caps ┃ Ф │ Ы І │ В │ А │ П │ Р │ О │ Л │ Д │ Ж │ Э Є │ | ¦ ┃ ┃ +// ┃ Lock ⇬ ┃ ф │ ы і │ в │ а │ п │ р │ о │ л │ д │ ж │ э є │ / \ ┃ ┃ +// ┣━━━━━━━━┻━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┲━━━┷━━━━━┻━━━━━━┫ +// ┃ ┃ Я │ Ч │ С │ М │ И │ Т │ Ь │ Б „ │ Ю “ │ , … ┃ ┃ +// ┃ Shift ⇧ ┃ я │ ч │ с © │ м │ и │ т ™ │ ь µ │ б « │ ю » │ . / ┃ Shift ⇧ ┃ +// ┣━━━━━━━┳━━┻━━━━┳┷━━━━━┷┱────┴─────┴─────┴─────┴─────┴─────┴┲━━━━┷━━┳━━┻━━━━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ +// ┃ Ctrl ┃ Meta ┃ Alt ┃ Space ┃AltGr ⇮┃ Menu ┃ Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ +partial alphanumeric_keys +xkb_symbols "ruu" { + + include "ru(common)" + name[Group1]= "Russian (with Ukrainian-Belorussian layout)"; + + key { [ U2019, apostrophe, U0301, asciitilde ] }; // Apostrophe and Stress symbol + key { [ 1, exclam, U00F7, U2248 ] }; // Division Sign and Almost Equal To + key { [ 2, quotedbl, currency, infinity ] }; + key { [ 3, numerosign, U00A7, U20B4 ] }; // Paragraph and Hryvnia sign + key { [ 4, semicolon, dollar, EuroSign ] }; + key { [ 5, percent, degree, U2030 ] }; // Per Mille Sign + key { [ 6, colon, less, U2264 ] }; // Less-Than Or Equal To + key { [ 7, question, greater, U2265 ] }; // Greater-Than Or Equal To + key { [ 8, asterisk, enfilledcircbullet, U00D7 ] }; // Multiplication Sign + key { [ 9, parenleft, bracketleft, braceleft ] }; + key { [ 0, parenright, bracketright, braceright ] }; + key { [ minus, underscore, emdash, endash ] }; + key { [ equal, plus, notequal, plusminus ] }; + + key { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ] }; + key { [ Cyrillic_ka, Cyrillic_KA, registered ] }; // Registered tm + key { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; + key { [ Cyrillic_ze, Cyrillic_ZE, U00B6 ] }; // Pilcrow Sign + key { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, Ukrainian_yi, Ukrainian_YI ] }; + + key { [ Cyrillic_yeru, Cyrillic_YERU, Ukrainian_i, Ukrainian_I ] }; + key { [ Cyrillic_e, Cyrillic_E, Ukrainian_ie, Ukrainian_IE ] }; + key { [ slash, bar, backslash, U00A6 ] }; // Broken Bar + + key { [ Cyrillic_es, Cyrillic_ES, copyright ] }; + key { [ Cyrillic_te, Cyrillic_TE, trademark ] }; + key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, U00B5 ] }; // Micro Sign + key { [ Cyrillic_be, Cyrillic_BE, guillemotleft, doublelowquotemark ] }; + key { [ Cyrillic_yu, Cyrillic_YU, guillemotright, leftdoublequotemark ] }; + key { [ period, comma, slash, ellipsis ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/ru(sun_type6)" +}; + +// Apple layout +partial alphanumeric_keys +xkb_symbols "mac" { + + include "ru(common)" + name[Group1]= "Russian (Macintosh)"; + + key { [ less, greater ] }; + key { [ 2, quotedbl ] }; + key { [ 3, numerosign ] }; + key { [ 4, percent ] }; + key { [ 5, colon ] }; + key { [ 6, comma ] }; + key { [ 7, period ] }; + key { [ 8, semicolon ] }; + key { [ bracketright, bracketleft ] }; + key { [ Cyrillic_io, Cyrillic_IO ] }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/rupeesign b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/rupeesign new file mode 100644 index 0000000..efde69c --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/rupeesign @@ -0,0 +1,5 @@ +// keyboards having the RupeeSign on the 4 key +partial +xkb_symbols "4" { + key { [ NoSymbol, NoSymbol, U20B9 ] }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/shift b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/shift new file mode 100644 index 0000000..8f90223 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/shift @@ -0,0 +1,87 @@ +// Cancel CapsLock when a Shift key is pressed. +partial modifier_keys +xkb_symbols "breaks_caps" { + key { + type = "ALPHABETIC", + actions [Group1] = [ + SetMods(modifiers=Shift), + SetMods(modifiers=Shift+Lock,clearLocks) + ] + }; + key { + type = "ALPHABETIC", + actions [Group1] = [ + SetMods(modifiers=Shift), + SetMods(modifiers=Shift+Lock,clearLocks) + ] + }; +}; + + +// Toggle CapsLock when pressed together with the other Shift key. +partial modifier_keys +xkb_symbols "lshift_both_capslock" { + key { + type[Group1]="TWO_LEVEL", + symbols[Group1] = [ Shift_L, Caps_Lock ] + }; +}; +// Toggle CapsLock when pressed together with the other Shift key. +partial modifier_keys +xkb_symbols "rshift_both_capslock" { + key { + type[Group1]="TWO_LEVEL", + symbols[Group1] = [ Shift_R, Caps_Lock ] + }; +}; +partial modifier_keys +xkb_symbols "both_capslock" { + include "shift(lshift_both_capslock)" + include "shift(rshift_both_capslock)" +}; + + +// Set CapsLock when pressed with the other Shift key, release it when pressed alone. +partial modifier_keys +xkb_symbols "lshift_both_capslock_cancel" { + key { + type[Group1]="ALPHABETIC", + symbols[Group1] = [ Shift_L, Caps_Lock ] + }; +}; +// Set CapsLock when pressed with the other Shift key, release it when pressed alone. +partial modifier_keys +xkb_symbols "rshift_both_capslock_cancel" { + key { + type[Group1]="ALPHABETIC", + symbols[Group1] = [ Shift_R, Caps_Lock ] + }; +}; +partial modifier_keys +xkb_symbols "both_capslock_cancel" { + include "shift(lshift_both_capslock_cancel)" + include "shift(rshift_both_capslock_cancel)" +}; + + +// Toggle ShiftLock when pressed together with the other Shift key. +partial modifier_keys +xkb_symbols "lshift_both_shiftlock" { + key { + type[Group1]="TWO_LEVEL", + symbols[Group1] = [ Shift_L, Shift_Lock ] + }; +}; +// Toggle ShiftLock when pressed together with the other Shift key. +partial modifier_keys +xkb_symbols "rshift_both_shiftlock" { + key { + type[Group1]="TWO_LEVEL", + symbols[Group1] = [ Shift_R, Shift_Lock ] + }; +}; +partial modifier_keys +xkb_symbols "both_shiftlock" { + include "shift(lshift_both_shiftlock)" + include "shift(rshift_both_shiftlock)" +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/srvr_ctrl b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/srvr_ctrl new file mode 100644 index 0000000..902c51c --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/srvr_ctrl @@ -0,0 +1,110 @@ +// Actions which control the server's behavior. + +partial keypad_keys function_keys +xkb_symbols "xfree86" { + include "keypad(operators)" + include "srvr_ctrl(fkey2vt)" +}; + +partial function_keys +xkb_symbols "fkey2vt" { + + key { + type="CTRL+ALT", + symbols[Group1]= [ F1, F1, F1, F1, XF86_Switch_VT_1 ] + }; + + key { + type="CTRL+ALT", + symbols[Group1]= [ F2, F2, F2, F2, XF86_Switch_VT_2 ] + }; + + key { + type="CTRL+ALT", + symbols[Group1]= [ F3, F3, F3, F3, XF86_Switch_VT_3 ] + }; + + key { + type="CTRL+ALT", + symbols[Group1]= [ F4, F4, F4, F4, XF86_Switch_VT_4 ] + }; + + key { + type="CTRL+ALT", + symbols[Group1]= [ F5, F5, F5, F5, XF86_Switch_VT_5 ] + }; + + key { + type="CTRL+ALT", + symbols[Group1]= [ F6, F6, F6, F6, XF86_Switch_VT_6 ] + }; + + key { + type="CTRL+ALT", + symbols[Group1]= [ F7, F7, F7, F7, XF86_Switch_VT_7 ] + }; + + key { + type="CTRL+ALT", + symbols[Group1]= [ F8, F8, F8, F8, XF86_Switch_VT_8 ] + }; + + key { + type="CTRL+ALT", + symbols[Group1]= [ F9, F9, F9, F9, XF86_Switch_VT_9 ] + }; + + key { + type="CTRL+ALT", + symbols[Group1]= [ F10, F10, F10, F10, XF86_Switch_VT_10 ] + }; + + key { + type="CTRL+ALT", + symbols[Group1]= [ F11, F11, F11, F11, XF86_Switch_VT_11 ] + }; + + key { + type="CTRL+ALT", + symbols[Group1]= [ F12, F12, F12, F12, XF86_Switch_VT_12 ] + }; +}; + +partial function_keys keypad_keys +xkb_symbols "no_srvr_keys" { + + key.type="TWO_LEVEL"; + + key { [ F1, F1 ] }; + key { [ F2, F2 ] }; + key { [ F3, F3 ] }; + key { [ F4, F4 ] }; + key { [ F5, F5 ] }; + key { [ F6, F6 ] }; + key { [ F7, F7 ] }; + key { [ F8, F8 ] }; + key { [ F9, F9 ] }; + key { [ F10, F10 ] }; + key { [ F11, F11 ] }; + key { [ F12, F12 ] }; + + key { [ KP_Divide, KP_Divide ] }; + key { [ KP_Multiply, KP_Multiply ] }; + key { [ KP_Subtract, KP_Subtract ] }; + key { [ KP_Add, KP_Add ] }; +}; + +partial function_keys +xkb_symbols "grab_debug" { + + key { + type="CTRL+ALT", + symbols[Group1]= [ F11, F11, F11, F11, XF86LogGrabInfo ] + }; + + key { + type="CTRL+ALT", + symbols[Group1]= [ F12, F12, F12, F12, XF86LogWindowTree ] + }; + +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/terminate b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/terminate new file mode 100644 index 0000000..a43f2b9 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/terminate @@ -0,0 +1,7 @@ +default partial modifier_keys +xkb_symbols "ctrl_alt_bksp" { + key { + type="CTRL+ALT", + symbols[Group1] = [ NoSymbol, NoSymbol, NoSymbol, NoSymbol, Terminate_Server ] + }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/us b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/us new file mode 100644 index 0000000..35eb166 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/symbols/us @@ -0,0 +1,1563 @@ +default partial alphanumeric_keys modifier_keys +xkb_symbols "basic" { + + name[Group1]= "English (US)"; + + key { [ grave, asciitilde ] }; + key { [ 1, exclam ] }; + key { [ 2, at ] }; + key { [ 3, numbersign ] }; + key { [ 4, dollar ] }; + key { [ 5, percent ] }; + key { [ { H, E, L, L, O }, asciicircum ] }; + key { [ { Y, E, S, space, T, H, I, S, space, I, S, space, D, O, G }, ampersand ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + + key { [ q, Q ] }; + key { [ w, W ] }; + key { [ e, E ] }; + key { [ r, R ] }; + key { [ t, T ] }; + key { [ y, Y ] }; + key { [ u, U ] }; + key { [ i, I ] }; + key { [ o, O ] }; + key { [ p, P ] }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + key { [ a, A ] }; + key { [ s, S ] }; + key { [ d, D ] }; + key { [ f, F ] }; + key { [ g, G ] }; + key { [ h, H ] }; + key { [ j, J ] }; + key { [ k, K ] }; + key { [ l, L ] }; + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + + key { [ z, Z ] }; + key { [ x, X ] }; + key { [ c, C ] }; + key { [ v, V ] }; + key { [ b, B ] }; + key { [ n, N ] }; + key { [ m, M ] }; + key { [ comma, less ] }; + key { [ period, greater ] }; + key { [ slash, question ] }; + + key { [ backslash, bar ] }; +}; + +partial alphanumeric_keys +xkb_symbols "euro" { + + include "us(basic)" + name[Group1]= "English (US, with euro on 5)"; + + include "eurosign(5)" + + include "level3(ralt_switch)" +}; + + +partial alphanumeric_keys +xkb_symbols "intl" { + + include "us(basic)" + name[Group1]= "English (US, international with dead keys)"; + + key { [dead_grave, dead_tilde, grave, asciitilde ] }; + key { [ 1, exclam, exclamdown, onesuperior ] }; + key { [ 2, at, twosuperior, dead_doubleacute ] }; + key { [ 3, numbersign, threesuperior, dead_macron ] }; + key { [ 4, dollar, currency, sterling ] }; + key { [ 5, percent, EuroSign, dead_cedilla ] }; + key { [ 6, dead_circumflex, onequarter, asciicircum ] }; + key { [ 7, ampersand, onehalf, dead_horn ] }; + key { [ 8, asterisk, threequarters, dead_ogonek ] }; + key { [ 9, parenleft, leftsinglequotemark, dead_breve ] }; + key { [ 0, parenright, rightsinglequotemark, dead_abovering ] }; + key { [ minus, underscore, yen, dead_belowdot ] }; + key { [ equal, plus, multiply, division ] }; + + key { [ q, Q, adiaeresis, Adiaeresis ] }; + key { [ w, W, aring, Aring ] }; + key { [ e, E, eacute, Eacute ] }; + key { [ r, R, registered, registered ] }; + key { [ t, T, thorn, THORN ] }; + key { [ y, Y, udiaeresis, Udiaeresis ] }; + key { [ u, U, uacute, Uacute ] }; + key { [ i, I, iacute, Iacute ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ p, P, odiaeresis, Odiaeresis ] }; + key { [ bracketleft, braceleft, guillemotleft, leftdoublequotemark ] }; + key { [bracketright, braceright, guillemotright, rightdoublequotemark ] }; + + key { [ a, A, aacute, Aacute ] }; + key { [ s, S, ssharp, section ] }; + key { [ d, D, eth, ETH ] }; + key { [ f, F, f, F ] }; + key { [ g, G, g, G ] }; + key { [ h, H, h, H ] }; + key { [ j, J, j, J ] }; + key { [ k, K, oe, OE ] }; + + key { [ l, L, oslash, Ooblique ] }; + key { [ semicolon, colon, paragraph, degree ] }; + key { [dead_acute, dead_diaeresis, apostrophe, quotedbl ] }; + + key { [ z, Z, ae, AE ] }; + key { [ x, X, x, X ] }; + key { [ c, C, copyright, cent ] }; + key { [ v, V, v, V ] }; + key { [ b, B, b, B ] }; + key { [ n, N, ntilde, Ntilde ] }; + key { [ m, M, mu, mu ] }; + key { [ comma, less, ccedilla, Ccedilla ] }; + key { [ period, greater, dead_abovedot, dead_caron ] }; + key { [ slash, question, questiondown, dead_hook ] }; + key { [ backslash, bar, notsign, brokenbar ] }; + + key { [ backslash, bar, backslash, bar ] }; + + include "level3(ralt_switch)" +}; + +// Based on symbols/us_intl keyboard map: +// Dead-keys definition for a very simple US/ASCII layout. +// by Conectiva (http://www.conectiva.com.br) +// modified by Ricardo Y. Igarashi (iga@that.com.br) + +// Added the following deadkeys, to make it truly international: +// +// dead_macron: on AltGr-minus +// dead_breve: on AltGr-parenleft +// dead_abovedot: on AltGr-period +// dead_abovering: on AltGr-0 +// dead_doubleacute: on AltGr-equal (as quotedbl is already used) +// dead_caron: on AltGr-less (AltGr-shift-comma) +// dead_cedilla: on AltGr-comma +// dead_ogonek: on AltGr-semicolon +// dead_belowdot: on AltGr-underscore (AltGr-shift-minus) +// dead_hook: on AltGr-question +// dead_horn: on AltGr-plus (AltGr-shift-equal) +// dead_diaeresis: on AltGr-colon (Alt-shift-semicolon) +// +// those were already there: +// dead_grave +// dead_acute +// dead_circumflex +// dead_tilde +// dead_diaeresis + +partial alphanumeric_keys +xkb_symbols "alt-intl" { + + include "us" + name[Group1]= "English (US, alternative international)"; + + key { [ dead_grave, dead_tilde, grave, asciitilde ] }; + key { [ 5, percent, EuroSign ] }; + key { [ 6, dead_circumflex, asciicircum, asciicircum ] }; + key { [ 9, parenleft, leftsinglequotemark, dead_breve ] }; + key { [ 0, parenright, rightsinglequotemark, dead_abovering ] }; + key { [ minus, underscore, dead_macron, dead_belowdot ] }; + key { [ equal, plus, dead_doubleacute, dead_horn ] }; + + key { [ e, E, EuroSign, cent ] }; + + key { [ semicolon, colon, dead_ogonek, dead_diaeresis ] }; + key { [ dead_acute, dead_diaeresis, apostrophe, quotedbl ] }; + + key { [ comma, less, dead_cedilla, dead_caron ] }; + key { [ period, greater, dead_abovedot, dead_circumflex ] }; + key { [ slash, question, dead_hook, dead_hook ] }; + + key { [ backslash, bar, backslash, bar ] }; + + include "level3(ralt_switch)" +}; + +// based on a keyboard map from an 'xkb/symbols/dk' file + +partial alphanumeric_keys +xkb_symbols "dvorak" { + + name[Group1]= "English (Dvorak)"; + + key { [ grave, asciitilde, dead_grave, dead_tilde ] }; + + key { [ 1, exclam ] }; + key { [ 2, at ] }; + key { [ 3, numbersign ] }; + key { [ 4, dollar ] }; + key { [ 5, percent ] }; + key { [ 6, asciicircum, dead_circumflex, dead_circumflex ] }; + key { [ 7, ampersand ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft, dead_grave] }; + key { [ 0, parenright ] }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright, dead_tilde] }; + + key { [ apostrophe, quotedbl, dead_acute, dead_diaeresis ] }; + key { [ comma, less, dead_cedilla, dead_caron ] }; + key { [ period, greater, dead_abovedot, periodcentered ] }; + key { [ p, P ] }; + key { [ y, Y ] }; + key { [ f, F ] }; + key { [ g, G ] }; + key { [ c, C ] }; + key { [ r, R ] }; + key { [ l, L ] }; + key { [ slash, question ] }; + key { [ equal, plus ] }; + + key { [ a, A ] }; + key { [ o, O ] }; + key { [ e, E ] }; + key { [ u, U ] }; + key { [ i, I ] }; + key { [ d, D ] }; + key { [ h, H ] }; + key { [ t, T ] }; + key { [ n, N ] }; + key { [ s, S ] }; + key { [ minus, underscore ] }; + + key { [ semicolon, colon, dead_ogonek, dead_doubleacute ] }; + key { [ q, Q ] }; + key { [ j, J ] }; + key { [ k, K ] }; + key { [ x, X ] }; + key { [ b, B ] }; + key { [ m, M ] }; + key { [ w, W ] }; + key { [ v, V ] }; + key { [ z, Z ] }; + + key { [ backslash, bar ] }; +}; + +// Dvorak international with dead keys +// Olivier Mehani (shtrom-xorg@ssji.net) +// Reproduce the per-key mapping of us(intl) for the dvorak layout +// aka "I just swapped my keys over" +partial alphanumeric_keys +xkb_symbols "dvorak-intl" { + + include "us(dvorak)" + name[Group1]= "English (Dvorak, international with dead keys)"; + + key { [dead_grave, dead_tilde, grave, asciitilde ] }; + + key { [ 1, exclam, exclamdown, onesuperior ] }; + key { [ 2, at, twosuperior, dead_doubleacute ] }; + key { [ 3, numbersign, threesuperior, dead_macron ] }; + key { [ 4, dollar, currency, sterling ] }; + key { [ 5, percent, EuroSign, dead_cedilla ] }; + key { [ 6, dead_circumflex, onequarter, asciicircum ] }; + key { [ 7, ampersand, onehalf, dead_horn ] }; + key { [ 8, asterisk, threequarters, dead_ogonek ] }; + key { [ 9, parenleft, leftsinglequotemark, dead_breve ] }; + key { [ 0, parenright, rightsinglequotemark, dead_abovering ] }; + key { [ bracketleft, braceleft, guillemotleft, leftdoublequotemark ] }; + key { [bracketright, braceright, guillemotright, rightdoublequotemark ] }; + + key { [dead_acute, dead_diaeresis, apostrophe, quotedbl ] }; + key { [ comma, less, ccedilla, Ccedilla ] }; + key { [ period, greater, dead_abovedot, dead_caron ] }; + key { [ p, P, odiaeresis, Odiaeresis ] }; + key { [ y, Y, udiaeresis, Udiaeresis ] }; + // key { [ f, F ] }; + // key { [ g, G ] }; + key { [ c, C, copyright, cent ] }; + key { [ r, R, registered, registered ] }; + key { [ l, L, oslash, Ooblique ] }; + key { [ slash, question, questiondown, dead_hook ] }; + // key { [ equal, plus, multiply, division ] }; + + key { [ a, A, aacute, Aacute ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ e, E, eacute, Eacute ] }; + key { [ u, U, uacute, Uacute ] }; + key { [ i, I, iacute, Iacute ] }; + key { [ d, D, eth, ETH ] }; + // key { [ h, H ] }; + key { [ t, T, thorn, THORN ] }; + key { [ n, N, ntilde, Ntilde ] }; + key { [ s, S, ssharp, section ] }; + // key { [ minus, underscore, yen, dead_belowdot ] }; + + key { [ semicolon, colon, paragraph, degree ] }; + key { [ q, Q, adiaeresis, Adiaeresis ] }; + // key { [ j, J ] }; + key { [ k, K, oe, OE ] }; + // key { [ x, X ] }; + // key { [ b, B ] }; + key { [ m, M, mu, mu ] }; + key { [ w, W, aring, Aring ] }; + // key { [ v, V ] }; + key { [ z, Z, ae, AE ] }; + + key { [ backslash, bar, notsign, brokenbar ] }; + + include "level3(ralt_switch)" +}; + +// Dvorak international without dead keys +// Stephane Magnenat (stephane at magnenat dot net, http://stephane.magnenat.net) +// Based on information from http://www.poupinou.org/dvorak/index.html +// +// ` 1 2 3 4 5 6 7 8 9 0 [ ] \ +// € +// +// ' , . p y f g c r l / = +// ä ê ë ü ç +// +// a o e u i d h t n s - +// à ô é û î ß +// +// ; q j k x b m w v z +// â ö è ù ï + +partial alphanumeric_keys +xkb_symbols "dvorak-alt-intl" { + + include "us(dvorak)" + name[Group1]= "English (Dvorak alternative international no dead keys)"; + + key { [ 4, dollar, EuroSign ] }; + + key { [ comma, less, adiaeresis, dead_caron ] }; + key { [ period, greater, ecircumflex, periodcentered ] }; + key { [ p, P, ediaeresis, dead_cedilla ] }; + key { [ y, Y, udiaeresis ] }; + key { [ c, C, ccedilla, dead_abovedot ] }; + + key { [ a, A, agrave ] }; + key { [ o, O, ocircumflex ] }; + key { [ e, E, eacute ] }; + key { [ u, U, ucircumflex ] }; + key { [ i, I, icircumflex ] }; + key { [ s, S, ssharp ] }; + + key { [ semicolon, colon, acircumflex ] }; + key { [ q, Q, odiaeresis, dead_ogonek ] }; + key { [ j, J, egrave, dead_doubleacute ] }; + key { [ k, K, ugrave ] }; + key { [ x, X, idiaeresis ] }; + + include "level3(ralt_switch)" +}; + +// Left and right handed dvorak layouts +// by sqweek 2006-01-30 +// Based on the corresponding layouts in the console-tools package. +partial alphanumeric_keys +xkb_symbols "dvorak-l" { + + include "us(dvorak)" + name[Group1]= "English (left handed Dvorak)"; + + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + key { [ slash, question ] }; + key { [ p, P ] }; + key { [ f, F ] }; + key { [ m, M ] }; + key { [ l, L ] }; + key { [ j, J ] }; + key { [ 4, dollar ] }; + key { [ 3, numbersign ] }; + key { [ 2, at ] }; + key { [ 1, exclam ] }; + + key { [ semicolon, colon ] }; + key { [ q, Q ] }; + key { [ b, B ] }; + key { [ y, Y ] }; + key { [ u, U ] }; + key { [ r, R ] }; + key { [ s, S ] }; + key { [ o, O ] }; + key { [ period, greater ] }; + key { [ 6, asciicircum ] }; + key { [ 5, percent ] }; + key { [ equal, plus ] }; + + key { [ minus, underscore ] }; + key { [ k, K ] }; + key { [ c, C ] }; + key { [ d, D ] }; + key { [ t, T ] }; + key { [ h, H ] }; + key { [ e, E ] }; + key { [ a, A ] }; + key { [ z, Z ] }; + key { [ 8, asterisk ] }; + key { [ 7, ampersand ] }; + + key { [ apostrophe, quotedbl ] }; + key { [ x, X ] }; + key { [ g, G ] }; + key { [ v, V ] }; + key { [ w, W ] }; + key { [ n, N ] }; + key { [ i, I ] }; + key { [ comma, less ] }; + key { [ 0, parenright ] }; + key { [ 9, parenleft ] }; +}; + +partial alphanumeric_keys +xkb_symbols "dvorak-r" { + + include "us(dvorak)" + name[Group1]= "English (right handed Dvorak)"; + + key { [ 1, exclam ] }; + key { [ 2, at ] }; + key { [ 3, numbersign ] }; + key { [ 4, dollar ] }; + key { [ j, J ] }; + key { [ l, L ] }; + key { [ m, M ] }; + key { [ f, F ] }; + key { [ p, P ] }; + key { [ slash, question ] }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + key { [ 5, percent ] }; + key { [ 6, asciicircum ] }; + key { [ q, Q ] }; + key { [ period, greater ] }; + key { [ o, O ] }; + key { [ r, R ] }; + key { [ s, S ] }; + key { [ u, U ] }; + key { [ y, Y ] }; + key { [ b, B ] }; + key { [ semicolon, colon ] }; + key { [ equal, plus ] }; + + key { [ 7, ampersand ] }; + key { [ 8, asterisk ] }; + key { [ z, Z ] }; + key { [ a, A ] }; + key { [ e, E ] }; + key { [ h, H ] }; + key { [ t, T ] }; + key { [ d, D ] }; + key { [ c, C ] }; + key { [ k, K ] }; + key { [ minus, underscore ] }; + + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ x, X ] }; + key { [ comma, less ] }; + key { [ i, I ] }; + key { [ n, N ] }; + key { [ w, W ] }; + key { [ v, V ] }; + key { [ g, G ] }; + key { [ apostrophe, quotedbl ] }; +}; + +// Classic dvorak layout +// by Piter Punk - 2006-07-06 +// Based on dvorak layout and e-mail from Russel L. Harris rlharris@oplink.net +// on xorg list. +partial alphanumeric_keys +xkb_symbols "dvorak-classic" { + + name[Group1]= "English (classic Dvorak)"; + + key { [ grave, asciitilde, dead_grave, dead_tilde ] }; + + key { [ bracketleft, braceleft ] }; + key { [ 7, ampersand ] }; + key { [ 5, percent ] }; + key { [ 3, numbersign ] }; + key { [ 1, exclam ] }; + key { [ 9, parenleft, dead_grave] }; + key { [ 0, parenright ] }; + key { [ 2, at ] }; + key { [ 4, dollar ] }; + key { [ 6, asciicircum, dead_circumflex, dead_circumflex ] }; + key { [ 8, asterisk ] }; + key { [ bracketright, braceright, dead_tilde] }; + + key { [ slash, question ] }; + key { [ comma, less, dead_cedilla, dead_caron ] }; + key { [ period, greater, dead_abovedot, periodcentered ] }; + key { [ p, P ] }; + key { [ y, Y ] }; + key { [ f, F ] }; + key { [ g, G ] }; + key { [ c, C ] }; + key { [ r, R ] }; + key { [ l, L ] }; + key { [ apostrophe, quotedbl, dead_acute, dead_diaeresis ] }; + key { [ equal, plus ] }; + + key { [ a, A ] }; + key { [ o, O ] }; + key { [ e, E ] }; + key { [ u, U ] }; + key { [ i, I ] }; + key { [ d, D ] }; + key { [ h, H ] }; + key { [ t, T ] }; + key { [ n, N ] }; + key { [ s, S ] }; + key { [ minus, underscore ] }; + + key { [ semicolon, colon, dead_ogonek, dead_doubleacute ] }; + key { [ q, Q ] }; + key { [ j, J ] }; + key { [ k, K ] }; + key { [ x, X ] }; + key { [ b, B ] }; + key { [ m, M ] }; + key { [ w, W ] }; + key { [ v, V ] }; + key { [ z, Z ] }; + key { [ backslash, bar ] }; +}; + +// Programmer Dvorak, by Roland Kaufmann +// License: BSD, available at +// Main features: Numbers are in shift position (like French), symbols have been +// placed in locations that give good hand-alternation and finger rolling with +// symbols that usually follows, accented characters are possible for I18N. +partial alphanumeric_keys +xkb_symbols "dvp" { + + include "us(dvorak)" + name[Group1] = "English (programmer Dvorak)"; + + // Unmodified Shift AltGr Shift+AltGr + // symbols row, left side + key { [ dollar, asciitilde, dead_tilde ] }; + key { [ ampersand, percent ] }; + key { [ bracketleft, 7, currency ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; + key { [ braceleft, 5, cent ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; + key { [ braceright, 3, yen ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; + key { [ parenleft, 1, EuroSign ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; + key { [ equal, 9, sterling ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; + + // symbols row, right side + key { [ asterisk, 0 ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; + key { [ parenright, 2, onehalf ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; + key { [ plus, 4 ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; + key { [ bracketright, 6 ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; + key { [ exclam, 8, exclamdown, U2E18 ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; // reversed interrobang + key { [ numbersign, grave, dead_grave ] }; + key { [ BackSpace, BackSpace ] }; + + // upper row, left side + key { [ semicolon, colon, dead_diaeresis ] }; + key { [ comma, less, guillemotleft, ellipsis ] }; + key { [ period, greater, guillemotright ] }; + key { [ p, P, paragraph, section ] }; + key { [ y, Y, udiaeresis, Udiaeresis ] }; + + // upper row, right side + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ r, R, registered, trademark ] }; + key { [ slash, question, questiondown, U203D ] }; // interrobang + key { [ at, asciicircum, dead_circumflex, dead_caron ] }; + + // home row, left side + key { [ a, A, aring, Aring ] }; + key { [ o, O, oslash, Ooblique ] }; + key { [ e, E, ae, AE ] }; + key { [ u, U, eacute, Eacute ] }; + + // home row, right side + key { [ d, D, eth, ETH ] }; + key { [ h, H, dead_acute ] }; + key { [ t, T, thorn, THORN ] }; + key { [ n, N, ntilde, Ntilde ] }; + key { [ s, S, ssharp ] }; + key { [ minus, underscore, hyphen, endash ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; + key { [ backslash, bar ] }; + + // lower row, left side + key { [ apostrophe, quotedbl, dead_acute ] }; + key { [ m, M, mu ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; + + include "level3(ralt_switch)" +}; + +// phonetic layout for Russian letters on an US keyboard +// by Ivan Popov 2005-07-17 + +// level3 modifier is a shortcut to the "us" meaning of the keys where +// we place cyrillic letters, handy for accessing the corresponding +// punctuation marks. +// It is important to have access to punctuation marks, and the rest of +// alphabetical keys are added for being consequent so that the users +// can expect the level3 modifier to give what the key label shows. + +partial alphanumeric_keys +xkb_symbols "rus" { + + include "us(basic)" + name[Group1]= "Russian (US, phonetic)"; + +key.type[group1]="FOUR_LEVEL_ALPHABETIC"; + + key { [ Cyrillic_a, Cyrillic_A ] }; + key { [ Cyrillic_be, Cyrillic_BE ] }; + key { [ Cyrillic_ve, Cyrillic_VE ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE ] }; + key { [ Cyrillic_de, Cyrillic_DE ] }; + key { [ Cyrillic_ie, Cyrillic_IE ] }; + key { [ Cyrillic_io, Cyrillic_IO, grave, asciitilde ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key { [ Cyrillic_ze, Cyrillic_ZE ] }; + key { [ Cyrillic_i, Cyrillic_I ] }; + key { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; + key { [ Cyrillic_ka, Cyrillic_KA ] }; + key { [ Cyrillic_el, Cyrillic_EL ] }; + key { [ Cyrillic_em, Cyrillic_EM ] }; + key { [ Cyrillic_en, Cyrillic_EN ] }; + key { [ Cyrillic_o, Cyrillic_O ] }; + key { [ Cyrillic_pe, Cyrillic_PE ] }; + key { [ Cyrillic_er, Cyrillic_ER ] }; + key { [ Cyrillic_es, Cyrillic_ES ] }; + key { [ Cyrillic_te, Cyrillic_TE ] }; + key { [ Cyrillic_u, Cyrillic_U ] }; + key { [ Cyrillic_ef, Cyrillic_EF ] }; + key { [ Cyrillic_ha, Cyrillic_HA ] }; + key { [ Cyrillic_tse, Cyrillic_TSE ] }; + key { [ Cyrillic_che, Cyrillic_CHE, semicolon, colon ] }; + key { [ Cyrillic_sha, Cyrillic_SHA, bracketleft, braceleft] }; + key { [ Cyrillic_shcha, Cyrillic_SHCHA, bracketright, braceright ] }; + key { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, equal, plus ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU ] }; + key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; + key { [ Cyrillic_e, Cyrillic_E, backslash, bar ] }; + key { [ Cyrillic_yu, Cyrillic_YU, apostrophe, quotedbl ] }; + key { [ Cyrillic_ya, Cyrillic_YA ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "mac" { + + include "us(basic)" + name[Group1]= "English (Macintosh)"; + key.type[group1]="FOUR_LEVEL"; + + // Slightly improvised from http://homepage.mac.com/thgewecke/kblayout.jpg + key { [ section, plusminus, section, plusminus ] }; + key { [ grave, asciitilde, dead_grave, dead_horn ] }; + key { [ 1, exclam, exclamdown, U2044 ] }; + key { [ 2, at, trademark, EuroSign ] }; + key { [ 3, numbersign, sterling, U2039 ] }; + key { [ 4, dollar, cent, U203A ] }; + key { [ 5, percent, infinity, UFB01 ] }; + key { [ 6,asciicircum, section, UFB02 ] }; + key { [ 7, ampersand, paragraph, doubledagger ] }; + key { [ 8, asterisk, enfilledcircbullet, degree ] }; + key { [ 9, parenleft, ordfeminine, periodcentered ] }; + key { [ 0, parenright, masculine,singlelowquotemark] }; + key { [ minus, underscore, endash, emdash ] }; + key { [ equal, plus, notequal, plusminus ] }; + + key { [ q, Q, oe, OE ] }; + key { [ w, W, U2211,doublelowquotemark] }; + key { [ e, E, dead_acute, acute ] }; + key { [ r, R, registered, U2030 ] }; + key { [ t, T, dagger, dead_caron ] }; + key { [ y, Y, yen, onequarter ] }; + key { [ u, U, dead_diaeresis, diaeresis ] }; + key { [ i, I, dead_circumflex, U02C6 ] }; + key { [ o, O, oslash, Ooblique ] }; + key { [ p, P, Greek_pi, U220F ] }; + key { [ bracketleft, braceleft, leftdoublequotemark, rightdoublequotemark ] }; + key { [bracketright, braceright, leftsinglequotemark, rightsinglequotemark ] }; + key { [ backslash, bar, guillemotleft, guillemotright ] }; + + key { [ a, A, aring, Aring ] }; + key { [ s, S, ssharp, dead_stroke ] }; + key { [ d, D, partialderivative, eth ] }; + key { [ f, F, function, dead_hook ] }; + key { [ g, G, copyright, dead_doubleacute ] }; + key { [ h, H, dead_abovedot, dead_belowdot ] }; + key { [ j, J, U2206, onehalf ] }; + key { [ k, K,dead_abovering, UF8FF ] }; + + key { [ l, L, notsign, THORN ] }; + key { [ semicolon, colon, U2026, thorn ] }; + key { [apostrophe, quotedbl, ae, AE ] }; + + key { [ z, Z, Greek_OMEGA, dead_cedilla ] }; + key { [ x, X, U2248, dead_ogonek ] }; + // unclear whether "approxeq" is 2248 or 2245 + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ v, V, squareroot, U25CA ] }; + key { [ b, B, integral, idotless ] }; + key { [ n, N, dead_tilde, U02DC ] }; + key { [ m, M, mu, threequarters ] }; + key { [ comma, less, lessthanequal, dead_macron ] }; + key { [ period, greater, greaterthanequal, dead_breve ] }; + key { [ slash, question, division, questiondown ] }; + + include "level3(ralt_switch)" +}; + +// Colemak symbols for xkb on X.Org Server 7.x +// 2006-01-01 Shai Coleman, http://colemak.com/ + +partial alphanumeric_keys +xkb_symbols "colemak" { + + include "us" + name[Group1]= "English (Colemak)"; + + key { [ grave, asciitilde, dead_tilde, asciitilde ] }; + key { [ 1, exclam, exclamdown, onesuperior ] }; + key { [ 2, at, masculine, twosuperior ] }; + key { [ 3, numbersign, ordfeminine, threesuperior ] }; + key { [ 4, dollar, cent, sterling ] }; + key { [ 5, percent, EuroSign, yen ] }; + key { [ 6, asciicircum, hstroke, Hstroke ] }; + key { [ 7, ampersand, eth, ETH ] }; + key { [ 8, asterisk, thorn, THORN ] }; + key { [ 9, parenleft, leftsinglequotemark, leftdoublequotemark ] }; + key { [ 0, parenright, rightsinglequotemark, rightdoublequotemark ] }; + key { [ minus, underscore, endash, emdash ] }; + key { [ equal, plus, multiply, division ] }; + + key { [ q, Q, adiaeresis, Adiaeresis ] }; + key { [ w, W, aring, Aring ] }; + key { [ f, F, atilde, Atilde ] }; + key { [ p, P, oslash, Ooblique ] }; + key { [ g, G, dead_ogonek, asciitilde ] }; + key { [ j, J, dstroke, Dstroke ] }; + key { [ l, L, lstroke, Lstroke ] }; + key { [ u, U, uacute, Uacute ] }; + key { [ y, Y, udiaeresis, Udiaeresis ] }; + key { [ semicolon, colon, odiaeresis, Odiaeresis ] }; + key { [ bracketleft, braceleft, guillemotleft, 0x1002039 ] }; + key { [ bracketright, braceright, guillemotright, 0x100203a ] }; + key { [ backslash, bar, asciitilde, asciitilde ] }; + + key { [ a, A, aacute, Aacute ] }; + key { [ r, R, dead_grave, asciitilde ] }; + key { [ s, S, ssharp, asciitilde ] }; + key { [ t, T, dead_acute, dead_doubleacute ] }; + key { [ d, D, dead_diaeresis, asciitilde ] }; + key { [ h, H, dead_caron, asciitilde ] }; + key { [ n, N, ntilde, Ntilde ] }; + key { [ e, E, eacute, Eacute ] }; + key { [ i, I, iacute, Iacute ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ apostrophe, quotedbl, otilde, Otilde ] }; + + key { [ z, Z, ae, AE ] }; + key { [ x, X, dead_circumflex, asciitilde ] }; + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ v, V, oe, OE ] }; + key { [ b, B, dead_breve, asciitilde ] }; + key { [ k, K, dead_abovering, asciitilde ] }; + key { [ m, M, dead_macron, asciitilde ] }; + key { [ comma, less, dead_cedilla, asciitilde ] }; + key { [ period, greater, dead_abovedot, asciitilde ] }; + key { [ slash, question, questiondown, asciitilde ] }; + + key { [ BackSpace, BackSpace, BackSpace, BackSpace ] }; + key { [ minus, underscore, endash, emdash ] }; + key { [ space, space, space, nobreakspace ] }; + + include "level3(ralt_switch)" +}; + +// I do NOT like dead-keys - the International keyboard as defined by Microsoft +// doesn't fit my needs. Why use two keystrokes for all simple characters (eg ' +// and generates a single ') just to have an é (eacute) in two strokes +// as well? I type ' more often than é (eacute). +// +// This file works just like a regular keyboard, BUT has all dead-keys +// accessible at level3 (through AltGr). An ë (ediaeresis) is now: AltGr+" +// followed by an e. In other words, this keyboard is not international as long +// as you leave the right Alt key alone. +// +// The original MS International keyboard was intended for Latin1 (iso8859-1). +// With the introduction of iso8859-15, the (important) ligature oe (and OE) +// became available. I added them next to ae. Because I write ediaeresis more +// often than registered, I moved registered to be next to copyright and added +// ediaeresis and idiaeresis. - Adriaan + +partial alphanumeric_keys +xkb_symbols "altgr-intl" { + + include "us(intl)" + name[Group1]= "English (international AltGr dead keys)"; + +// five dead keys moved into level3: + + key { [ grave, asciitilde, dead_grave, dead_tilde ] }; + key { [apostrophe,quotedbl, dead_acute, dead_diaeresis ] }; + +// diversions from the MS Intl keyboard: + + key { [ 1, exclam, onesuperior, exclamdown ] }; + key { [ r, R, ediaeresis, Ediaeresis ] }; + key { [ j, J, idiaeresis, Idiaeresis ] }; + key { [ x, X, oe, OE ] }; + key { [ v, V, registered, registered ] }; + +// onequarter etc (not in iso8859-15) moved to get three unshifted deadkeys: + + key { [ 6, asciicircum, dead_circumflex, onequarter ] }; + key { [ 7, ampersand, dead_horn, onehalf ] }; + key { [ 8, asterisk, dead_ogonek, threequarters ] }; + + include "level3(ralt_switch)" +}; + +// Intel ClassmatePC Keyboard Layout +// by Piter PUNK +// +// The keyboard layouts below maps the us(basic), us(intl) and us(alt-intl) +// to ClassmatePC keyboard. All layouts uses RCTL as level3(switch) since +// the keyboard doesn't have AltGr key. The EuroSign is engraved at 5 key. + +// classmate - us(basic) +partial alphanumeric_keys +xkb_symbols "classmate" { + include "us(basic)" + name[Group1]= "English (US)"; + + key { [ backslash, bar, backslash, bar ] }; + + include "eurosign(5)" + include "level3(switch)" +}; + +// classmate-intl - us(intl) +// RCTL is generated by Fn+Alt, because that, when trying to access +// the level3 symbols at 7,8,9,0,u,i,o,p,j,k,l,;,m,. and / we got +// the keypad keycodes. The keypad is changed to make Fn+Alt+ +// generate the same symbol as the original key. +partial alphanumeric_keys +xkb_symbols "classmate-intl" { + include "us(intl)" + name[Group1]= "USA - ClassmatePC (International)"; + key.type[Group1]="FOUR_LEVEL"; + + key { [ backslash, bar, backslash, bar ] }; + + key { [ KP_Home, KP_7, + onehalf, dead_horn ] }; + key { [ KP_Up, KP_8, + threequarters, dead_ogonek ] }; + key { [ KP_Prior, KP_9, + leftsinglequotemark, dead_breve ] }; + key { [ KP_Multiply, KP_Multiply, + rightsinglequotemark, dead_abovering ] }; + + key { [ KP_Left, KP_4, + uacute, Uacute ] }; + key { [ KP_Begin, KP_5, + iacute, Iacute ] }; + key { [ KP_Right, KP_6, + oacute, Oacute ] }; + key { [ KP_Subtract, KP_Subtract, + odiaeresis, Odiaeresis ] }; + + key { [ KP_Down, KP_2, + oe, OE ] }; + key { [ KP_Next, KP_3, + oslash, Ooblique ] }; + key { [ KP_Add, KP_Add, + paragraph, degree ] }; + + key { [ KP_Insert, KP_0, + mu, mu ] }; + key { [ KP_Delete, KP_Decimal, + dead_abovedot, dead_caron ] }; + key { [ KP_Divide, KP_Divide, + questiondown, dead_hook ] }; + + include "level3(switch)" +}; + +// classmate-alt-intl - us(alt-intl) +// RCTL is generated by Fn+Alt, because that, when trying to access +// the level3 symbols at 7,8,9,0,u,i,o,p,j,k,l,;,m,. and / we got +// the keypad keycodes. The keypad is changed to make Fn+Alt+ +// generate the same symbol as the original key. +partial alphanumeric_keys +xkb_symbols "classmate-alt-intl" { + include "us(alt-intl)" + name[Group1]= "USA - ClassmatePC (Alternative international)"; + key.type[Group1]="FOUR_LEVEL"; + + key { [ backslash, bar, backslash, bar ] }; + + key { [ KP_Subtract, KP_Subtract ] }; + + key { [ KP_Prior, KP_9, + leftsinglequotemark, dead_breve ] }; + key { [ KP_Multiply, KP_Multiply, + rightsinglequotemark, dead_abovering ] }; + + key { [ KP_Add, KP_Add, + dead_ogonek, dead_diaeresis ] }; + + key { [ KP_Delete, KP_Decimal, + dead_abovedot, dead_circumflex ] }; + key { [ KP_Divide, KP_Divide, + dead_hook, dead_hook ] }; + + include "level3(switch)" +}; + +// classmate-altgr-intl - us(altgr-intl) +// RCTL is generated by Fn+Alt, because that, when trying to access +// the level3 symbols at 7,8,9,0,u,i,o,p,j,k,l,;,m,. and / we got +// the keypad keycodes. The keypad is changed to make Fn+Alt+ +// generate the same symbol as the original key. +partial alphanumeric_keys +xkb_symbols "classmate-altgr-intl" { + include "us(altgr-intl)" + name[Group1]= "USA - ClassmatePC (International Fn+Alt dead-keys)"; + key.type[Group1]="FOUR_LEVEL"; + + key { [ backslash, bar, backslash, bar ] }; + + key { [ KP_Home, KP_7, + dead_horn, dead_horn ] }; + key { [ KP_Up, KP_8, + dead_ogonek, dead_ogonek ] }; + key { [ KP_Prior, KP_9, + leftsinglequotemark, dead_breve ] }; + key { [ KP_Multiply, KP_Multiply, + rightsinglequotemark, dead_abovering ] }; + + key { [ KP_Left, KP_4, + uacute, Uacute ] }; + key { [ KP_Begin, KP_5, + iacute, Iacute ] }; + key { [ KP_Right, KP_6, + oacute, Oacute ] }; + key { [ KP_Subtract, KP_Subtract, + odiaeresis, Odiaeresis ] }; + + key { [ KP_End, KP_1, + idiaeresis, Idiaeresis ] }; + key { [ KP_Down, KP_2, + oe, OE ] }; + key { [ KP_Next, KP_3, + oslash, Ooblique ] }; + key { [ KP_Add, KP_Add, + paragraph, degree ] }; + + key { [ KP_Insert, KP_0, + mu, mu ] }; + key { [ KP_Delete, KP_Decimal, + dead_abovedot, dead_caron ] }; + key { [ KP_Divide, KP_Divide, + questiondown, dead_hook ] }; + + include "level3(switch)" +}; + +partial alphanumeric_keys +xkb_symbols "olpc" { + + include "us(basic)" + name[Group1]= "English (US)"; + + // OLPC international US English keyboard layout. + // It's a little different from the usual international layout. + // See: http://wiki.laptop.org/go/Image:Keyboard_english.png + + key { [ grave, asciitilde, dead_grave, dead_tilde ] }; + key { [ 1, exclam, exclamdown, exclamdown ] }; + key { [ 2, at, notsign, notsign ] }; + key { [ 3, numbersign, 0x1000300, 0x1000300 ] }; // combining grave + key { [ 4, dollar, 0x1000301, 0x1000301 ] }; // combining acute + key { [ 5, percent, 0x1000306, 0x1000306 ] }; // combining breve above + key { [ 6,asciicircum, 0x100030A, 0x100030A ] }; // combining ring above + key { [ 7, ampersand, 0x1000302, 0x1000302 ] }; // combining circumflex above + key { [ 8, asterisk, 0x100030C, 0x100030C ] }; // combining caron above + key { [ 9, parenleft, 0x1000307, 0x1000307 ] }; // combining dot above + key { [ 0, parenright, 0x1000308, 0x1000308 ] }; // combining diaeresis above + key { [ minus, underscore, 0x1000304, 0x1000304 ] }; // combining macron above + key { [ equal, plus, 0x1000303, 0x1000303 ] }; // combining tilde above + + key { [ q, Q, Greek_omega, Greek_OMEGA ] }; + key { [ w, W, oslash, Oslash ] }; + key { [ e, E, oe, OE ] }; + key { [ r, R, 0x1000327, 0x1000327 ] }; // combining cedilla + key { [ t, T, 0x100032E, 0x100032E ] }; // combining breve below + key { [ y, Y, 0x1000325, 0x1000325 ] }; // combining ring below + key { [ u, U, 0x100032D, 0x100032D ] }; // combining circumflex below + key { [ i, I, 0x100032C, 0x100032C ] }; // combining caron below + key { [ o, O, 0x1000323, 0x1000323 ] }; // combining dot below + key { [ p, P, 0x1000324, 0x1000324 ] }; // combining diaeresis below + key { [ bracketleft, braceleft, 0x1000331, 0x1000331 ] }; // combining macron below + key { [bracketright, braceright, 0x1000330, 0x1000330 ] }; // combining tilde below + + key { [ a, A, ae, AE ] }; + key { [ s, S, ssharp, 0x1001E9C ] }; // uppercase S sharp + key { [ d, D, eth, ETH ] }; + key { [ f, F, thorn, THORN ] }; + key { [ h, H, sterling, sterling ] }; + key { [ j, J, EuroSign, EuroSign ] }; + key { [ semicolon, colon, masculine, ordfeminine ] }; + key { [ apostrophe, quotedbl, currency, currency ] }; + key { [ backslash, bar, section, section ] }; + + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ n, N, ntilde, Ntilde ] }; + key { [ m, M, mu, mu ] }; + key { [ comma, less, guillemotleft, guillemotleft ] }; + key { [ period, greater, guillemotright, guillemotright ] }; + key { [ slash, question, questiondown, questiondown ] }; + + key { [ multiply, division, ISO_Next_Group, ISO_Prev_Group ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "olpc2" { + include "us(olpc)" + name[Group1]= "English (the divide/multiply keys toggle the layout)"; + include "group(olpc)" +}; + +xkb_symbols "olpcm" { + + include "us(basic)" + name[Group1]= "English (US)"; + + // Mechanical (non-membrane) OLPC int'l US English keyboard layout. + // See: http://wiki.laptop.org/go/OLPC_English_Non-membrane_Keyboard + + key { [ grave, asciitilde, dead_grave, dead_tilde ] }; + key { [ 1, exclam, exclamdown, exclamdown ] }; + key { [ 2, at, notsign, notsign ] }; + key { [ 3, numbersign, 0x1000300, 0x1000300 ] }; // combining grave + key { [ 4, dollar, 0x1000301, 0x1000301 ] }; // combining acute + key { [ 5, percent, 0x1000306, 0x1000306 ] }; // combining breve above + key { [ 6,asciicircum, 0x100030A, 0x100030A ] }; // combining ring above + key { [ 7, ampersand, 0x1000302, 0x1000302 ] }; // combining circumflex above + key { [ 8, asterisk, 0x100030C, 0x100030C ] }; // combining caron above + key { [ 9, parenleft, 0x1000307, 0x1000307 ] }; // combining dot above + key { [ 0, parenright, 0x1000308, 0x1000308 ] }; // combining diaeresis above + key { [ minus, underscore, 0x1000304, 0x1000304 ] }; // combining macron above + + key { [ q, Q, Greek_omega, Greek_OMEGA ] }; + key { [ w, W, oslash, Oslash ] }; + key { [ e, E, oe, OE ] }; + key { [ r, R, 0x1000327, 0x1000327 ] }; // combining cedilla + key { [ t, T, 0x100032E, 0x100032E ] }; // combining breve below + key { [ y, Y, 0x1000325, 0x1000325 ] }; // combining ring below + key { [ u, U, 0x100032D, 0x100032D ] }; // combining circumflex below + key { [ i, I, 0x100032C, 0x100032C ] }; // combining caron below + key { [ o, O, 0x1000323, 0x1000323 ] }; // combining dot below + key { [ p, P, 0x1000324, 0x1000324 ] }; // combining diaeresis below + key { [ bracketleft, braceleft, 0x1000331, 0x1000331 ] }; // combining macron below + key { [bracketright, braceright, 0x1000330, 0x1000330 ] }; // combining tilde below + + key { [ a, A, ae, AE ] }; + key { [ s, S, ssharp, 0x1001E9C ] }; // uppercase S sharp + key { [ d, D, eth, ETH ] }; + key { [ f, F, thorn, THORN ] }; + key { [ h, H, sterling, sterling ] }; + key { [ j, J, EuroSign, EuroSign ] }; + key { [ semicolon, colon, masculine, ordfeminine ] }; + // no AC11 or AC12 on olpcm + + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ n, N, ntilde, Ntilde ] }; + key { [ m, M, mu, mu ] }; + key { [ comma, less, guillemotleft, guillemotleft ] }; + key { [ period, greater, guillemotright, guillemotright ] }; + key { [ slash, question, questiondown, questiondown ] }; + + key { [ backslash, bar, section, section ] }; + key { [ equal, plus, 0x1000303, 0x1000303 ] }; + key { [ apostrophe, quotedbl, currency, currency ] }; + + include "level3(ralt_switch)" +}; + +// Based on Cherokee Nation Official Layout +// http://www.cherokee.org/extras/downloads/font/Keyboard.htm + +partial alphanumeric_keys modifier_keys +xkb_symbols "chr" { + + name[Group1]= "Cherokee"; + key.type[group1]="ALPHABETIC"; + + key { [ grave, U13CA ] }; + key { [ 1, U13B1 ] }; + key { [ 2, U13C7 ] }; + key { [ 3, U13E7 ] }; + key { [ U13D9, U13B0 ] }; + key { [ U13E6, U13B9 ] }; + key { [ U13DC, U13DD ] }; + key { [ U13CB, U13E1 ] }; + key { [ U13D6, U13BA ] }; + key { [ U13D2, parenleft ] }; + key { [ U13C4, parenright ] }; + key { [ U13BF, U13BC ] }; + key { [ U13F3, U13BD ] }; + + key { [ U13AA, U13C6 ] }; + key { [ U13B3, U13EB ] }; + key { [ U13A1, U13E3 ] }; + key { [ U13DB, U13CF ] }; + key { [ U13D4, U13D8 ] }; + key { [ U13EF, U13F2 ] }; + key { [ U13A4, U13AD ] }; + key { [ U13A2, U13F1 ] }; + key { [ U13A3, U13EC ] }; + key { [ U13C1, U13EA ] }; + key { [ U13D5, U13D1 ] }; + key { [ U13B6, U13E4 ] }; + key { [ U13E9, U13EE ] }; + + key { [ U13A0, U13CC ] }; + key { [ U13CD, U13CE ] }; + key { [ U13D7, U13D0 ] }; + key { [ U13A9, U13C8 ] }; + key { [ U13A6, U13E5 ] }; + key { [ U13AF, U13B2 ] }; + key { [ U13DA, U13AB ] }; + key { [ U13B8, U13A7 ] }; + key { [ U13B5, U13AE ] }; + key { [ U13E8, U13E0 ] }; + key { [ apostrophe, quotedbl ] }; + + key { [ U13AC, U13C3 ] }; + key { [ U13F4, U13ED ] }; + key { [ U13D3, U13DF ] }; + key { [ U13A5, U13DE ] }; + key { [ U13A8, U13F0 ] }; + key { [ U13BE, U13BB ] }; + key { [ U13C5, U13B7 ] }; + key { [ comma, U13E2 ] }; + key { [ period, U13B4 ] }; + key { [ U13C2, U13C9 ] }; +}; + +// Serbian charecters added as third level symbols to US keyboard layout. + +partial alphanumeric_keys +xkb_symbols "hbs" { + + include "us" + name[Group1]= "Serbo-Croatian (US)"; + + key { [ grave, asciitilde ] }; + key { [ 6, dead_caron, asciicircum, asciicircum ] }; + key { [ 8, asterisk, multiply, division ] }; + key { [ minus, underscore, endash, emdash ] }; + key { [ l, L, U1C9, U1C8 ] }; + key { [ n, N, U1CC, U1CB ] }; + key { [ z, Z, U1C6, U1C5 ] }; + key { [ e, E, EuroSign, cent ] }; + key { [ d, D, dstroke, Dstroke ] }; + key { [ dead_acute, quotedbl, apostrophe, apostrophe ] }; + key { [ space, space, nobreakspace, nobreakspace ] }; + key { [ comma, less, U3003, guillemotright ] }; + key { [ period, greater, ellipsis, guillemotleft ] }; + + include "level3(ralt_switch)" +}; + +//based on http://upload.wikimedia.org/wikipedia/commons/1/18/T-Mobile_G1_launch_event_2.jpg +partial alphanumeric_keys +xkb_symbols "htcdream" { + include "inet(htcdream)" + name[Group1]= "English (US)"; + + //second row + key { [ q, Q, Tab, Tab ] }; + key { [ w, W, grave, grave ] }; + key { [ e, E, underscore, underscore ] }; + key { [ r, R, sterling, sterling ] }; + key { [ t, T, EuroSign, EuroSign ] }; + key { [ y, Y, division, division ] }; + key { [ u, U, multiply, multiply ] }; + key { [ i, I, minus, minus ] }; + key { [ o, O, plus, plus ] }; + key { [ p, P, equal, equal ] }; + + //third row + key { [ a, A, NoSymbol, NoSymbol ] }; + key { [ s, S, bar, bar ] }; + key { [ d ,D, backslash, backslash ] }; + key { [ f, F, braceleft, braceleft ] }; + key { [ g, G, braceright, braceright ] }; + key { [ h, H, colon, colon ] }; + key { [ j, J, semicolon, semicolon ] }; + key { [ k, K, quotedbl, quotedbl ] }; + key { [ l, L, apostrophe, apostrophe ] }; + + //forth row + key { [ z, Z, NoSymbol, NoSymbol ] }; + key { [ x, X, NoSymbol, NoSymbol ] }; + key { [ c, C, NoSymbol, NoSymbol ] }; + key { [ v, V, bracketleft, bracketleft ] }; + key { [ b, B, bracketright, bracketright ] }; + key { [ n, N, less, less ] }; + key { [ m, M, greater, greater ] }; + key { [ comma, comma, question, question ] }; + + //fifth row + key { [ at, at, asciitilde, asciitilde ] }; + + include "level3(alt_switch)" +}; + +// Workman Keyboard Layout symbols for xkb on X.Org Server 7.x +// 09-06-2010 OJ Bucao. http://www.workmanlayout.com + +partial alphanumeric_keys +xkb_symbols "workman" { + + include "us(basic)" + name[Group1]= "English (Workman)"; + + key { [ q, Q ] }; + key { [ d, D ] }; + key { [ r, R ] }; + key { [ w, W ] }; + key { [ b, B ] }; + key { [ j, J ] }; + key { [ f, F ] }; + key { [ u, U ] }; + key { [ p, P ] }; + key { [ semicolon, colon ] }; + + key { [ a, A ] }; + key { [ s, S ] }; + key { [ h, H ] }; + key { [ t, T ] }; + key { [ g, G ] }; + key { [ y, Y ] }; + key { [ n, N ] }; + key { [ e, E ] }; + key { [ o, O ] }; + key { [ i, I ] }; + + key { [ z, Z ] }; + key { [ x, X ] }; + key { [ m, M ] }; + key { [ c, C ] }; + key { [ v, V ] }; + key { [ k, K ] }; + key { [ l, L ] }; + + key { [ BackSpace, Escape, BackSpace, BackSpace ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "workman-intl" { + + include "us(intl)" + name[Group1]= "English (Workman, international with dead keys)"; + + key { [ q, Q, adiaeresis, Adiaeresis ] }; + key { [ d, D, eth, ETH ] }; + key { [ r, R, registered, registered ] }; + key { [ w, W, aring, Aring ] }; + key { [ b, B, b, B ] }; + key { [ j, J, j, J ] }; + key { [ f, F, f, F ] }; + key { [ u, U, uacute, Uacute ] }; + key { [ p, P, odiaeresis, Odiaeresis ] }; + key { [ semicolon, colon, paragraph, degree ] }; + + key { [ a, A, aacute, Aacute ] }; + key { [ s, S, ssharp, section ] }; + key { [ h, H, h, H ] }; + key { [ t, T, thorn, THORN ] }; + key { [ g, G, g, G ] }; + key { [ y, Y, udiaeresis, Udiaeresis ] }; + key { [ n, N, ntilde, Ntilde ] }; + key { [ e, E, eacute, Eacute ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ i, I, iacute, Iacute ] }; + + key { [ z, Z, ae, AE ] }; + key { [ x, X, x, X ] }; + key { [ m, M, mu, mu ] }; + key { [ c, C, copyright, cent ] }; + key { [ v, V, v, V ] }; + key { [ k, K, oe, OE ] }; + key { [ l, L, oslash, Ooblique ] }; + + key { [ BackSpace, Escape, BackSpace, BackSpace ] }; + + include "level3(ralt_switch)" +}; + +// Norman keyboard layout symbols for xkb on X.Org Server 7.x +// Written 11/23/2012, revised 3/7/2013 by David Norman http://normanlayout.info +// To the extent possible under law, the author(s) have dedicated all +// copyright and related and neighboring rights to this software to the +// public domain worldwide. This software is distributed without any warranty. + +partial alphanumeric_keys +xkb_symbols "norman" { + + include "us(basic)" + name[Group1]= "English (Norman)"; + + key { [ q, Q ] }; + key { [ w, W ] }; + key { [ d, D ] }; + key { [ f, F ] }; + key { [ k, K ] }; + key { [ j, J ] }; + key { [ u, U ] }; + key { [ r, R ] }; + key { [ l, L ] }; + key { [ semicolon, colon ] }; + + key { [ a, A ] }; + key { [ s, S ] }; + key { [ e, E ] }; + key { [ t, T ] }; + key { [ g, G ] }; + key { [ y, Y ] }; + key { [ n, N ] }; + key { [ i, I ] }; + key { [ o, O ] }; + key { [ h, H ] }; + + key { [ z, Z ] }; + key { [ x, X ] }; + key { [ c, C ] }; + key { [ v, V ] }; + key { [ b, B ] }; + key { [ p, P ] }; + key { [ m, M ] }; + + key { [ BackSpace ] }; + + include "level3(ralt_switch)" +}; + +// EXTRAS: + +// Czech, Slovak and German charecters added as third level symbols to US keyboard layout. +partial alphanumeric_keys +xkb_symbols "cz_sk_de" { + + include "us" + name[Group1]="Czech Slovak and German (US)"; + + key { [grave, asciitilde, uring, Uring ] }; + key { [ 1, exclam, uacute, Uacute ] }; + key { [ 2, at, ecaron, Ecaron ] }; + key { [ 3, numbersign, scaron, Scaron ] }; + key { [ 4, dollar, ccaron, Ccaron ] }; + key { [ 5, percent, rcaron, Rcaron ] }; + key { [ 6, asciicircum, zcaron, Zcaron ] }; + key { [ 7, ampersand, yacute, Yacute ] }; + key { [ 8, asterisk, aacute, Aacute ] }; + key { [ 9, parenleft, iacute, Iacute ] }; + key { [ 0, parenright, eacute, Eacute ] }; + key { [minus, underscore, ssharp, 0x1001E9E ] }; + key { [equal, plus, dead_acute, dead_caron ] }; + + key { [ e, E, EuroSign, Eacute ] }; + + key { [bracketleft, braceleft, udiaeresis, Udiaeresis ] }; + key { [ semicolon, colon, odiaeresis, Odiaeresis ] }; + key { [apostrophe, quotedbl,adiaeresis, Adiaeresis ] }; + + key { [ a, A, aacute, Aacute ] }; + key { [ i, I, iacute, Iacute ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ y, Y, yacute, Yacute ] }; + key { [ u, U, uring, Uring ] }; + + key { [ s, S, scaron, Scaron ] }; + key { [ z, Z, zcaron, Zcaron ] }; + key { [ c, C, ccaron, Ccaron ] }; + key { [ r, R, rcaron, Rcaron ] }; + key { [ t, T, tcaron, Tcaron ] }; + key { [ d, D, dcaron, Dcaron ] }; + key { [ n, N, ncaron, Ncaron ] }; + key { [ l, L, lcaron, Lcaron ] }; + key { [ p, P,ocircumflex, Ocircumflex ] }; + + key { [ space, space, nobreakspace, nobreakspace] }; + + include "level3(ralt_switch)" +}; + +// XCompose is out! Unicode combining is in! For those of us who live +// on the edge: A keymap using Unicode combining characters instead of +// deadkeys. This variation does not deviate from the lame MS-style +// US-intl layout; but it uses AltGr for combining, like altgr-intl. +// +// This might break your font layout layout systems (because they +// suck), caveat emptor. Also, most of today's software will count +// individual combining marks for selection, deletion, character +// counting &c., and won't be smart enough to do canonical equivalence +// when searching, &c. +// +// With Unicode combining you use "handwriting order", not +// "typewriting order" as with deadkeys. That is, you first type the +// base character, then the diacritics/accents/modifiers. This has +// the advantage of avoiding hidden states --- each keypress changes +// something on screen. +// +// TODO: as of now, this duplicates all us(intl) functionality with +// combining. With care, perhaps we could add more combining marks +// not present in intl, and support all major languages. +partial alphanumeric_keys +xkb_symbols "intl-unicode" { + + name[Group1]= "English (US, international AltGr Unicode combining)"; + + include "us(intl)" + include "level3(ralt_switch)" + + // grave, tilde + key { [grave, asciitilde, U0300, U0303 ] }; + // double acute + key { [ 2, at, twosuperior, U030B ] }; + // macron + key { [ 3, numbersign, threesuperior, U0304 ] }; + // circumflex + key { [ 6, asciicircum, onequarter, U0302 ] }; + // horn + key { [ 7, ampersand, onehalf, U031B ] }; + // ogonek + key { [ 8, asterisk, threequarters, U0328 ] }; + // breve + key { [ 9, parenleft, leftsinglequotemark, U0306 ] }; + // abovering + key { [ 0, parenright, rightsinglequotemark, U030A ] }; + + // belowdot + key { [ minus, underscore, yen, U0323 ] }; + // acute, diaeresis + key { [apostrophe, quotedbl, U0301, U0308 ] }; + // abovedot, caron + key { [ period, greater, U0307, U030C ] }; + // hook + key { [ slash, question, questiondown, U0309 ] }; + + // alt-intl compatibility + // cedilla, caron + key { [ comma, less, U0327, U030C ] }; + // ogonek, diaeresis + key { [ semicolon, colon, U0328, U0308 ] }; + // doubleacute, horn + key { [ equal, plus, U030B, U031B ] }; + + // we don't do combining latin letters and combining enclosures + // because support for those is very rare. +}; + +// XCompose is out! Unicode combining is in! For those of us who live +// on the edge: A keymap using Unicode combining characters instead of +// deadkeys. This variation does break compatibility with us-intl, +// whenever I thought it would be more mnemonic or Unicodeish. +partial alphanumeric_keys +xkb_symbols "alt-intl-unicode" { + + name[Group1]= "English (US, international AltGr Unicode combining, alternative)"; + + include "us(intl-unicode)" + + // easier macron; em-dash. + // em-dash is available via compose, but I added here since it's such + // an important typographic character. + key { [ minus, underscore, U0304, U2014 ] }; + + // belowdot, abovedot (caron at coma/less key, per above) + key { [ period, greater, U0323, U0307 ] }; + +}; + +partial alphanumeric_keys +xkb_symbols "ats" { + + include "us" + name[Group1]= "Atsina"; + + //Using Dead key to get COMBINING COMMA ABOVE for ejectives on + //q, l, t, s, m, g, k, p, w, y, r + //XCompose key is used for the other accute and grave. + + key { [ e, E, eacute, Eacute ] }; + key { [ u, U, uacute, Uacute ] }; + key { [ i, I, iacute, Iacute ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ bracketleft, braceleft, U03B8 ] }; + key { [ bracketright, braceright, U010D, U010C ] }; + //U+010C (uppercase Č) and U+010D (lowercase č). + + key { [ a, A, aacute, Aacute ] }; + + //Small letter Open use compose to key get acute accent + key { [ c, C, U0254, U0186 ] }; + key { [ comma, less, U0313 ] }; + key { [ slash, question, U0294 ] }; + + include "level3(ralt_switch)" + include "compose(rctrl)" +}; + +partial alphanumeric_keys +xkb_symbols "crd" { + + include "us" + name[Group1]= "Coeur d'Alene Salish"; + + key { [ w, W, U02B7, U02B7 ] }; + key { [ 7, ampersand, U0294 ] }; + key { [ q, Q, U221A ] }; + key { [ v, V, U0259 ] }; + key { [ backslash, bar, U026B ] }; + key { [ e, E, U025B ] }; + key { [ i, I, U026A ] }; + key { [ j, J, U01F0 ] }; + key { [ 6, asciicircum, U0295 ] }; + key { [ s, S, U0161 ] }; + key { [ c, C, U010D ] }; + key { [ o, O, U0254 ] }; + key { [ period, greater, U0323 ] }; + + include "level3(ralt_switch)" + include "compose(rctrl)" +}; + + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/us(sun_type6)" +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/sync.sh b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/sync.sh new file mode 100755 index 0000000..10001bc --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/sync.sh @@ -0,0 +1,69 @@ +#/bin/sh + +XKBCONFIGROOT='/usr/share/X11/xkb' + +if [ ! -d test/data ]; then + echo "Run this from the top source dir" + exit 1 +fi + +for file in \ + symbols/terminate \ + symbols/in \ + symbols/keypad \ + symbols/altwin \ + symbols/ctrl \ + symbols/eurosign \ + symbols/inet \ + symbols/shift \ + symbols/pc \ + symbols/ca \ + symbols/cz \ + symbols/srvr_ctrl \ + symbols/capslock \ + symbols/latin \ + symbols/level5 \ + symbols/macintosh_vndr/apple \ + symbols/macintosh_vndr/us \ + symbols/us \ + symbols/nbsp \ + symbols/il \ + symbols/group \ + symbols/compose \ + symbols/level3 \ + symbols/ru \ + symbols/rupeesign \ + symbols/kpdl \ + symbols/de \ + symbols/ch \ + symbols/empty \ + keycodes/xfree86 \ + keycodes/aliases \ + keycodes/evdev \ + keycodes/empty \ + types/complete \ + types/pc \ + types/basic \ + types/iso9995 \ + types/level5 \ + types/numpad \ + types/extra \ + types/mousekeys \ + compat/complete \ + compat/lednum \ + compat/pc \ + compat/ledscroll \ + compat/basic \ + compat/misc \ + compat/iso9995 \ + compat/accessx \ + compat/xfree86 \ + compat/level5 \ + compat/caps \ + compat/ledcaps \ + compat/mousekeys \ + rules/base \ + rules/evdev \ +; do + cp "$XKBCONFIGROOT/$file" "test/data/$file" +done diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/basic b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/basic new file mode 100644 index 0000000..fff06be --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/basic @@ -0,0 +1,30 @@ +default xkb_types "basic" { + + // Fairly standard definitions for + // three of the four required key types. + // The fourth type "KEYPAD" is defined in the "numpad" file. + + virtual_modifiers NumLock; + + type "ONE_LEVEL" { + modifiers = None; + map[None] = Level1; + level_name[Level1]= "Any"; + }; + + type "TWO_LEVEL" { + modifiers = Shift; + map[Shift] = Level2; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + }; + + type "ALPHABETIC" { + modifiers = Shift+Lock; + map[Shift] = Level2; + map[Lock] = Level2; + level_name[Level1] = "Base"; + level_name[Level2] = "Caps"; + }; + +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/complete b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/complete new file mode 100644 index 0000000..3b59ca2 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/complete @@ -0,0 +1,9 @@ +default xkb_types "complete" { + include "basic" + include "mousekeys" + include "pc" + include "iso9995" + include "level5" + include "extra" + include "numpad" +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/extra b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/extra new file mode 100644 index 0000000..e7529f4 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/extra @@ -0,0 +1,158 @@ +partial default xkb_types "default" { + + // Defines a type with a four-level shift, similar to the three-level + // type used for iso9995, but it lets the Shift key behave "normally". + + virtual_modifiers LevelThree; + + type "FOUR_LEVEL" { + modifiers = Shift+LevelThree; + map[None] = Level1; + map[Shift] = Level2; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "Alt Base"; + level_name[Level4] = "Shift Alt"; + }; + + type "FOUR_LEVEL_ALPHABETIC" { + modifiers = Shift+Lock+LevelThree; + map[None] = Level1; + map[Shift] = Level2; + map[Lock] = Level2; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Lock+LevelThree] = Level4; + map[Lock+Shift+LevelThree] = Level3; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "Alt Base"; + level_name[Level4] = "Shift Alt"; + }; + + type "FOUR_LEVEL_SEMIALPHABETIC" { + modifiers = Shift+Lock+LevelThree; + map[None] = Level1; + map[Shift] = Level2; + map[Lock] = Level2; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Lock+LevelThree] = Level3; + map[Lock+Shift+LevelThree] = Level4; + preserve[Lock+LevelThree] = Lock; + preserve[Lock+Shift+LevelThree] = Lock; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "Alt Base"; + level_name[Level4] = "Shift Alt"; + }; + + // A four-level keypad variant. The first two levels are controlled by + // NumLock (with active shifting like in KEYPAD). LevelThree overrides + // this mode, with two additional shifted levels. + type "FOUR_LEVEL_MIXED_KEYPAD" { + modifiers = Shift+NumLock+LevelThree; + map[None] = Level1; + map[Shift+NumLock] = Level1; + map[NumLock] = Level2; + map[Shift] = Level2; + map[LevelThree] = Level3; + map[NumLock+LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Shift+NumLock+LevelThree] = Level4; + level_name[Level1] = "Base"; + level_name[Level2] = "Number"; + level_name[Level3] = "Alt Base"; + level_name[Level4] = "Shift Alt"; + }; + + // Base level, two shifted LevelThree levels, one Ctrl+Alt command level. + type "FOUR_LEVEL_X" { + modifiers = Shift+LevelThree+Control+Alt; + map[None] = Level1; + map[LevelThree] = Level2; + map[Shift+LevelThree] = Level3; + map[Control+Alt] = Level4; + level_name[Level1] = "Base"; + level_name[Level2] = "Alt Base"; + level_name[Level3] = "Shift Alt"; + level_name[Level4] = "Ctrl+Alt"; + }; + +// A special type for keys used in the Serbian Latin Unicode keymap. +// It makes it possible to use all three forms of latin letters +// present in Unicode that are made up of two separate letters +// (forms like LJ, Lj, and lj; NJ, Nj, and nj; etcetera). + + type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" { + modifiers = Shift+Lock+LevelThree; + map[None] = Level1; + map[Shift] = Level2; + map[Lock] = Level4; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Lock+LevelThree] = Level3; + map[Lock+Shift+LevelThree] = Level3; + preserve[Lock]= Lock; + preserve[Lock+LevelThree]= Lock; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "AltGr Base"; + level_name[Level4] = "Shift AltGr"; + }; + +// A key type for the German ssharp (for example), which is capitalized as SS. +// CHARACTERISTICS: +// It is FOUR_LEVEL with the exception that the fifth level is mapped to the +// Lock modifier. If other modifiers are used, the Lock state is ignored. +// DETAILS ABOUT GERMAN: +// The capital form of ssharp (called sharp s) only exists for completely +// capitalized text, not for words at the beginning of sentences nor for +// nouns (nouns in German normally start with a captial letter). +// The ssharp key, to the right of the zero key, takes this into account +// and has a questionmark mapped to Shift-ssharp since normally no capital +// version is needed. +// When typing with active CapsLock, this key type is needed to +// output two capital letters S because this is the only German key +// whose capital letter is not the same as the one typed with Shift. + + type "FOUR_LEVEL_PLUS_LOCK" { + modifiers = Shift+Lock+LevelThree; + map[None] = Level1; + map[Shift] = Level2; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Lock] = Level5; + map[Lock+Shift] = Level2; + map[Lock+LevelThree] = Level3; + map[Lock+Shift+LevelThree] = Level4; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "Alt Base"; + level_name[Level4] = "Shift Alt"; + level_name[Level5] = "Lock"; + }; +}; + +// This enables the four-level shifting also for the keypad. +partial xkb_types "keypad" { + virtual_modifiers LevelThree; + + type "FOUR_LEVEL_KEYPAD" { + modifiers = Shift+NumLock+LevelThree; + map[None] = Level1; + map[Shift] = Level2; + map[NumLock] = Level2; + map[Shift+NumLock] = Level1; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[NumLock+LevelThree] = Level4; + map[Shift+NumLock+LevelThree] = Level3; + level_name[Level1] = "Base"; + level_name[Level2] = "Number"; + level_name[Level3] = "Alt Base"; + level_name[Level4] = "Alt Number"; + }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/iso9995 b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/iso9995 new file mode 100644 index 0000000..d3c4e0b --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/iso9995 @@ -0,0 +1,18 @@ +partial default xkb_types "default" { + + // A key type which can be used to implement + // an ISO9995-style level-three shift. + + virtual_modifiers LevelThree; + + type "THREE_LEVEL" { + modifiers = Shift+LevelThree; + map[None] = Level1; + map[Shift] = Level2; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level3; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "Level3"; + }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/level5 b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/level5 new file mode 100644 index 0000000..1796f50 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/level5 @@ -0,0 +1,214 @@ +partial default xkb_types "default" { + + // Defines a type with an eight-level shift, similar to the three-level + // type used for iso9995, but it lets the Shift key behave "normally". + + virtual_modifiers LevelThree,ScrollLock,LevelFive; + + type "EIGHT_LEVEL" { + modifiers = Shift+LevelThree+LevelFive; + map[None] = Level1; + map[Shift] = Level2; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[LevelFive] = Level5; + map[Shift+LevelFive] = Level6; + map[LevelThree+LevelFive] = Level7; + map[Shift+LevelThree+LevelFive] = Level8; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "Alt Base"; + level_name[Level4] = "Shift Alt"; + level_name[Level5] = "X"; + level_name[Level6] = "X Shift"; + level_name[Level7] = "X Alt Base"; + level_name[Level8] = "X Shift Alt"; + }; + + type "EIGHT_LEVEL_ALPHABETIC" { + modifiers = Shift+Lock+LevelThree+LevelFive; + map[None] = Level1; + map[Shift] = Level2; + map[Lock] = Level2; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Lock+LevelThree] = Level4; + map[Lock+Shift+LevelThree] = Level3; + + map[LevelFive] = Level5; + map[Shift+LevelFive] = Level6; + map[Lock+LevelFive] = Level6; + map[LevelThree+LevelFive] = Level7; + map[Shift+LevelThree+LevelFive] = Level8; + map[Lock+LevelThree+LevelFive] = Level8; + map[Lock+Shift+LevelThree+LevelFive] = Level7; + + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "Alt Base"; + level_name[Level4] = "Shift Alt"; + level_name[Level5] = "X"; + level_name[Level6] = "X Shift"; + level_name[Level7] = "X Alt Base"; + level_name[Level8] = "X Shift Alt"; + }; + +// type "EIGHT_LEVEL_LEVEL_FIVE_LOCK" { +// // Level5-Lock is implemented by using NumLock, because a real modifier +// // is required. +// +// modifiers = Shift + Lock + LevelThree + NumLock + LevelFive; +// +// map[None] = Level1; +// map[Shift] = Level2; +// map[LevelThree] = Level3; +// map[LevelThree+Shift] = Level4; +// +// map[LevelFive] = Level5; +// map[LevelFive+Shift] = Level6; +// map[LevelFive+LevelThree] = Level7; +// map[LevelFive+LevelThree+Shift] = Level8; +// +// map[NumLock] = Level5; +// map[NumLock+Shift] = Level6; +// map[NumLock+LevelThree] = Level7; +// map[NumLock+LevelThree+Shift] = Level8; +// +// map[NumLock+LevelFive] = Level1; +// map[NumLock+LevelFive+Shift] = Level2; +// map[NumLock+LevelFive+LevelThree] = Level3; +// map[NumLock+LevelFive+LevelThree+Shift] = Level4; +// +// // Lock has no effect +// map[Lock] = Level1; +// map[Lock+Shift] = Level2; +// map[Lock+LevelThree] = Level3; +// map[Lock+LevelThree+Shift] = Level4; +// +// map[Lock+LevelFive] = Level5; +// map[Lock+LevelFive+Shift] = Level6; +// map[Lock+LevelFive+LevelThree] = Level7; +// map[Lock+LevelFive+LevelThree+Shift] = Level8; +// +// map[Lock+NumLock] = Level5; +// map[Lock+NumLock+Shift] = Level6; +// map[Lock+NumLock+LevelThree] = Level7; +// map[Lock+NumLock+LevelThree+Shift] = Level8; +// +// map[Lock+NumLock+LevelFive] = Level1; +// map[Lock+NumLock+LevelFive+Shift] = Level2; +// map[Lock+NumLock+LevelFive+LevelThree] = Level3; +// map[Lock+NumLock+LevelFive+LevelThree+Shift] = Level4; +// +// preserve[LevelFive+Shift] = Shift; +// preserve[NumLock+Shift] = Shift; +// preserve[Lock+LevelFive+Shift] = Shift; +// preserve[Lock+NumLock+Shift] = Shift; +// +// level_name[Level1] = "Base"; +// level_name[Level2] = "Shift"; +// level_name[Level3] = "Alt Base"; +// level_name[Level4] = "Shift Alt"; +// level_name[Level5] = "X"; +// level_name[Level6] = "X Shift"; +// level_name[Level7] = "X Alt Base"; +// level_name[Level8] = "X Shift Alt"; +// }; +// +// type "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK" { +// // Level5-Lock is implemented by using NumLock, because a real modifier +// // is required. +// +// modifiers = Shift + Lock + LevelThree + NumLock + LevelFive; +// +// map[None] = Level1; +// map[Shift] = Level2; +// map[LevelThree] = Level3; +// map[LevelThree+Shift] = Level4; +// +// map[LevelFive] = Level5; +// map[LevelFive+Shift] = Level6; +// map[LevelFive+LevelThree] = Level7; +// map[LevelFive+LevelThree+Shift] = Level8; +// +// map[NumLock] = Level5; +// map[NumLock+Shift] = Level6; +// map[NumLock+LevelThree] = Level7; +// map[NumLock+LevelThree+Shift] = Level8; +// +// map[NumLock+LevelFive] = Level1; +// map[NumLock+LevelFive+Shift] = Level2; +// map[NumLock+LevelFive+LevelThree] = Level3; +// map[NumLock+LevelFive+LevelThree+Shift] = Level4; +// +// // Lock interchanges Level1 and Level2 +// map[Lock] = Level2; +// map[Lock+Shift] = Level1; +// map[Lock+LevelThree] = Level3; +// map[Lock+LevelThree+Shift] = Level4; +// +// map[Lock+LevelFive] = Level5; +// map[Lock+LevelFive+Shift] = Level6; +// map[Lock+LevelFive+LevelThree] = Level7; +// map[Lock+LevelFive+LevelThree+Shift] = Level8; +// +// map[Lock+NumLock] = Level5; +// map[Lock+NumLock+Shift] = Level6; +// map[Lock+NumLock+LevelThree] = Level7; +// map[Lock+NumLock+LevelThree+Shift] = Level8; +// +// map[Lock+NumLock+LevelFive] = Level2; +// map[Lock+NumLock+LevelFive+Shift] = Level1; +// map[Lock+NumLock+LevelFive+LevelThree] = Level4; +// map[Lock+NumLock+LevelFive+LevelThree+Shift] = Level3; +// +// preserve[LevelFive+Shift] = Shift; +// preserve[NumLock+Shift] = Shift; +// +// level_name[Level1] = "Base"; +// level_name[Level2] = "Shift"; +// level_name[Level3] = "Alt Base"; +// level_name[Level4] = "Shift Alt"; +// level_name[Level5] = "X"; +// level_name[Level6] = "X Shift"; +// level_name[Level7] = "X Alt Base"; +// level_name[Level8] = "X Shift Alt"; +// }; + + type "EIGHT_LEVEL_SEMIALPHABETIC" { + modifiers = Shift+Lock+LevelThree+LevelFive; + map[None] = Level1; + map[Shift] = Level2; + map[Lock] = Level2; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Lock+LevelThree] = Level3; + map[Lock+Shift+LevelThree] = Level4; + + map[LevelFive] = Level5; + map[Shift+LevelFive] = Level6; + map[Lock+LevelFive] = Level6; + map[Lock+Shift+LevelFive] = Level6; + map[LevelThree+LevelFive] = Level7; + map[Shift+LevelThree+LevelFive] = Level8; + map[Lock+LevelThree+LevelFive] = Level7; + map[Lock+Shift+LevelThree+LevelFive] = Level8; + + preserve[Lock+LevelThree] = Lock; + preserve[Lock+Shift+LevelThree] = Lock; + preserve[Lock+LevelFive] = Lock; + preserve[Lock+Shift+LevelFive] = Lock; + preserve[Lock+LevelThree+LevelFive] = Lock; + preserve[Lock+Shift+LevelThree+LevelFive] = Lock; + + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "Alt Base"; + level_name[Level4] = "Shift Alt"; + level_name[Level5] = "X"; + level_name[Level6] = "X Shift"; + level_name[Level7] = "X Alt Base"; + level_name[Level8] = "X Shift Alt"; + }; + +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/mousekeys b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/mousekeys new file mode 100644 index 0000000..901848a --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/mousekeys @@ -0,0 +1,10 @@ +partial default xkb_types "default" { + virtual_modifiers Alt; + + type "SHIFT+ALT" { + modifiers = Shift+Alt; + map[Shift+Alt] = Level2; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift+Alt"; + }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/numpad b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/numpad new file mode 100644 index 0000000..5861f11 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/numpad @@ -0,0 +1,67 @@ +partial default xkb_types "pc" { + type "KEYPAD" { + modifiers = Shift+NumLock; + map[None] = Level1; + map[Shift] = Level2; + map[NumLock] = Level2; + map[Shift+NumLock] = Level1; + level_name[Level1] = "Base"; + level_name[Level2] = "Number"; + }; + include "extra(keypad)" +}; + +// On Mac keypads, level 1 and 2 are swapped. +partial xkb_types "mac" { + type "KEYPAD" { + modifiers = None; + map[None] = Level2; + level_name[Level2] = "Number"; + }; + include "extra(keypad)" +}; + +partial xkb_types "microsoft" { + type "KEYPAD" { + modifiers = Shift+NumLock; + map[None] = Level1; + preserve[Shift] = Shift; + map[NumLock] = Level2; + level_name[Level1] = "Base"; + level_name[Level2] = "Number"; + }; + include "extra(keypad)" +}; + +// Swiss-German style numeric keypad: Shift and NumLock operate as +// two independent modifiers; however, since we want shift state for +// the cursor keys, only three levels are used from the key mappings. +// Closest type is actually FOUR_LEVEL_X, but most numpad layouts use +// FOUR_LEVEL_MIXED_KEYPAD, so that's the one we are going to override. +partial xkb_types "shift3" { + type "FOUR_LEVEL_MIXED_KEYPAD" { + modifiers = Shift+NumLock+Control+Alt; + + // NumLock Off => navigate using cursor keys + map[None] = Level1; + + // NumLock Off + Shift pressed => select using cursor keys + preserve[Shift] = Shift; + + // NumLock On => decimal digits + map[NumLock] = Level2; + + // NumLock On + Shift pressed => auxiliary symbols, + // e.g. hexadecimal digits + map[Shift+NumLock] = Level3; + + // Ctrl + Alt, regardless of NumLock and Shift => command keys + map[Control+Alt] = Level4; + + // reverse map from levels to modifiers + level_name[Level1] = "Base"; + level_name[Level2] = "NumLock"; + level_name[Level3] = "Shift+NumLock"; + level_name[Level4] = "Ctrl+Alt"; + }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/pc b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/pc new file mode 100644 index 0000000..404e3c9 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/types/pc @@ -0,0 +1,126 @@ +partial default xkb_types "default" { + + // Some types that are necessary + // for a full implementation of + // a PC-compatible keyboard. + + virtual_modifiers Alt; + virtual_modifiers LevelThree; + virtual_modifiers LAlt; + virtual_modifiers RAlt; + virtual_modifiers RControl; + virtual_modifiers LControl; + + type "PC_SUPER_LEVEL2" { + modifiers = Mod4; + map[None] = Level1; + map[Mod4] = Level2; + level_name[Level1] = "Base"; + level_name[Level2] = "Super"; + }; + + type "PC_CONTROL_LEVEL2" { + modifiers = Control; + map[None] = Level1; + map[Control] = Level2; + level_name[Level1] = "Base"; + level_name[Level2] = "Control"; + }; + + type "PC_LCONTROL_LEVEL2" { + modifiers = LControl; + map[None] = Level1; + map[LControl] = Level2; + level_name[Level1] = "Base"; + level_name[Level2] = "LControl"; + }; + + type "PC_RCONTROL_LEVEL2" { + modifiers = RControl; + map[None] = Level1; + map[RControl] = Level2; + level_name[Level1] = "Base"; + level_name[Level2] = "RControl"; + }; + + type "PC_ALT_LEVEL2" { + modifiers = Alt; + map[None] = Level1; + map[Alt] = Level2; + level_name[Level1] = "Base"; + level_name[Level2] = "Alt"; + }; + + type "PC_LALT_LEVEL2" { + modifiers = LAlt; + map[None] = Level1; + map[LAlt] = Level2; + level_name[Level1] = "Base"; + level_name[Level2] = "LAlt"; + }; + + type "PC_RALT_LEVEL2" { + modifiers = RAlt; + map[None] = Level1; + map[RAlt] = Level2; + level_name[Level1] = "Base"; + level_name[Level2] = "RAlt"; + }; + + type "CTRL+ALT" { + modifiers = Control+Alt+Shift+LevelThree; + map[None] = Level1; + map[Shift] = Level2; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Control+Alt] = Level5; + preserve[Shift] = Shift; + preserve[Shift+LevelThree] = Shift; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "Alt Base"; + level_name[Level4] = "Shift Alt"; + level_name[Level5] = "Ctrl+Alt"; + }; + + // Local eight level. + // Needed when you want part of your layout eight-level but cannot use + // LevelFive as modifier, as this will take over the right Ctrl by default + // for the whole layout and is too invasive for the average four-level user. + // Needed to fix bug #9529. + // FIXME: Should really use RControl but it seems not to be enabled by + // default and touching this requires a lot of testing. + type "LOCAL_EIGHT_LEVEL" { + modifiers = Shift+Lock+LevelThree+Control; + + map[None] = Level1; + map[Lock+Shift] = Level1; + map[Shift] = Level2; + map[Lock] = Level2; + + map[LevelThree] = Level3; + map[Lock+Shift+LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Lock+LevelThree] = Level4; + + map[Control] = Level5; + map[Lock+Shift+Control] = Level5; + map[Shift+Control] = Level6; + map[Lock+Control] = Level6; + + map[LevelThree+Control] = Level7; + map[Lock+Shift+LevelThree+Control] = Level7; + map[Shift+LevelThree+Control] = Level8; + map[Lock+LevelThree+Control] = Level8; + + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "Level3"; + level_name[Level4] = "Shift Level3"; + level_name[Level5] = "Ctrl"; + level_name[Level6] = "Shift Ctrl"; + level_name[Level7] = "Level3 Ctrl"; + level_name[Level8] = "Shift Level3 Ctrl"; + }; + +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/evdev-scancodes.h b/app/src/main/jni/libxkbcommon/xkbcommon/test/evdev-scancodes.h new file mode 100644 index 0000000..0e05cb1 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/evdev-scancodes.h @@ -0,0 +1,587 @@ +/* + * Copyright (c) 1999-2002 Vojtech Pavlik + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + */ +#ifndef _INPUT_H +#define _INPUT_H + +/* + * Copied from /usr/include/linux/input.h from Linux 3.16, for use + * in libxkbcommon. Modified to only contain scancode definitions. + */ + +/* + * Keys and buttons + * + * Most of the keys/buttons are modeled after USB HUT 1.12 + * (see http://www.usb.org/developers/hidpage). + * Abbreviations in the comments: + * AC - Application Control + * AL - Application Launch Button + * SC - System Control + */ + +#define KEY_RESERVED 0 +#define KEY_ESC 1 +#define KEY_1 2 +#define KEY_2 3 +#define KEY_3 4 +#define KEY_4 5 +#define KEY_5 6 +#define KEY_6 7 +#define KEY_7 8 +#define KEY_8 9 +#define KEY_9 10 +#define KEY_0 11 +#define KEY_MINUS 12 +#define KEY_EQUAL 13 +#define KEY_BACKSPACE 14 +#define KEY_TAB 15 +#define KEY_Q 16 +#define KEY_W 17 +#define KEY_E 18 +#define KEY_R 19 +#define KEY_T 20 +#define KEY_Y 21 +#define KEY_U 22 +#define KEY_I 23 +#define KEY_O 24 +#define KEY_P 25 +#define KEY_LEFTBRACE 26 +#define KEY_RIGHTBRACE 27 +#define KEY_ENTER 28 +#define KEY_LEFTCTRL 29 +#define KEY_A 30 +#define KEY_S 31 +#define KEY_D 32 +#define KEY_F 33 +#define KEY_G 34 +#define KEY_H 35 +#define KEY_J 36 +#define KEY_K 37 +#define KEY_L 38 +#define KEY_SEMICOLON 39 +#define KEY_APOSTROPHE 40 +#define KEY_GRAVE 41 +#define KEY_LEFTSHIFT 42 +#define KEY_BACKSLASH 43 +#define KEY_Z 44 +#define KEY_X 45 +#define KEY_C 46 +#define KEY_V 47 +#define KEY_B 48 +#define KEY_N 49 +#define KEY_M 50 +#define KEY_COMMA 51 +#define KEY_DOT 52 +#define KEY_SLASH 53 +#define KEY_RIGHTSHIFT 54 +#define KEY_KPASTERISK 55 +#define KEY_LEFTALT 56 +#define KEY_SPACE 57 +#define KEY_CAPSLOCK 58 +#define KEY_F1 59 +#define KEY_F2 60 +#define KEY_F3 61 +#define KEY_F4 62 +#define KEY_F5 63 +#define KEY_F6 64 +#define KEY_F7 65 +#define KEY_F8 66 +#define KEY_F9 67 +#define KEY_F10 68 +#define KEY_NUMLOCK 69 +#define KEY_SCROLLLOCK 70 +#define KEY_KP7 71 +#define KEY_KP8 72 +#define KEY_KP9 73 +#define KEY_KPMINUS 74 +#define KEY_KP4 75 +#define KEY_KP5 76 +#define KEY_KP6 77 +#define KEY_KPPLUS 78 +#define KEY_KP1 79 +#define KEY_KP2 80 +#define KEY_KP3 81 +#define KEY_KP0 82 +#define KEY_KPDOT 83 + +#define KEY_ZENKAKUHANKAKU 85 +#define KEY_102ND 86 +#define KEY_F11 87 +#define KEY_F12 88 +#define KEY_RO 89 +#define KEY_KATAKANA 90 +#define KEY_HIRAGANA 91 +#define KEY_HENKAN 92 +#define KEY_KATAKANAHIRAGANA 93 +#define KEY_MUHENKAN 94 +#define KEY_KPJPCOMMA 95 +#define KEY_KPENTER 96 +#define KEY_RIGHTCTRL 97 +#define KEY_KPSLASH 98 +#define KEY_SYSRQ 99 +#define KEY_RIGHTALT 100 +#define KEY_LINEFEED 101 +#define KEY_HOME 102 +#define KEY_UP 103 +#define KEY_PAGEUP 104 +#define KEY_LEFT 105 +#define KEY_RIGHT 106 +#define KEY_END 107 +#define KEY_DOWN 108 +#define KEY_PAGEDOWN 109 +#define KEY_INSERT 110 +#define KEY_DELETE 111 +#define KEY_MACRO 112 +#define KEY_MUTE 113 +#define KEY_VOLUMEDOWN 114 +#define KEY_VOLUMEUP 115 +#define KEY_POWER 116 /* SC System Power Down */ +#define KEY_KPEQUAL 117 +#define KEY_KPPLUSMINUS 118 +#define KEY_PAUSE 119 +#define KEY_SCALE 120 /* AL Compiz Scale (Expose) */ + +#define KEY_KPCOMMA 121 +#define KEY_HANGEUL 122 +#define KEY_HANGUEL KEY_HANGEUL +#define KEY_HANJA 123 +#define KEY_YEN 124 +#define KEY_LEFTMETA 125 +#define KEY_RIGHTMETA 126 +#define KEY_COMPOSE 127 + +#define KEY_STOP 128 /* AC Stop */ +#define KEY_AGAIN 129 +#define KEY_PROPS 130 /* AC Properties */ +#define KEY_UNDO 131 /* AC Undo */ +#define KEY_FRONT 132 +#define KEY_COPY 133 /* AC Copy */ +#define KEY_OPEN 134 /* AC Open */ +#define KEY_PASTE 135 /* AC Paste */ +#define KEY_FIND 136 /* AC Search */ +#define KEY_CUT 137 /* AC Cut */ +#define KEY_HELP 138 /* AL Integrated Help Center */ +#define KEY_MENU 139 /* Menu (show menu) */ +#define KEY_CALC 140 /* AL Calculator */ +#define KEY_SETUP 141 +#define KEY_SLEEP 142 /* SC System Sleep */ +#define KEY_WAKEUP 143 /* System Wake Up */ +#define KEY_FILE 144 /* AL Local Machine Browser */ +#define KEY_SENDFILE 145 +#define KEY_DELETEFILE 146 +#define KEY_XFER 147 +#define KEY_PROG1 148 +#define KEY_PROG2 149 +#define KEY_WWW 150 /* AL Internet Browser */ +#define KEY_MSDOS 151 +#define KEY_COFFEE 152 /* AL Terminal Lock/Screensaver */ +#define KEY_SCREENLOCK KEY_COFFEE +#define KEY_DIRECTION 153 +#define KEY_CYCLEWINDOWS 154 +#define KEY_MAIL 155 +#define KEY_BOOKMARKS 156 /* AC Bookmarks */ +#define KEY_COMPUTER 157 +#define KEY_BACK 158 /* AC Back */ +#define KEY_FORWARD 159 /* AC Forward */ +#define KEY_CLOSECD 160 +#define KEY_EJECTCD 161 +#define KEY_EJECTCLOSECD 162 +#define KEY_NEXTSONG 163 +#define KEY_PLAYPAUSE 164 +#define KEY_PREVIOUSSONG 165 +#define KEY_STOPCD 166 +#define KEY_RECORD 167 +#define KEY_REWIND 168 +#define KEY_PHONE 169 /* Media Select Telephone */ +#define KEY_ISO 170 +#define KEY_CONFIG 171 /* AL Consumer Control Configuration */ +#define KEY_HOMEPAGE 172 /* AC Home */ +#define KEY_REFRESH 173 /* AC Refresh */ +#define KEY_EXIT 174 /* AC Exit */ +#define KEY_MOVE 175 +#define KEY_EDIT 176 +#define KEY_SCROLLUP 177 +#define KEY_SCROLLDOWN 178 +#define KEY_KPLEFTPAREN 179 +#define KEY_KPRIGHTPAREN 180 +#define KEY_NEW 181 /* AC New */ +#define KEY_REDO 182 /* AC Redo/Repeat */ + +#define KEY_F13 183 +#define KEY_F14 184 +#define KEY_F15 185 +#define KEY_F16 186 +#define KEY_F17 187 +#define KEY_F18 188 +#define KEY_F19 189 +#define KEY_F20 190 +#define KEY_F21 191 +#define KEY_F22 192 +#define KEY_F23 193 +#define KEY_F24 194 + +#define KEY_PLAYCD 200 +#define KEY_PAUSECD 201 +#define KEY_PROG3 202 +#define KEY_PROG4 203 +#define KEY_DASHBOARD 204 /* AL Dashboard */ +#define KEY_SUSPEND 205 +#define KEY_CLOSE 206 /* AC Close */ +#define KEY_PLAY 207 +#define KEY_FASTFORWARD 208 +#define KEY_BASSBOOST 209 +#define KEY_PRINT 210 /* AC Print */ +#define KEY_HP 211 +#define KEY_CAMERA 212 +#define KEY_SOUND 213 +#define KEY_QUESTION 214 +#define KEY_EMAIL 215 +#define KEY_CHAT 216 +#define KEY_SEARCH 217 +#define KEY_CONNECT 218 +#define KEY_FINANCE 219 /* AL Checkbook/Finance */ +#define KEY_SPORT 220 +#define KEY_SHOP 221 +#define KEY_ALTERASE 222 +#define KEY_CANCEL 223 /* AC Cancel */ +#define KEY_BRIGHTNESSDOWN 224 +#define KEY_BRIGHTNESSUP 225 +#define KEY_MEDIA 226 + +#define KEY_SWITCHVIDEOMODE 227 /* Cycle between available video + outputs (Monitor/LCD/TV-out/etc) */ +#define KEY_KBDILLUMTOGGLE 228 +#define KEY_KBDILLUMDOWN 229 +#define KEY_KBDILLUMUP 230 + +#define KEY_SEND 231 /* AC Send */ +#define KEY_REPLY 232 /* AC Reply */ +#define KEY_FORWARDMAIL 233 /* AC Forward Msg */ +#define KEY_SAVE 234 /* AC Save */ +#define KEY_DOCUMENTS 235 + +#define KEY_BATTERY 236 + +#define KEY_BLUETOOTH 237 +#define KEY_WLAN 238 +#define KEY_UWB 239 + +#define KEY_UNKNOWN 240 + +#define KEY_VIDEO_NEXT 241 /* drive next video source */ +#define KEY_VIDEO_PREV 242 /* drive previous video source */ +#define KEY_BRIGHTNESS_CYCLE 243 /* brightness up, after max is min */ +#define KEY_BRIGHTNESS_ZERO 244 /* brightness off, use ambient */ +#define KEY_DISPLAY_OFF 245 /* display device to off state */ + +#define KEY_WWAN 246 /* Wireless WAN (LTE, UMTS, GSM, etc.) */ +#define KEY_WIMAX KEY_WWAN +#define KEY_RFKILL 247 /* Key that controls all radios */ + +#define KEY_MICMUTE 248 /* Mute / unmute the microphone */ + +/* Code 255 is reserved for special needs of AT keyboard driver */ + +#define BTN_MISC 0x100 +#define BTN_0 0x100 +#define BTN_1 0x101 +#define BTN_2 0x102 +#define BTN_3 0x103 +#define BTN_4 0x104 +#define BTN_5 0x105 +#define BTN_6 0x106 +#define BTN_7 0x107 +#define BTN_8 0x108 +#define BTN_9 0x109 + +#define BTN_MOUSE 0x110 +#define BTN_LEFT 0x110 +#define BTN_RIGHT 0x111 +#define BTN_MIDDLE 0x112 +#define BTN_SIDE 0x113 +#define BTN_EXTRA 0x114 +#define BTN_FORWARD 0x115 +#define BTN_BACK 0x116 +#define BTN_TASK 0x117 + +#define BTN_JOYSTICK 0x120 +#define BTN_TRIGGER 0x120 +#define BTN_THUMB 0x121 +#define BTN_THUMB2 0x122 +#define BTN_TOP 0x123 +#define BTN_TOP2 0x124 +#define BTN_PINKIE 0x125 +#define BTN_BASE 0x126 +#define BTN_BASE2 0x127 +#define BTN_BASE3 0x128 +#define BTN_BASE4 0x129 +#define BTN_BASE5 0x12a +#define BTN_BASE6 0x12b +#define BTN_DEAD 0x12f + +#define BTN_GAMEPAD 0x130 +#define BTN_SOUTH 0x130 +#define BTN_A BTN_SOUTH +#define BTN_EAST 0x131 +#define BTN_B BTN_EAST +#define BTN_C 0x132 +#define BTN_NORTH 0x133 +#define BTN_X BTN_NORTH +#define BTN_WEST 0x134 +#define BTN_Y BTN_WEST +#define BTN_Z 0x135 +#define BTN_TL 0x136 +#define BTN_TR 0x137 +#define BTN_TL2 0x138 +#define BTN_TR2 0x139 +#define BTN_SELECT 0x13a +#define BTN_START 0x13b +#define BTN_MODE 0x13c +#define BTN_THUMBL 0x13d +#define BTN_THUMBR 0x13e + +#define BTN_DIGI 0x140 +#define BTN_TOOL_PEN 0x140 +#define BTN_TOOL_RUBBER 0x141 +#define BTN_TOOL_BRUSH 0x142 +#define BTN_TOOL_PENCIL 0x143 +#define BTN_TOOL_AIRBRUSH 0x144 +#define BTN_TOOL_FINGER 0x145 +#define BTN_TOOL_MOUSE 0x146 +#define BTN_TOOL_LENS 0x147 +#define BTN_TOOL_QUINTTAP 0x148 /* Five fingers on trackpad */ +#define BTN_TOUCH 0x14a +#define BTN_STYLUS 0x14b +#define BTN_STYLUS2 0x14c +#define BTN_TOOL_DOUBLETAP 0x14d +#define BTN_TOOL_TRIPLETAP 0x14e +#define BTN_TOOL_QUADTAP 0x14f /* Four fingers on trackpad */ + +#define BTN_WHEEL 0x150 +#define BTN_GEAR_DOWN 0x150 +#define BTN_GEAR_UP 0x151 + +#define KEY_OK 0x160 +#define KEY_SELECT 0x161 +#define KEY_GOTO 0x162 +#define KEY_CLEAR 0x163 +#define KEY_POWER2 0x164 +#define KEY_OPTION 0x165 +#define KEY_INFO 0x166 /* AL OEM Features/Tips/Tutorial */ +#define KEY_TIME 0x167 +#define KEY_VENDOR 0x168 +#define KEY_ARCHIVE 0x169 +#define KEY_PROGRAM 0x16a /* Media Select Program Guide */ +#define KEY_CHANNEL 0x16b +#define KEY_FAVORITES 0x16c +#define KEY_EPG 0x16d +#define KEY_PVR 0x16e /* Media Select Home */ +#define KEY_MHP 0x16f +#define KEY_LANGUAGE 0x170 +#define KEY_TITLE 0x171 +#define KEY_SUBTITLE 0x172 +#define KEY_ANGLE 0x173 +#define KEY_ZOOM 0x174 +#define KEY_MODE 0x175 +#define KEY_KEYBOARD 0x176 +#define KEY_SCREEN 0x177 +#define KEY_PC 0x178 /* Media Select Computer */ +#define KEY_TV 0x179 /* Media Select TV */ +#define KEY_TV2 0x17a /* Media Select Cable */ +#define KEY_VCR 0x17b /* Media Select VCR */ +#define KEY_VCR2 0x17c /* VCR Plus */ +#define KEY_SAT 0x17d /* Media Select Satellite */ +#define KEY_SAT2 0x17e +#define KEY_CD 0x17f /* Media Select CD */ +#define KEY_TAPE 0x180 /* Media Select Tape */ +#define KEY_RADIO 0x181 +#define KEY_TUNER 0x182 /* Media Select Tuner */ +#define KEY_PLAYER 0x183 +#define KEY_TEXT 0x184 +#define KEY_DVD 0x185 /* Media Select DVD */ +#define KEY_AUX 0x186 +#define KEY_MP3 0x187 +#define KEY_AUDIO 0x188 /* AL Audio Browser */ +#define KEY_VIDEO 0x189 /* AL Movie Browser */ +#define KEY_DIRECTORY 0x18a +#define KEY_LIST 0x18b +#define KEY_MEMO 0x18c /* Media Select Messages */ +#define KEY_CALENDAR 0x18d +#define KEY_RED 0x18e +#define KEY_GREEN 0x18f +#define KEY_YELLOW 0x190 +#define KEY_BLUE 0x191 +#define KEY_CHANNELUP 0x192 /* Channel Increment */ +#define KEY_CHANNELDOWN 0x193 /* Channel Decrement */ +#define KEY_FIRST 0x194 +#define KEY_LAST 0x195 /* Recall Last */ +#define KEY_AB 0x196 +#define KEY_NEXT 0x197 +#define KEY_RESTART 0x198 +#define KEY_SLOW 0x199 +#define KEY_SHUFFLE 0x19a +#define KEY_BREAK 0x19b +#define KEY_PREVIOUS 0x19c +#define KEY_DIGITS 0x19d +#define KEY_TEEN 0x19e +#define KEY_TWEN 0x19f +#define KEY_VIDEOPHONE 0x1a0 /* Media Select Video Phone */ +#define KEY_GAMES 0x1a1 /* Media Select Games */ +#define KEY_ZOOMIN 0x1a2 /* AC Zoom In */ +#define KEY_ZOOMOUT 0x1a3 /* AC Zoom Out */ +#define KEY_ZOOMRESET 0x1a4 /* AC Zoom */ +#define KEY_WORDPROCESSOR 0x1a5 /* AL Word Processor */ +#define KEY_EDITOR 0x1a6 /* AL Text Editor */ +#define KEY_SPREADSHEET 0x1a7 /* AL Spreadsheet */ +#define KEY_GRAPHICSEDITOR 0x1a8 /* AL Graphics Editor */ +#define KEY_PRESENTATION 0x1a9 /* AL Presentation App */ +#define KEY_DATABASE 0x1aa /* AL Database App */ +#define KEY_NEWS 0x1ab /* AL Newsreader */ +#define KEY_VOICEMAIL 0x1ac /* AL Voicemail */ +#define KEY_ADDRESSBOOK 0x1ad /* AL Contacts/Address Book */ +#define KEY_MESSENGER 0x1ae /* AL Instant Messaging */ +#define KEY_DISPLAYTOGGLE 0x1af /* Turn display (LCD) on and off */ +#define KEY_SPELLCHECK 0x1b0 /* AL Spell Check */ +#define KEY_LOGOFF 0x1b1 /* AL Logoff */ + +#define KEY_DOLLAR 0x1b2 +#define KEY_EURO 0x1b3 + +#define KEY_FRAMEBACK 0x1b4 /* Consumer - transport controls */ +#define KEY_FRAMEFORWARD 0x1b5 +#define KEY_CONTEXT_MENU 0x1b6 /* GenDesc - system context menu */ +#define KEY_MEDIA_REPEAT 0x1b7 /* Consumer - transport control */ +#define KEY_10CHANNELSUP 0x1b8 /* 10 channels up (10+) */ +#define KEY_10CHANNELSDOWN 0x1b9 /* 10 channels down (10-) */ +#define KEY_IMAGES 0x1ba /* AL Image Browser */ + +#define KEY_DEL_EOL 0x1c0 +#define KEY_DEL_EOS 0x1c1 +#define KEY_INS_LINE 0x1c2 +#define KEY_DEL_LINE 0x1c3 + +#define KEY_FN 0x1d0 +#define KEY_FN_ESC 0x1d1 +#define KEY_FN_F1 0x1d2 +#define KEY_FN_F2 0x1d3 +#define KEY_FN_F3 0x1d4 +#define KEY_FN_F4 0x1d5 +#define KEY_FN_F5 0x1d6 +#define KEY_FN_F6 0x1d7 +#define KEY_FN_F7 0x1d8 +#define KEY_FN_F8 0x1d9 +#define KEY_FN_F9 0x1da +#define KEY_FN_F10 0x1db +#define KEY_FN_F11 0x1dc +#define KEY_FN_F12 0x1dd +#define KEY_FN_1 0x1de +#define KEY_FN_2 0x1df +#define KEY_FN_D 0x1e0 +#define KEY_FN_E 0x1e1 +#define KEY_FN_F 0x1e2 +#define KEY_FN_S 0x1e3 +#define KEY_FN_B 0x1e4 + +#define KEY_BRL_DOT1 0x1f1 +#define KEY_BRL_DOT2 0x1f2 +#define KEY_BRL_DOT3 0x1f3 +#define KEY_BRL_DOT4 0x1f4 +#define KEY_BRL_DOT5 0x1f5 +#define KEY_BRL_DOT6 0x1f6 +#define KEY_BRL_DOT7 0x1f7 +#define KEY_BRL_DOT8 0x1f8 +#define KEY_BRL_DOT9 0x1f9 +#define KEY_BRL_DOT10 0x1fa + +#define KEY_NUMERIC_0 0x200 /* used by phones, remote controls, */ +#define KEY_NUMERIC_1 0x201 /* and other keypads */ +#define KEY_NUMERIC_2 0x202 +#define KEY_NUMERIC_3 0x203 +#define KEY_NUMERIC_4 0x204 +#define KEY_NUMERIC_5 0x205 +#define KEY_NUMERIC_6 0x206 +#define KEY_NUMERIC_7 0x207 +#define KEY_NUMERIC_8 0x208 +#define KEY_NUMERIC_9 0x209 +#define KEY_NUMERIC_STAR 0x20a +#define KEY_NUMERIC_POUND 0x20b + +#define KEY_CAMERA_FOCUS 0x210 +#define KEY_WPS_BUTTON 0x211 /* WiFi Protected Setup key */ + +#define KEY_TOUCHPAD_TOGGLE 0x212 /* Request switch touchpad on or off */ +#define KEY_TOUCHPAD_ON 0x213 +#define KEY_TOUCHPAD_OFF 0x214 + +#define KEY_CAMERA_ZOOMIN 0x215 +#define KEY_CAMERA_ZOOMOUT 0x216 +#define KEY_CAMERA_UP 0x217 +#define KEY_CAMERA_DOWN 0x218 +#define KEY_CAMERA_LEFT 0x219 +#define KEY_CAMERA_RIGHT 0x21a + +#define KEY_ATTENDANT_ON 0x21b +#define KEY_ATTENDANT_OFF 0x21c +#define KEY_ATTENDANT_TOGGLE 0x21d /* Attendant call on or off */ +#define KEY_LIGHTS_TOGGLE 0x21e /* Reading light on or off */ + +#define BTN_DPAD_UP 0x220 +#define BTN_DPAD_DOWN 0x221 +#define BTN_DPAD_LEFT 0x222 +#define BTN_DPAD_RIGHT 0x223 + +#define KEY_ALS_TOGGLE 0x230 /* Ambient light sensor */ + +#define BTN_TRIGGER_HAPPY 0x2c0 +#define BTN_TRIGGER_HAPPY1 0x2c0 +#define BTN_TRIGGER_HAPPY2 0x2c1 +#define BTN_TRIGGER_HAPPY3 0x2c2 +#define BTN_TRIGGER_HAPPY4 0x2c3 +#define BTN_TRIGGER_HAPPY5 0x2c4 +#define BTN_TRIGGER_HAPPY6 0x2c5 +#define BTN_TRIGGER_HAPPY7 0x2c6 +#define BTN_TRIGGER_HAPPY8 0x2c7 +#define BTN_TRIGGER_HAPPY9 0x2c8 +#define BTN_TRIGGER_HAPPY10 0x2c9 +#define BTN_TRIGGER_HAPPY11 0x2ca +#define BTN_TRIGGER_HAPPY12 0x2cb +#define BTN_TRIGGER_HAPPY13 0x2cc +#define BTN_TRIGGER_HAPPY14 0x2cd +#define BTN_TRIGGER_HAPPY15 0x2ce +#define BTN_TRIGGER_HAPPY16 0x2cf +#define BTN_TRIGGER_HAPPY17 0x2d0 +#define BTN_TRIGGER_HAPPY18 0x2d1 +#define BTN_TRIGGER_HAPPY19 0x2d2 +#define BTN_TRIGGER_HAPPY20 0x2d3 +#define BTN_TRIGGER_HAPPY21 0x2d4 +#define BTN_TRIGGER_HAPPY22 0x2d5 +#define BTN_TRIGGER_HAPPY23 0x2d6 +#define BTN_TRIGGER_HAPPY24 0x2d7 +#define BTN_TRIGGER_HAPPY25 0x2d8 +#define BTN_TRIGGER_HAPPY26 0x2d9 +#define BTN_TRIGGER_HAPPY27 0x2da +#define BTN_TRIGGER_HAPPY28 0x2db +#define BTN_TRIGGER_HAPPY29 0x2dc +#define BTN_TRIGGER_HAPPY30 0x2dd +#define BTN_TRIGGER_HAPPY31 0x2de +#define BTN_TRIGGER_HAPPY32 0x2df +#define BTN_TRIGGER_HAPPY33 0x2e0 +#define BTN_TRIGGER_HAPPY34 0x2e1 +#define BTN_TRIGGER_HAPPY35 0x2e2 +#define BTN_TRIGGER_HAPPY36 0x2e3 +#define BTN_TRIGGER_HAPPY37 0x2e4 +#define BTN_TRIGGER_HAPPY38 0x2e5 +#define BTN_TRIGGER_HAPPY39 0x2e6 +#define BTN_TRIGGER_HAPPY40 0x2e7 + +/* We avoid low common keys in module aliases so they don't get huge. */ +#define KEY_MIN_INTERESTING KEY_MUTE +#define KEY_MAX 0x2ff +#define KEY_CNT (KEY_MAX+1) + +#endif /* _INPUT_H */ diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/filecomp.c b/app/src/main/jni/libxkbcommon/xkbcommon/test/filecomp.c new file mode 100644 index 0000000..39b7ac7 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/filecomp.c @@ -0,0 +1,67 @@ +/* + * Copyright © 2009 Dan Nicholson + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "test.h" + +static int +test_file(struct xkb_context *ctx, const char *path_rel) +{ + struct xkb_keymap *keymap = test_compile_file(ctx, path_rel); + + if (!keymap) + return 0; + + xkb_keymap_unref(keymap); + return 1; +} + +int +main(void) +{ + struct xkb_context *ctx = test_get_context(0); + + assert(test_file(ctx, "keymaps/basic.xkb")); + assert(test_file(ctx, "keymaps/comprehensive-plus-geom.xkb")); + assert(test_file(ctx, "keymaps/no-types.xkb")); + assert(test_file(ctx, "keymaps/quartz.xkb")); + assert(test_file(ctx, "keymaps/no-aliases.xkb")); + + assert(!test_file(ctx, "keymaps/divide-by-zero.xkb")); + assert(!test_file(ctx, "keymaps/bad.xkb")); + assert(!test_file(ctx, "keymaps/syntax-error.xkb")); + assert(!test_file(ctx, "keymaps/syntax-error2.xkb")); + assert(!test_file(ctx, "does not exist")); + + /* Test response to invalid flags and formats. */ + fclose(stdin); + assert(!xkb_keymap_new_from_file(ctx, NULL, XKB_KEYMAP_FORMAT_TEXT_V1, 0)); + assert(!xkb_keymap_new_from_file(ctx, stdin, 0, 0)); + assert(!xkb_keymap_new_from_file(ctx, stdin, XKB_KEYMAP_USE_ORIGINAL_FORMAT, 0)); + assert(!xkb_keymap_new_from_file(ctx, stdin, 1234, 0)); + assert(!xkb_keymap_new_from_file(ctx, stdin, XKB_KEYMAP_FORMAT_TEXT_V1, -1)); + assert(!xkb_keymap_new_from_file(ctx, stdin, XKB_KEYMAP_FORMAT_TEXT_V1, 1234)); + + xkb_context_unref(ctx); + + return 0; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/interactive-evdev.c b/app/src/main/jni/libxkbcommon/xkbcommon/test/interactive-evdev.c new file mode 100644 index 0000000..04a347f --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/interactive-evdev.c @@ -0,0 +1,503 @@ +/* + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "test.h" + +struct keyboard { + char *path; + int fd; + struct xkb_state *state; + struct xkb_compose_state *compose_state; + struct keyboard *next; +}; + +static bool terminate; +static int evdev_offset = 8; +static bool report_state_changes; +static bool with_compose; + +#define NLONGS(n) (((n) + LONG_BIT - 1) / LONG_BIT) + +static bool +evdev_bit_is_set(const unsigned long *array, int bit) +{ + return array[bit / LONG_BIT] & (1LL << (bit % LONG_BIT)); +} + +/* Some heuristics to see if the device is a keyboard. */ +static bool +is_keyboard(int fd) +{ + int i; + unsigned long evbits[NLONGS(EV_CNT)] = { 0 }; + unsigned long keybits[NLONGS(KEY_CNT)] = { 0 }; + + errno = 0; + ioctl(fd, EVIOCGBIT(0, sizeof(evbits)), evbits); + if (errno) + return false; + + if (!evdev_bit_is_set(evbits, EV_KEY)) + return false; + + errno = 0; + ioctl(fd, EVIOCGBIT(EV_KEY, sizeof(keybits)), keybits); + if (errno) + return false; + + for (i = KEY_RESERVED; i <= KEY_MIN_INTERESTING; i++) + if (evdev_bit_is_set(keybits, i)) + return true; + + return false; +} + +static int +keyboard_new(struct dirent *ent, struct xkb_keymap *keymap, + struct xkb_compose_table *compose_table, struct keyboard **out) +{ + int ret; + char *path; + int fd; + struct xkb_state *state; + struct xkb_compose_state *compose_state = NULL; + struct keyboard *kbd; + + ret = asprintf(&path, "/dev/input/%s", ent->d_name); + if (ret < 0) + return -ENOMEM; + + fd = open(path, O_NONBLOCK | O_CLOEXEC | O_RDONLY); + if (fd < 0) { + ret = -errno; + goto err_path; + } + + if (!is_keyboard(fd)) { + /* Dummy "skip this device" value. */ + ret = -ENOTSUP; + goto err_fd; + } + + state = xkb_state_new(keymap); + if (!state) { + fprintf(stderr, "Couldn't create xkb state for %s\n", path); + ret = -EFAULT; + goto err_fd; + } + + if (with_compose) { + compose_state = xkb_compose_state_new(compose_table, + XKB_COMPOSE_STATE_NO_FLAGS); + if (!compose_state) { + fprintf(stderr, "Couldn't create compose state for %s\n", path); + ret = -EFAULT; + goto err_state; + } + } + + kbd = calloc(1, sizeof(*kbd)); + if (!kbd) { + ret = -ENOMEM; + goto err_compose_state; + } + + kbd->path = path; + kbd->fd = fd; + kbd->state = state; + kbd->compose_state = compose_state; + *out = kbd; + return 0; + +err_compose_state: + xkb_compose_state_unref(compose_state); +err_state: + xkb_state_unref(state); +err_fd: + close(fd); +err_path: + free(path); + return ret; +} + +static void +keyboard_free(struct keyboard *kbd) +{ + if (!kbd) + return; + if (kbd->fd >= 0) + close(kbd->fd); + free(kbd->path); + xkb_state_unref(kbd->state); + xkb_compose_state_unref(kbd->compose_state); + free(kbd); +} + +static int +filter_device_name(const struct dirent *ent) +{ + return !fnmatch("event*", ent->d_name, 0); +} + +static struct keyboard * +get_keyboards(struct xkb_keymap *keymap, + struct xkb_compose_table *compose_table) +{ + int ret, i, nents; + struct dirent **ents; + struct keyboard *kbds = NULL, *kbd = NULL; + + nents = scandir("/dev/input", &ents, filter_device_name, alphasort); + if (nents < 0) { + fprintf(stderr, "Couldn't scan /dev/input: %s\n", strerror(errno)); + return NULL; + } + + for (i = 0; i < nents; i++) { + ret = keyboard_new(ents[i], keymap, compose_table, &kbd); + if (ret) { + if (ret == -EACCES) { + fprintf(stderr, "Couldn't open /dev/input/%s: %s. " + "You probably need root to run this.\n", + ents[i]->d_name, strerror(-ret)); + break; + } + if (ret != -ENOTSUP) { + fprintf(stderr, "Couldn't open /dev/input/%s: %s. Skipping.\n", + ents[i]->d_name, strerror(-ret)); + } + continue; + } + + kbd->next = kbds; + kbds = kbd; + } + + if (!kbds) { + fprintf(stderr, "Couldn't find any keyboards I can use! Quitting.\n"); + goto err; + } + +err: + for (i = 0; i < nents; i++) + free(ents[i]); + free(ents); + return kbds; +} + +static void +free_keyboards(struct keyboard *kbds) +{ + struct keyboard *next; + + while (kbds) { + next = kbds->next; + keyboard_free(kbds); + kbds = next; + } +} + +/* The meaning of the input_event 'value' field. */ +enum { + KEY_STATE_RELEASE = 0, + KEY_STATE_PRESS = 1, + KEY_STATE_REPEAT = 2, +}; + +static void +process_event(struct keyboard *kbd, uint16_t type, uint16_t code, int32_t value) +{ + xkb_keycode_t keycode; + struct xkb_keymap *keymap; + enum xkb_state_component changed; + enum xkb_compose_status status; + + if (type != EV_KEY) + return; + + keycode = evdev_offset + code; + keymap = xkb_state_get_keymap(kbd->state); + + if (value == KEY_STATE_REPEAT && !xkb_keymap_key_repeats(keymap, keycode)) + return; + + if (with_compose && value != KEY_STATE_RELEASE) { + xkb_keysym_t keysym = xkb_state_key_get_one_sym(kbd->state, keycode); + xkb_compose_state_feed(kbd->compose_state, keysym); + } + + if (value != KEY_STATE_RELEASE) + test_print_keycode_state(kbd->state, kbd->compose_state, keycode); + + if (with_compose) { + status = xkb_compose_state_get_status(kbd->compose_state); + if (status == XKB_COMPOSE_CANCELLED || status == XKB_COMPOSE_COMPOSED) + xkb_compose_state_reset(kbd->compose_state); + } + + if (value == KEY_STATE_RELEASE) + changed = xkb_state_update_key(kbd->state, keycode, XKB_KEY_UP); + else + changed = xkb_state_update_key(kbd->state, keycode, XKB_KEY_DOWN); + + if (report_state_changes) + test_print_state_changes(changed); +} + +static int +read_keyboard(struct keyboard *kbd) +{ + ssize_t len; + struct input_event evs[16]; + + /* No fancy error checking here. */ + while ((len = read(kbd->fd, &evs, sizeof(evs))) > 0) { + const size_t nevs = len / sizeof(struct input_event); + for (size_t i = 0; i < nevs; i++) + process_event(kbd, evs[i].type, evs[i].code, evs[i].value); + } + + if (len < 0 && errno != EWOULDBLOCK) { + fprintf(stderr, "Couldn't read %s: %s\n", kbd->path, strerror(errno)); + return -errno; + } + + return 0; +} + +static int +loop(struct keyboard *kbds) +{ + int i, ret; + int epfd; + struct keyboard *kbd; + struct epoll_event ev; + struct epoll_event evs[16]; + + epfd = epoll_create1(0); + if (epfd < 0) { + fprintf(stderr, "Couldn't create epoll instance: %s\n", + strerror(errno)); + return -errno; + } + + for (kbd = kbds; kbd; kbd = kbd->next) { + memset(&ev, 0, sizeof(ev)); + ev.events = EPOLLIN; + ev.data.ptr = kbd; + ret = epoll_ctl(epfd, EPOLL_CTL_ADD, kbd->fd, &ev); + if (ret) { + ret = -errno; + fprintf(stderr, "Couldn't add %s to epoll: %s\n", + kbd->path, strerror(errno)); + goto err_epoll; + } + } + + while (!terminate) { + ret = epoll_wait(epfd, evs, 16, -1); + if (ret < 0) { + if (errno == EINTR) + continue; + ret = -errno; + fprintf(stderr, "Couldn't poll for events: %s\n", + strerror(errno)); + goto err_epoll; + } + + for (i = 0; i < ret; i++) { + kbd = evs[i].data.ptr; + ret = read_keyboard(kbd); + if (ret) { + goto err_epoll; + } + } + } + + close(epfd); + return 0; + +err_epoll: + close(epfd); + return ret; +} + +static void +sigintr_handler(int signum) +{ + terminate = true; +} + +int +main(int argc, char *argv[]) +{ + int ret; + int opt; + struct keyboard *kbds; + struct xkb_context *ctx; + struct xkb_keymap *keymap; + struct xkb_compose_table *compose_table = NULL; + const char *rules = NULL; + const char *model = NULL; + const char *layout = NULL; + const char *variant = NULL; + const char *options = NULL; + const char *keymap_path = NULL; + const char *locale; + struct sigaction act; + + setlocale(LC_ALL, ""); + + while ((opt = getopt(argc, argv, "r:m:l:v:o:k:n:cd")) != -1) { + switch (opt) { + case 'r': + rules = optarg; + break; + case 'm': + model = optarg; + break; + case 'l': + layout = optarg; + break; + case 'v': + variant = optarg; + break; + case 'o': + options = optarg; + break; + case 'k': + keymap_path = optarg; + break; + case 'n': + errno = 0; + evdev_offset = strtol(optarg, NULL, 10); + if (errno) { + fprintf(stderr, "error: -n option expects a number\n"); + exit(EXIT_FAILURE); + } + break; + case 'c': + report_state_changes = true; + break; + case 'd': + with_compose = true; + break; + case '?': + fprintf(stderr, " Usage: %s [-r ] [-m ] " + "[-l ] [-v ] [-o ]\n", + argv[0]); + fprintf(stderr, " or: %s -k \n", + argv[0]); + fprintf(stderr, "For both: -n \n" + " -c (to report changes to the state)\n" + " -d (to enable compose)\n"); + exit(2); + } + } + + ctx = test_get_context(0); + if (!ctx) { + ret = -1; + fprintf(stderr, "Couldn't create xkb context\n"); + goto err_out; + } + + if (keymap_path) { + FILE *file = fopen(keymap_path, "r"); + if (!file) { + ret = EXIT_FAILURE; + fprintf(stderr, "Couldn't open '%s': %s\n", + keymap_path, strerror(errno)); + goto err_ctx; + } + keymap = xkb_keymap_new_from_file(ctx, file, + XKB_KEYMAP_FORMAT_TEXT_V1, 0); + fclose(file); + } + else { + keymap = test_compile_rules(ctx, rules, model, layout, variant, + options); + } + + if (!keymap) { + ret = -1; + fprintf(stderr, "Couldn't create xkb keymap\n"); + goto err_ctx; + } + + if (with_compose) { + locale = setlocale(LC_CTYPE, NULL); + compose_table = + xkb_compose_table_new_from_locale(ctx, locale, + XKB_COMPOSE_COMPILE_NO_FLAGS); + if (!compose_table) { + ret = -1; + fprintf(stderr, "Couldn't create compose from locale\n"); + goto err_xkb; + } + } + + kbds = get_keyboards(keymap, compose_table); + if (!kbds) { + ret = -1; + goto err_compose; + } + + act.sa_handler = sigintr_handler; + sigemptyset(&act.sa_mask); + act.sa_flags = 0; + sigaction(SIGINT, &act, NULL); + sigaction(SIGTERM, &act, NULL); + + /* Instead of fiddling with termios.. */ + system("stty -echo"); + + ret = loop(kbds); + if (ret) + goto err_stty; + +err_stty: + system("stty echo"); + free_keyboards(kbds); +err_compose: + xkb_compose_table_unref(compose_table); +err_xkb: + xkb_keymap_unref(keymap); +err_ctx: + xkb_context_unref(ctx); +err_out: + exit(ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE); +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/interactive-x11.c b/app/src/main/jni/libxkbcommon/xkbcommon/test/interactive-x11.c new file mode 100644 index 0000000..d720004 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/interactive-x11.c @@ -0,0 +1,387 @@ +/* + * Copyright © 2013 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include + +#include "xkbcommon/xkbcommon-x11.h" +#include "test.h" + +#include + +/* + * Note: This program only handles the core keyboard device for now. + * It should be straigtforward to change struct keyboard to a list of + * keyboards with device IDs, as in test/interactive-evdev.c. This would + * require: + * + * - Initially listing the keyboard devices. + * - Listening to device changes. + * - Matching events to their devices. + * + * XKB itself knows about xinput1 devices, and most requests and events are + * device-specific. + * + * In order to list the devices and react to changes, you need xinput1/2. + * You also need xinput for the key press/release event, since the core + * protocol key press event does not carry a device ID to match on. + */ + +struct keyboard { + xcb_connection_t *conn; + uint8_t first_xkb_event; + struct xkb_context *ctx; + + struct xkb_keymap *keymap; + struct xkb_state *state; + int32_t device_id; +}; + +static bool terminate; + +static int +select_xkb_events_for_device(xcb_connection_t *conn, int32_t device_id) +{ + enum { + required_events = + (XCB_XKB_EVENT_TYPE_NEW_KEYBOARD_NOTIFY | + XCB_XKB_EVENT_TYPE_MAP_NOTIFY | + XCB_XKB_EVENT_TYPE_STATE_NOTIFY), + + required_nkn_details = + (XCB_XKB_NKN_DETAIL_KEYCODES), + + required_map_parts = + (XCB_XKB_MAP_PART_KEY_TYPES | + XCB_XKB_MAP_PART_KEY_SYMS | + XCB_XKB_MAP_PART_MODIFIER_MAP | + XCB_XKB_MAP_PART_EXPLICIT_COMPONENTS | + XCB_XKB_MAP_PART_KEY_ACTIONS | + XCB_XKB_MAP_PART_VIRTUAL_MODS | + XCB_XKB_MAP_PART_VIRTUAL_MOD_MAP), + + required_state_details = + (XCB_XKB_STATE_PART_MODIFIER_BASE | + XCB_XKB_STATE_PART_MODIFIER_LATCH | + XCB_XKB_STATE_PART_MODIFIER_LOCK | + XCB_XKB_STATE_PART_GROUP_BASE | + XCB_XKB_STATE_PART_GROUP_LATCH | + XCB_XKB_STATE_PART_GROUP_LOCK), + }; + + static const xcb_xkb_select_events_details_t details = { + .affectNewKeyboard = required_nkn_details, + .newKeyboardDetails = required_nkn_details, + .affectState = required_state_details, + .stateDetails = required_state_details, + }; + + xcb_void_cookie_t cookie = + xcb_xkb_select_events_aux_checked(conn, + device_id, + required_events, /* affectWhich */ + 0, /* clear */ + 0, /* selectAll */ + required_map_parts, /* affectMap */ + required_map_parts, /* map */ + &details); /* details */ + + xcb_generic_error_t *error = xcb_request_check(conn, cookie); + if (error) { + free(error); + return -1; + } + + return 0; +} + +static int +update_keymap(struct keyboard *kbd) +{ + struct xkb_keymap *new_keymap; + struct xkb_state *new_state; + + new_keymap = xkb_x11_keymap_new_from_device(kbd->ctx, kbd->conn, + kbd->device_id, 0); + if (!new_keymap) + goto err_out; + + new_state = xkb_x11_state_new_from_device(new_keymap, kbd->conn, + kbd->device_id); + if (!new_state) + goto err_keymap; + + if (kbd->keymap) + printf("Keymap updated!\n"); + + xkb_state_unref(kbd->state); + xkb_keymap_unref(kbd->keymap); + kbd->keymap = new_keymap; + kbd->state = new_state; + return 0; + +err_keymap: + xkb_keymap_unref(new_keymap); +err_out: + return -1; +} + +static int +init_kbd(struct keyboard *kbd, xcb_connection_t *conn, uint8_t first_xkb_event, + int32_t device_id, struct xkb_context *ctx) +{ + int ret; + + kbd->conn = conn; + kbd->first_xkb_event = first_xkb_event; + kbd->ctx = ctx; + kbd->keymap = NULL; + kbd->state = NULL; + kbd->device_id = device_id; + + ret = update_keymap(kbd); + if (ret) + goto err_out; + + ret = select_xkb_events_for_device(conn, device_id); + if (ret) + goto err_state; + + return 0; + +err_state: + xkb_state_unref(kbd->state); + xkb_keymap_unref(kbd->keymap); +err_out: + return -1; +} + +static void +deinit_kbd(struct keyboard *kbd) +{ + xkb_state_unref(kbd->state); + xkb_keymap_unref(kbd->keymap); +} + +static void +process_xkb_event(xcb_generic_event_t *gevent, struct keyboard *kbd) +{ + union xkb_event { + struct { + uint8_t response_type; + uint8_t xkbType; + uint16_t sequence; + xcb_timestamp_t time; + uint8_t deviceID; + } any; + xcb_xkb_new_keyboard_notify_event_t new_keyboard_notify; + xcb_xkb_map_notify_event_t map_notify; + xcb_xkb_state_notify_event_t state_notify; + } *event = (union xkb_event *) gevent; + + if (event->any.deviceID != kbd->device_id) + return; + + /* + * XkbNewKkdNotify and XkbMapNotify together capture all sorts of keymap + * updates (e.g. xmodmap, xkbcomp, setxkbmap), with minimal redundent + * recompilations. + */ + switch (event->any.xkbType) { + case XCB_XKB_NEW_KEYBOARD_NOTIFY: + if (event->new_keyboard_notify.changed & XCB_XKB_NKN_DETAIL_KEYCODES) + update_keymap(kbd); + break; + + case XCB_XKB_MAP_NOTIFY: + update_keymap(kbd); + break; + + case XCB_XKB_STATE_NOTIFY: + xkb_state_update_mask(kbd->state, + event->state_notify.baseMods, + event->state_notify.latchedMods, + event->state_notify.lockedMods, + event->state_notify.baseGroup, + event->state_notify.latchedGroup, + event->state_notify.lockedGroup); + break; + } +} + +static void +process_event(xcb_generic_event_t *gevent, struct keyboard *kbd) +{ + switch (gevent->response_type) { + case XCB_KEY_PRESS: { + xcb_key_press_event_t *event = (xcb_key_press_event_t *) gevent; + xkb_keycode_t keycode = event->detail; + + test_print_keycode_state(kbd->state, NULL, keycode); + + /* Exit on ESC. */ + if (keycode == 9) + terminate = true; + break; + } + default: + if (gevent->response_type == kbd->first_xkb_event) + process_xkb_event(gevent, kbd); + break; + } +} + +static int +loop(xcb_connection_t *conn, struct keyboard *kbd) +{ + while (!terminate) { + xcb_generic_event_t *event; + + switch (xcb_connection_has_error(conn)) { + case 0: + break; + case XCB_CONN_ERROR: + fprintf(stderr, + "Closed connection to X server: connection error\n"); + return -1; + case XCB_CONN_CLOSED_EXT_NOTSUPPORTED: + fprintf(stderr, + "Closed connection to X server: extension not supported\n"); + return -1; + default: + fprintf(stderr, + "Closed connection to X server: error code %d\n", + xcb_connection_has_error(conn)); + return -1; + } + + event = xcb_wait_for_event(conn); + process_event(event, kbd); + free(event); + } + + return 0; +} + +static int +create_capture_window(xcb_connection_t *conn) +{ + xcb_generic_error_t *error; + xcb_void_cookie_t cookie; + xcb_screen_t *screen = + xcb_setup_roots_iterator(xcb_get_setup(conn)).data; + xcb_window_t window = xcb_generate_id(conn); + uint32_t values[2] = { + screen->white_pixel, + XCB_EVENT_MASK_KEY_PRESS, + }; + + cookie = xcb_create_window_checked(conn, XCB_COPY_FROM_PARENT, + window, screen->root, + 10, 10, 100, 100, 1, + XCB_WINDOW_CLASS_INPUT_OUTPUT, + screen->root_visual, + XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK, + values); + if ((error = xcb_request_check(conn, cookie)) != NULL) { + free(error); + return -1; + } + + cookie = xcb_map_window_checked(conn, window); + if ((error = xcb_request_check(conn, cookie)) != NULL) { + free(error); + return -1; + } + + return 0; +} + +int +main(int argc, char *argv[]) +{ + int ret; + xcb_connection_t *conn; + uint8_t first_xkb_event; + int32_t core_kbd_device_id; + struct xkb_context *ctx; + struct keyboard core_kbd; + + setlocale(LC_ALL, ""); + + conn = xcb_connect(NULL, NULL); + if (!conn || xcb_connection_has_error(conn)) { + fprintf(stderr, "Couldn't connect to X server: error code %d\n", + conn ? xcb_connection_has_error(conn) : -1); + ret = -1; + goto err_out; + } + + ret = xkb_x11_setup_xkb_extension(conn, + XKB_X11_MIN_MAJOR_XKB_VERSION, + XKB_X11_MIN_MINOR_XKB_VERSION, + XKB_X11_SETUP_XKB_EXTENSION_NO_FLAGS, + NULL, NULL, &first_xkb_event, NULL); + if (!ret) { + fprintf(stderr, "Couldn't setup XKB extension\n"); + goto err_conn; + } + + ctx = test_get_context(0); + if (!ctx) { + ret = -1; + fprintf(stderr, "Couldn't create xkb context\n"); + goto err_conn; + } + + core_kbd_device_id = xkb_x11_get_core_keyboard_device_id(conn); + if (core_kbd_device_id == -1) { + ret = -1; + fprintf(stderr, "Couldn't find core keyboard device\n"); + goto err_ctx; + } + + ret = init_kbd(&core_kbd, conn, first_xkb_event, core_kbd_device_id, ctx); + if (ret) { + fprintf(stderr, "Couldn't initialize core keyboard device\n"); + goto err_ctx; + } + + ret = create_capture_window(conn); + if (ret) { + fprintf(stderr, "Couldn't create a capture window\n"); + goto err_core_kbd; + } + + system("stty -echo"); + ret = loop(conn, &core_kbd); + system("stty echo"); + +err_core_kbd: + deinit_kbd(&core_kbd); +err_ctx: + xkb_context_unref(ctx); +err_conn: + xcb_disconnect(conn); +err_out: + exit(ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE); +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/keyseq.c b/app/src/main/jni/libxkbcommon/xkbcommon/test/keyseq.c new file mode 100644 index 0000000..05c7957 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/keyseq.c @@ -0,0 +1,484 @@ +/* + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "evdev-scancodes.h" +#include "test.h" + +int +main(void) +{ + struct xkb_context *ctx = test_get_context(0); + struct xkb_keymap *keymap; + + assert(ctx); + keymap = test_compile_rules(ctx, "evdev", "evdev", + "us,il,ru,de", ",,phonetic,neo", + "grp:alt_shift_toggle,grp:menu_toggle"); + assert(keymap); + + assert(test_key_seq(keymap, + KEY_H, BOTH, XKB_KEY_h, NEXT, + KEY_E, BOTH, XKB_KEY_e, NEXT, + KEY_L, BOTH, XKB_KEY_l, NEXT, + KEY_L, BOTH, XKB_KEY_l, NEXT, + KEY_O, BOTH, XKB_KEY_o, FINISH)); + + /* Simple shifted level. */ + assert(test_key_seq(keymap, + KEY_H, BOTH, XKB_KEY_h, NEXT, + KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L, NEXT, + KEY_E, BOTH, XKB_KEY_E, NEXT, + KEY_L, BOTH, XKB_KEY_L, NEXT, + KEY_LEFTSHIFT, UP, XKB_KEY_Shift_L, NEXT, + KEY_L, BOTH, XKB_KEY_l, NEXT, + KEY_O, BOTH, XKB_KEY_o, FINISH)); + + /* Key repeat shifted and unshifted in the middle. */ + assert(test_key_seq(keymap, + KEY_H, DOWN, XKB_KEY_h, NEXT, + KEY_H, REPEAT, XKB_KEY_h, NEXT, + KEY_H, REPEAT, XKB_KEY_h, NEXT, + KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L, NEXT, + KEY_H, REPEAT, XKB_KEY_H, NEXT, + KEY_H, REPEAT, XKB_KEY_H, NEXT, + KEY_LEFTSHIFT, UP, XKB_KEY_Shift_L, NEXT, + KEY_H, REPEAT, XKB_KEY_h, NEXT, + KEY_H, REPEAT, XKB_KEY_h, NEXT, + KEY_H, UP, XKB_KEY_h, NEXT, + KEY_H, BOTH, XKB_KEY_h, FINISH)); + + /* Base modifier cleared on key release... */ + assert(test_key_seq(keymap, + KEY_H, BOTH, XKB_KEY_h, NEXT, + KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L, NEXT, + KEY_E, BOTH, XKB_KEY_E, NEXT, + KEY_L, BOTH, XKB_KEY_L, NEXT, + KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L, NEXT, + KEY_L, BOTH, XKB_KEY_L, NEXT, + KEY_O, BOTH, XKB_KEY_O, FINISH)); + + /* ... But only by the keycode that set it. */ + assert(test_key_seq(keymap, + KEY_H, BOTH, XKB_KEY_h, NEXT, + KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L, NEXT, + KEY_E, BOTH, XKB_KEY_E, NEXT, + KEY_L, BOTH, XKB_KEY_L, NEXT, + KEY_RIGHTSHIFT, UP, XKB_KEY_Shift_R, NEXT, + KEY_L, BOTH, XKB_KEY_L, NEXT, + KEY_O, BOTH, XKB_KEY_O, FINISH)); + + /* + * A base modifier should only be cleared when no other key affecting + * the modifier is down. + */ + assert(test_key_seq(keymap, + KEY_H, BOTH, XKB_KEY_h, NEXT, + KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L, NEXT, + KEY_E, BOTH, XKB_KEY_E, NEXT, + KEY_RIGHTSHIFT, DOWN, XKB_KEY_Shift_R, NEXT, + KEY_L, BOTH, XKB_KEY_L, NEXT, + KEY_RIGHTSHIFT, UP, XKB_KEY_Shift_R, NEXT, + KEY_L, BOTH, XKB_KEY_L, NEXT, + KEY_LEFTSHIFT, UP, XKB_KEY_Shift_L, NEXT, + KEY_O, BOTH, XKB_KEY_o, FINISH)); + + /* + * Two key presses from the same key (e.g. if two keyboards use the + * same xkb_state) should only be released after two releases. + */ + assert(test_key_seq(keymap, + KEY_H, BOTH, XKB_KEY_h, NEXT, + KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L, NEXT, + KEY_H, BOTH, XKB_KEY_H, NEXT, + KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L, NEXT, + KEY_H, BOTH, XKB_KEY_H, NEXT, + KEY_LEFTSHIFT, UP, XKB_KEY_Shift_L, NEXT, + KEY_H, BOTH, XKB_KEY_H, NEXT, + KEY_LEFTSHIFT, UP, XKB_KEY_Shift_L, NEXT, + KEY_H, BOTH, XKB_KEY_h, FINISH)); + + /* Same as above with locked modifiers. */ + assert(test_key_seq(keymap, + KEY_H, BOTH, XKB_KEY_h, NEXT, + KEY_CAPSLOCK, DOWN, XKB_KEY_Caps_Lock, NEXT, + KEY_H, BOTH, XKB_KEY_H, NEXT, + KEY_CAPSLOCK, DOWN, XKB_KEY_Caps_Lock, NEXT, + KEY_H, BOTH, XKB_KEY_H, NEXT, + KEY_CAPSLOCK, UP, XKB_KEY_Caps_Lock, NEXT, + KEY_H, BOTH, XKB_KEY_H, NEXT, + KEY_CAPSLOCK, UP, XKB_KEY_Caps_Lock, NEXT, + KEY_H, BOTH, XKB_KEY_H, NEXT, + KEY_CAPSLOCK, BOTH, XKB_KEY_Caps_Lock, NEXT, + KEY_H, BOTH, XKB_KEY_h, FINISH)); + + /* Group switching / locking. */ + assert(test_key_seq(keymap, + KEY_H, BOTH, XKB_KEY_h, NEXT, + KEY_E, BOTH, XKB_KEY_e, NEXT, + KEY_COMPOSE, BOTH, XKB_KEY_ISO_Next_Group, NEXT, + KEY_K, BOTH, XKB_KEY_hebrew_lamed, NEXT, + KEY_F, BOTH, XKB_KEY_hebrew_kaph, NEXT, + KEY_COMPOSE, BOTH, XKB_KEY_ISO_Next_Group, NEXT, + KEY_COMPOSE, BOTH, XKB_KEY_ISO_Next_Group, NEXT, + KEY_COMPOSE, BOTH, XKB_KEY_ISO_Next_Group, NEXT, + KEY_O, BOTH, XKB_KEY_o, FINISH)); + + assert(test_key_seq(keymap, + KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L, NEXT, + KEY_LEFTALT, DOWN, XKB_KEY_ISO_Next_Group, NEXT, + KEY_LEFTALT, UP, XKB_KEY_ISO_Next_Group, NEXT, + KEY_LEFTSHIFT, UP, XKB_KEY_Shift_L, FINISH)); + + assert(test_key_seq(keymap, + KEY_LEFTALT, DOWN, XKB_KEY_Alt_L, NEXT, + KEY_LEFTSHIFT, DOWN, XKB_KEY_ISO_Next_Group, NEXT, + KEY_LEFTSHIFT, UP, XKB_KEY_ISO_Next_Group, NEXT, + KEY_LEFTALT, UP, XKB_KEY_Alt_L, FINISH)); + + /* Locked modifiers. */ + assert(test_key_seq(keymap, + KEY_CAPSLOCK, BOTH, XKB_KEY_Caps_Lock, NEXT, + KEY_H, BOTH, XKB_KEY_H, NEXT, + KEY_E, BOTH, XKB_KEY_E, NEXT, + KEY_L, BOTH, XKB_KEY_L, NEXT, + KEY_L, BOTH, XKB_KEY_L, NEXT, + KEY_O, BOTH, XKB_KEY_O, FINISH)); + + assert(test_key_seq(keymap, + KEY_H, BOTH, XKB_KEY_h, NEXT, + KEY_E, BOTH, XKB_KEY_e, NEXT, + KEY_CAPSLOCK, BOTH, XKB_KEY_Caps_Lock, NEXT, + KEY_L, BOTH, XKB_KEY_L, NEXT, + KEY_L, BOTH, XKB_KEY_L, NEXT, + KEY_CAPSLOCK, BOTH, XKB_KEY_Caps_Lock, NEXT, + KEY_O, BOTH, XKB_KEY_o, FINISH)); + + assert(test_key_seq(keymap, + KEY_H, BOTH, XKB_KEY_h, NEXT, + KEY_CAPSLOCK, DOWN, XKB_KEY_Caps_Lock, NEXT, + KEY_E, BOTH, XKB_KEY_E, NEXT, + KEY_L, BOTH, XKB_KEY_L, NEXT, + KEY_L, BOTH, XKB_KEY_L, NEXT, + KEY_CAPSLOCK, UP, XKB_KEY_Caps_Lock, NEXT, + KEY_O, BOTH, XKB_KEY_O, FINISH)); + + assert(test_key_seq(keymap, + KEY_H, BOTH, XKB_KEY_h, NEXT, + KEY_E, BOTH, XKB_KEY_e, NEXT, + KEY_CAPSLOCK, UP, XKB_KEY_Caps_Lock, NEXT, + KEY_L, BOTH, XKB_KEY_l, NEXT, + KEY_L, BOTH, XKB_KEY_l, NEXT, + KEY_O, BOTH, XKB_KEY_o, FINISH)); + + /* + * A key release affecting a locked modifier should clear it + * regardless of the key press. + */ + /* assert(test_key_seq(keymap, */ + /* KEY_H, BOTH, XKB_KEY_h, NEXT, */ + /* KEY_CAPSLOCK, DOWN, XKB_KEY_Caps_Lock, NEXT, */ + /* KEY_E, BOTH, XKB_KEY_E, NEXT, */ + /* KEY_L, BOTH, XKB_KEY_L, NEXT, */ + /* KEY_CAPSLOCK, UP, XKB_KEY_Caps_Lock, NEXT, */ + /* KEY_L, BOTH, XKB_KEY_L, NEXT, */ + /* KEY_CAPSLOCK, UP, XKB_KEY_Caps_Lock, NEXT, */ + /* KEY_O, BOTH, XKB_KEY_o, FINISH)); */ + + /* Simple Num Lock sanity check. */ + assert(test_key_seq(keymap, + KEY_KP1, BOTH, XKB_KEY_KP_End, NEXT, + KEY_NUMLOCK, BOTH, XKB_KEY_Num_Lock, NEXT, + KEY_KP1, BOTH, XKB_KEY_KP_1, NEXT, + KEY_KP2, BOTH, XKB_KEY_KP_2, NEXT, + KEY_NUMLOCK, BOTH, XKB_KEY_Num_Lock, NEXT, + KEY_KP2, BOTH, XKB_KEY_KP_Down, FINISH)); + + /* Test that the aliases in the ru(phonetic) symbols map work. */ + assert(test_key_seq(keymap, + KEY_COMPOSE, BOTH, XKB_KEY_ISO_Next_Group, NEXT, + KEY_COMPOSE, BOTH, XKB_KEY_ISO_Next_Group, NEXT, + KEY_1, BOTH, XKB_KEY_1, NEXT, + KEY_Q, BOTH, XKB_KEY_Cyrillic_ya, NEXT, + KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L, NEXT, + KEY_1, BOTH, XKB_KEY_exclam, NEXT, + KEY_Q, BOTH, XKB_KEY_Cyrillic_YA, NEXT, + KEY_LEFTSHIFT, UP, XKB_KEY_Shift_L, NEXT, + KEY_V, BOTH, XKB_KEY_Cyrillic_zhe, NEXT, + KEY_CAPSLOCK, BOTH, XKB_KEY_Caps_Lock, NEXT, + KEY_1, BOTH, XKB_KEY_1, NEXT, + KEY_V, BOTH, XKB_KEY_Cyrillic_ZHE, NEXT, + KEY_RIGHTSHIFT, DOWN, XKB_KEY_Shift_R, NEXT, + KEY_V, BOTH, XKB_KEY_Cyrillic_zhe, NEXT, + KEY_RIGHTSHIFT, UP, XKB_KEY_Shift_R, NEXT, + KEY_V, BOTH, XKB_KEY_Cyrillic_ZHE, FINISH)); + +#define KS(name) xkb_keysym_from_name(name, 0) + + /* Test that levels (1-5) in de(neo) symbols map work. */ + assert(test_key_seq(keymap, + /* Switch to the group. */ + KEY_COMPOSE, BOTH, XKB_KEY_ISO_Next_Group, NEXT, + KEY_COMPOSE, BOTH, XKB_KEY_ISO_Next_Group, NEXT, + KEY_COMPOSE, BOTH, XKB_KEY_ISO_Next_Group, NEXT, + + /* Level 1. */ + KEY_1, BOTH, XKB_KEY_1, NEXT, + KEY_Q, BOTH, XKB_KEY_x, NEXT, + KEY_KP7, BOTH, XKB_KEY_KP_7, NEXT, + KEY_ESC, BOTH, XKB_KEY_Escape, NEXT, + + /* Level 2 with Shift. */ + KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L, NEXT, + KEY_1, BOTH, XKB_KEY_degree, NEXT, + KEY_Q, BOTH, XKB_KEY_X, NEXT, + KEY_KP7, BOTH, KS("U2714"), NEXT, + KEY_ESC, BOTH, XKB_KEY_Escape, NEXT, + /* + * XXX: de(neo) uses shift(both_capslock) which causes + * the interesting result in the next line. Since it's + * a key release, it doesn't actually lock the modifier, + * and applications by-and-large ignore the keysym on + * release(?). Is this a problem? + */ + KEY_LEFTSHIFT, UP, XKB_KEY_Caps_Lock, NEXT, + + /* Level 2 with the Lock modifier. */ + KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L, NEXT, + KEY_RIGHTSHIFT, BOTH, XKB_KEY_Caps_Lock, NEXT, + KEY_LEFTSHIFT, UP, XKB_KEY_Caps_Lock, NEXT, + KEY_6, BOTH, XKB_KEY_6, NEXT, + KEY_H, BOTH, XKB_KEY_S, NEXT, + KEY_KP3, BOTH, XKB_KEY_KP_3, NEXT, + KEY_ESC, BOTH, XKB_KEY_Escape, NEXT, + KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L, NEXT, + KEY_RIGHTSHIFT, BOTH, XKB_KEY_Caps_Lock, NEXT, + KEY_LEFTSHIFT, UP, XKB_KEY_Caps_Lock, NEXT, + + /* Level 3. */ + KEY_CAPSLOCK, DOWN, XKB_KEY_ISO_Level3_Shift, NEXT, + KEY_6, BOTH, XKB_KEY_cent, NEXT, + KEY_Q, BOTH, XKB_KEY_ellipsis, NEXT, + KEY_KP7, BOTH, KS("U2195"), NEXT, + KEY_ESC, BOTH, XKB_KEY_Escape, NEXT, + KEY_CAPSLOCK, UP, XKB_KEY_ISO_Level3_Shift, NEXT, + + /* Level 4. */ + KEY_CAPSLOCK, DOWN, XKB_KEY_ISO_Level3_Shift, NEXT, + KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L, NEXT, + KEY_5, BOTH, XKB_KEY_malesymbol, NEXT, + KEY_E, BOTH, XKB_KEY_Greek_lambda, NEXT, + KEY_SPACE, BOTH, XKB_KEY_nobreakspace, NEXT, + KEY_KP8, BOTH, XKB_KEY_intersection, NEXT, + KEY_ESC, BOTH, XKB_KEY_Escape, NEXT, + KEY_LEFTSHIFT, UP, XKB_KEY_Caps_Lock, NEXT, + KEY_CAPSLOCK, UP, XKB_KEY_ISO_Level3_Shift, NEXT, + + /* Level 5. */ + KEY_RIGHTALT, DOWN, XKB_KEY_ISO_Level5_Shift, NEXT, + /* XXX: xkeyboard-config is borked when de(neo) is + * not the first group - not our fault. We test + * Level5 seprately below with only de(neo). */ + /* KEY_5, BOTH, XKB_KEY_periodcentered, NEXT, */ + /* KEY_E, BOTH, XKB_KEY_Up, NEXT, */ + /* KEY_SPACE, BOTH, XKB_KEY_KP_0, NEXT, */ + /* KEY_KP8, BOTH, XKB_KEY_KP_Up, NEXT, */ + KEY_ESC, BOTH, XKB_KEY_Escape, NEXT, + KEY_RIGHTALT, UP, XKB_KEY_ISO_Level5_Shift, NEXT, + + KEY_V, BOTH, XKB_KEY_p, FINISH)); + + xkb_keymap_unref(keymap); + keymap = test_compile_rules(ctx, "evdev", "", "de", "neo", ""); + assert(keymap); + assert(test_key_seq(keymap, + /* Level 5. */ + KEY_RIGHTALT, DOWN, XKB_KEY_ISO_Level5_Shift, NEXT, + KEY_5, BOTH, XKB_KEY_periodcentered, NEXT, + KEY_E, BOTH, XKB_KEY_Up, NEXT, + KEY_SPACE, BOTH, XKB_KEY_KP_0, NEXT, + KEY_KP8, BOTH, XKB_KEY_KP_Up, NEXT, + KEY_ESC, BOTH, XKB_KEY_Escape, NEXT, + KEY_RIGHTALT, UP, XKB_KEY_ISO_Level5_Shift, NEXT, + + /* Level 6. */ + KEY_RIGHTALT, DOWN, XKB_KEY_ISO_Level5_Shift, NEXT, + KEY_RIGHTSHIFT, DOWN, XKB_KEY_Shift_R, NEXT, + KEY_5, BOTH, XKB_KEY_NoSymbol, NEXT, + KEY_8, BOTH, XKB_KEY_ISO_Left_Tab, NEXT, + KEY_E, BOTH, XKB_KEY_Up, NEXT, + KEY_SPACE, BOTH, XKB_KEY_KP_0, NEXT, + KEY_KP8, BOTH, XKB_KEY_KP_Up, NEXT, + KEY_ESC, BOTH, XKB_KEY_Escape, NEXT, + KEY_RIGHTSHIFT, UP, XKB_KEY_Caps_Lock, NEXT, + KEY_RIGHTALT, UP, XKB_KEY_ISO_Level5_Shift, NEXT, + + /* Level 7. */ + KEY_RIGHTALT, DOWN, XKB_KEY_ISO_Level5_Shift, NEXT, + KEY_CAPSLOCK, DOWN, XKB_KEY_ISO_Level3_Shift, NEXT, + KEY_5, BOTH, KS("U2221"), NEXT, + KEY_E, BOTH, XKB_KEY_Greek_LAMBDA, NEXT, + KEY_SPACE, BOTH, KS("U202F"), NEXT, + KEY_KP8, BOTH, KS("U22C2"), NEXT, + KEY_ESC, BOTH, XKB_KEY_Escape, NEXT, + KEY_CAPSLOCK, UP, XKB_KEY_ISO_Level3_Shift, NEXT, + KEY_RIGHTALT, UP, XKB_KEY_ISO_Level5_Shift, NEXT, + + /* Level 8. */ + KEY_RIGHTALT, DOWN, XKB_KEY_ISO_Level5_Shift, NEXT, + KEY_CAPSLOCK, DOWN, XKB_KEY_ISO_Level3_Shift, NEXT, + KEY_RIGHTSHIFT, DOWN, XKB_KEY_Shift_R, NEXT, + /* This doesn't actually lock Level5. Not our fault. */ + KEY_TAB, BOTH, XKB_KEY_ISO_Level5_Lock, NEXT, + KEY_RIGHTSHIFT, UP, XKB_KEY_Caps_Lock, NEXT, + KEY_CAPSLOCK, UP, XKB_KEY_ISO_Level3_Shift, NEXT, + KEY_RIGHTALT, UP, XKB_KEY_ISO_Level5_Shift, NEXT, + + KEY_V, BOTH, XKB_KEY_p, FINISH)); + + + xkb_keymap_unref(keymap); + keymap = test_compile_rules(ctx, "evdev", "", "us,il,ru", "", + "grp:alt_shift_toggle_bidir,grp:menu_toggle"); + assert(keymap); + + assert(test_key_seq(keymap, + KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L, NEXT, + KEY_LEFTALT, DOWN, XKB_KEY_ISO_Prev_Group, NEXT, + KEY_LEFTALT, UP, XKB_KEY_ISO_Prev_Group, NEXT, + KEY_LEFTSHIFT, UP, XKB_KEY_Shift_L, FINISH)); + + assert(test_key_seq(keymap, + KEY_LEFTALT, DOWN, XKB_KEY_Alt_L, NEXT, + KEY_LEFTSHIFT, DOWN, XKB_KEY_ISO_Prev_Group, NEXT, + KEY_LEFTSHIFT, UP, XKB_KEY_ISO_Prev_Group, NEXT, + KEY_LEFTALT, UP, XKB_KEY_Alt_L, FINISH)); + + /* Check backwards (negative) group switching and wrapping. */ + assert(test_key_seq(keymap, + KEY_H, BOTH, XKB_KEY_h, NEXT, + KEY_COMPOSE, BOTH, XKB_KEY_ISO_Next_Group, NEXT, + KEY_H, BOTH, XKB_KEY_hebrew_yod, NEXT, + KEY_COMPOSE, BOTH, XKB_KEY_ISO_Next_Group, NEXT, + KEY_H, BOTH, XKB_KEY_Cyrillic_er, NEXT, + KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L, NEXT, + KEY_LEFTALT, BOTH, XKB_KEY_ISO_Prev_Group, NEXT, + KEY_LEFTSHIFT, UP, XKB_KEY_Shift_L, NEXT, + KEY_H, BOTH, XKB_KEY_hebrew_yod, NEXT, + KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L, NEXT, + KEY_LEFTALT, BOTH, XKB_KEY_ISO_Prev_Group, NEXT, + KEY_LEFTSHIFT, UP, XKB_KEY_Shift_L, NEXT, + KEY_H, BOTH, XKB_KEY_h, NEXT, + KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L, NEXT, + KEY_LEFTALT, BOTH, XKB_KEY_ISO_Prev_Group, NEXT, + KEY_LEFTSHIFT, UP, XKB_KEY_Shift_L, NEXT, + KEY_H, BOTH, XKB_KEY_Cyrillic_er, NEXT, + KEY_COMPOSE, BOTH, XKB_KEY_ISO_Next_Group, NEXT, + KEY_H, BOTH, XKB_KEY_h, FINISH)); + + xkb_keymap_unref(keymap); + keymap = test_compile_rules(ctx, "evdev", "", "us,il,ru", "", + "grp:switch,grp:lswitch,grp:menu_toggle"); + assert(keymap); + + /* Test depressed group works (Mode_switch). */ + assert(test_key_seq(keymap, + KEY_H, BOTH, XKB_KEY_h, NEXT, + KEY_RIGHTALT, DOWN, XKB_KEY_Mode_switch, NEXT, + KEY_H, BOTH, XKB_KEY_hebrew_yod, NEXT, + KEY_RIGHTALT, UP, XKB_KEY_ISO_Level3_Shift, NEXT, + KEY_H, BOTH, XKB_KEY_h, NEXT, + KEY_RIGHTALT, DOWN, XKB_KEY_Mode_switch, NEXT, + KEY_H, BOTH, XKB_KEY_hebrew_yod, NEXT, + KEY_RIGHTALT, UP, XKB_KEY_ISO_Level3_Shift, NEXT, + KEY_H, BOTH, XKB_KEY_h, FINISH)); + + /* Test locked+depressed group works, with wrapping and accumulation. */ + assert(test_key_seq(keymap, + KEY_H, BOTH, XKB_KEY_h, NEXT, + KEY_COMPOSE, BOTH, XKB_KEY_ISO_Next_Group, NEXT, + KEY_LEFTALT, DOWN, XKB_KEY_Mode_switch, NEXT, + KEY_H, BOTH, XKB_KEY_Cyrillic_er, NEXT, + KEY_LEFTALT, UP, XKB_KEY_Mode_switch, NEXT, + KEY_H, BOTH, XKB_KEY_hebrew_yod, NEXT, + KEY_COMPOSE, BOTH, XKB_KEY_ISO_Next_Group, NEXT, + KEY_LEFTALT, DOWN, XKB_KEY_Mode_switch, NEXT, + /* Should wrap back to first group. */ + KEY_H, BOTH, XKB_KEY_h, NEXT, + KEY_LEFTALT, UP, XKB_KEY_Mode_switch, NEXT, + KEY_H, BOTH, XKB_KEY_Cyrillic_er, NEXT, + KEY_COMPOSE, BOTH, XKB_KEY_ISO_Next_Group, NEXT, + KEY_H, BOTH, XKB_KEY_h, NEXT, + /* Two SetGroup(+1)'s should add up. */ + KEY_RIGHTALT, DOWN, XKB_KEY_Mode_switch, NEXT, + KEY_H, BOTH, XKB_KEY_hebrew_yod, NEXT, + KEY_LEFTALT, DOWN, XKB_KEY_Mode_switch, NEXT, + KEY_H, BOTH, XKB_KEY_Cyrillic_er, NEXT, + KEY_LEFTALT, UP, XKB_KEY_Mode_switch, NEXT, + KEY_H, BOTH, XKB_KEY_hebrew_yod, NEXT, + KEY_RIGHTALT, UP, XKB_KEY_ISO_Level3_Shift, NEXT, + KEY_H, BOTH, XKB_KEY_h, FINISH)); + + xkb_keymap_unref(keymap); + keymap = test_compile_rules(ctx, "evdev", "", "us", "euro", ""); + assert(keymap); + + assert(test_key_seq(keymap, + KEY_5, BOTH, XKB_KEY_5, NEXT, + KEY_RIGHTALT, DOWN, XKB_KEY_ISO_Level3_Shift, NEXT, + KEY_5, BOTH, XKB_KEY_EuroSign, NEXT, + KEY_RIGHTALT, UP, XKB_KEY_ISO_Level3_Shift, FINISH)); + + xkb_keymap_unref(keymap); + keymap = test_compile_file(ctx, "keymaps/unbound-vmod.xkb"); + assert(keymap); + + assert(test_key_seq(keymap, + KEY_H, BOTH, XKB_KEY_h, NEXT, + KEY_Z, BOTH, XKB_KEY_y, NEXT, + KEY_MINUS, BOTH, XKB_KEY_ssharp, NEXT, + KEY_Z, BOTH, XKB_KEY_y, FINISH)); + + xkb_keymap_unref(keymap); + keymap = test_compile_rules(ctx, "evdev", "applealu_ansi", "us", "", + "terminate:ctrl_alt_bksp"); + assert(keymap); + + assert(test_key_seq(keymap, + KEY_5, BOTH, XKB_KEY_5, NEXT, + KEY_KP1, BOTH, XKB_KEY_KP_1, NEXT, + KEY_NUMLOCK, BOTH, XKB_KEY_Clear, NEXT, + KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L, NEXT, + KEY_KP1, BOTH, XKB_KEY_KP_1, NEXT, + KEY_LEFTSHIFT, UP, XKB_KEY_Shift_L, NEXT, + KEY_CAPSLOCK, BOTH, XKB_KEY_Caps_Lock, NEXT, + KEY_KP1, BOTH, XKB_KEY_KP_1, NEXT, + KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L, NEXT, + KEY_KP1, BOTH, XKB_KEY_KP_1, NEXT, + KEY_LEFTSHIFT, UP, XKB_KEY_Shift_L, NEXT, + KEY_CAPSLOCK, BOTH, XKB_KEY_Caps_Lock, NEXT, + KEY_A, BOTH, XKB_KEY_a, FINISH)); + + xkb_keymap_unref(keymap); + xkb_context_unref(ctx); + return 0; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/keysym.c b/app/src/main/jni/libxkbcommon/xkbcommon/test/keysym.c new file mode 100644 index 0000000..439622c --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/keysym.c @@ -0,0 +1,200 @@ +/* + * Copyright © 2009 Dan Nicholson + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "test.h" +#include "keysym.h" /* For unexported is_lower/upper/keypad() */ + +static int +test_string(const char *string, xkb_keysym_t expected) +{ + xkb_keysym_t keysym; + + keysym = xkb_keysym_from_name(string, 0); + + fprintf(stderr, "Expected string %s -> %x\n", string, expected); + fprintf(stderr, "Received string %s -> %x\n\n", string, keysym); + + return keysym == expected; +} + +static int +test_casestring(const char *string, xkb_keysym_t expected) +{ + xkb_keysym_t keysym; + + keysym = xkb_keysym_from_name(string, XKB_KEYSYM_CASE_INSENSITIVE); + + fprintf(stderr, "Expected casestring %s -> %x\n", string, expected); + fprintf(stderr, "Received casestring %s -> %x\n\n", string, keysym); + + return keysym == expected; +} + +static int +test_keysym(xkb_keysym_t keysym, const char *expected) +{ + char s[16]; + + xkb_keysym_get_name(keysym, s, sizeof(s)); + + fprintf(stderr, "Expected keysym %#x -> %s\n", keysym, expected); + fprintf(stderr, "Received keysym %#x -> %s\n\n", keysym, s); + + return streq(s, expected); +} + +static int +test_utf8(xkb_keysym_t keysym, const char *expected) +{ + char s[8]; + int ret; + + ret = xkb_keysym_to_utf8(keysym, s, sizeof(s)); + if (ret <= 0) + return ret; + + fprintf(stderr, "Expected keysym %#x -> %s (%u bytes)\n", keysym, expected, + (unsigned) strlen(expected)); + fprintf(stderr, "Received keysym %#x -> %s (%u bytes)\n\n", keysym, s, + (unsigned) strlen(s)); + + return streq(s, expected); +} + +int +main(void) +{ + assert(test_string("Undo", 0xFF65)); + assert(test_string("ThisKeyShouldNotExist", XKB_KEY_NoSymbol)); + assert(test_string("XF86_Switch_VT_5", 0x1008FE05)); + assert(test_string("VoidSymbol", 0xFFFFFF)); + assert(test_string("U4567", 0x1004567)); + assert(test_string("0x10203040", 0x10203040)); + assert(test_string("a", 0x61)); + assert(test_string("A", 0x41)); + assert(test_string("ch", 0xfea0)); + assert(test_string("Ch", 0xfea1)); + assert(test_string("CH", 0xfea2)); + assert(test_string("THORN", 0x00de)); + assert(test_string("Thorn", 0x00de)); + assert(test_string("thorn", 0x00fe)); + + assert(test_keysym(0x1008FF56, "XF86Close")); + assert(test_keysym(0x0, "NoSymbol")); + assert(test_keysym(0x1008FE20, "XF86Ungrab")); + assert(test_keysym(0x01001234, "U1234")); + /* 16-bit unicode padded to width 4. */ + assert(test_keysym(0x010002DE, "U02DE")); + /* 32-bit unicode padded to width 8. */ + assert(test_keysym(0x0101F4A9, "U0001F4A9")); + + assert(test_casestring("Undo", 0xFF65)); + assert(test_casestring("UNDO", 0xFF65)); + assert(test_casestring("A", 0x61)); + assert(test_casestring("a", 0x61)); + assert(test_casestring("ThisKeyShouldNotExist", XKB_KEY_NoSymbol)); + assert(test_casestring("XF86_Switch_vT_5", 0x1008FE05)); + assert(test_casestring("xF86_SwitcH_VT_5", 0x1008FE05)); + assert(test_casestring("xF86SwiTch_VT_5", 0x1008FE05)); + assert(test_casestring("xF86Switch_vt_5", 0x1008FE05)); + assert(test_casestring("VoidSymbol", 0xFFFFFF)); + assert(test_casestring("vOIDsymBol", 0xFFFFFF)); + assert(test_casestring("U4567", 0x1004567)); + assert(test_casestring("u4567", 0x1004567)); + assert(test_casestring("0x10203040", 0x10203040)); + assert(test_casestring("0X10203040", 0x10203040)); + assert(test_casestring("THORN", 0x00fe)); + assert(test_casestring("Thorn", 0x00fe)); + assert(test_casestring("thorn", 0x00fe)); + + assert(test_utf8(XKB_KEY_y, "y")); + assert(test_utf8(XKB_KEY_u, "u")); + assert(test_utf8(XKB_KEY_m, "m")); + assert(test_utf8(XKB_KEY_Cyrillic_em, "м")); + assert(test_utf8(XKB_KEY_Cyrillic_u, "у")); + assert(test_utf8(XKB_KEY_exclam, "!")); + assert(test_utf8(XKB_KEY_oslash, "ø")); + assert(test_utf8(XKB_KEY_hebrew_aleph, "א")); + assert(test_utf8(XKB_KEY_Arabic_sheen, "ش")); + + assert(test_utf8(XKB_KEY_space, " ")); + assert(test_utf8(XKB_KEY_KP_Space, " ")); + assert(test_utf8(XKB_KEY_BackSpace, "\b")); + assert(test_utf8(XKB_KEY_Escape, "\033")); + assert(test_utf8(XKB_KEY_KP_Separator, ",")); + assert(test_utf8(XKB_KEY_KP_Decimal, ".")); + assert(test_utf8(XKB_KEY_Tab, "\t")); + assert(test_utf8(XKB_KEY_KP_Tab, "\t")); + assert(test_utf8(XKB_KEY_hyphen, "­")); + assert(test_utf8(XKB_KEY_Linefeed, "\n")); + assert(test_utf8(XKB_KEY_Return, "\r")); + assert(test_utf8(XKB_KEY_KP_Enter, "\r")); + assert(test_utf8(XKB_KEY_KP_Equal, "=")); + assert(test_utf8(XKB_KEY_9, "9")); + assert(test_utf8(XKB_KEY_KP_9, "9")); + assert(test_utf8(XKB_KEY_KP_Multiply, "*")); + assert(test_utf8(XKB_KEY_KP_Subtract, "-")); + + assert(xkb_keysym_is_lower(XKB_KEY_a)); + assert(xkb_keysym_is_lower(XKB_KEY_Greek_lambda)); + assert(xkb_keysym_is_lower(xkb_keysym_from_name("U03b1", 0))); /* GREEK SMALL LETTER ALPHA */ + assert(xkb_keysym_is_lower(xkb_keysym_from_name("U03af", 0))); /* GREEK SMALL LETTER IOTA WITH TONOS */ + + assert(xkb_keysym_is_upper(XKB_KEY_A)); + assert(xkb_keysym_is_upper(XKB_KEY_Greek_LAMBDA)); + assert(xkb_keysym_is_upper(xkb_keysym_from_name("U0391", 0))); /* GREEK CAPITAL LETTER ALPHA */ + assert(xkb_keysym_is_upper(xkb_keysym_from_name("U0388", 0))); /* GREEK CAPITAL LETTER EPSILON WITH TONOS */ + + assert(!xkb_keysym_is_upper(XKB_KEY_a)); + assert(!xkb_keysym_is_lower(XKB_KEY_A)); + assert(!xkb_keysym_is_lower(XKB_KEY_Return)); + assert(!xkb_keysym_is_upper(XKB_KEY_Return)); + assert(!xkb_keysym_is_lower(XKB_KEY_hebrew_aleph)); + assert(!xkb_keysym_is_upper(XKB_KEY_hebrew_aleph)); + assert(!xkb_keysym_is_upper(xkb_keysym_from_name("U05D0", 0))); /* HEBREW LETTER ALEF */ + assert(!xkb_keysym_is_lower(xkb_keysym_from_name("U05D0", 0))); /* HEBREW LETTER ALEF */ + assert(!xkb_keysym_is_lower(XKB_KEY_8)); + assert(!xkb_keysym_is_upper(XKB_KEY_8)); + + assert(xkb_keysym_is_keypad(XKB_KEY_KP_Enter)); + assert(xkb_keysym_is_keypad(XKB_KEY_KP_6)); + assert(xkb_keysym_is_keypad(XKB_KEY_KP_Add)); + assert(!xkb_keysym_is_keypad(XKB_KEY_Num_Lock)); + assert(!xkb_keysym_is_keypad(XKB_KEY_1)); + assert(!xkb_keysym_is_keypad(XKB_KEY_Return)); + + assert(xkb_keysym_to_upper(XKB_KEY_a) == XKB_KEY_A); + assert(xkb_keysym_to_upper(XKB_KEY_A) == XKB_KEY_A); + assert(xkb_keysym_to_lower(XKB_KEY_a) == XKB_KEY_a); + assert(xkb_keysym_to_lower(XKB_KEY_A) == XKB_KEY_a); + assert(xkb_keysym_to_upper(XKB_KEY_Return) == XKB_KEY_Return); + assert(xkb_keysym_to_lower(XKB_KEY_Return) == XKB_KEY_Return); + assert(xkb_keysym_to_upper(XKB_KEY_Greek_lambda) == XKB_KEY_Greek_LAMBDA); + assert(xkb_keysym_to_upper(XKB_KEY_Greek_LAMBDA) == XKB_KEY_Greek_LAMBDA); + assert(xkb_keysym_to_lower(XKB_KEY_Greek_lambda) == XKB_KEY_Greek_lambda); + assert(xkb_keysym_to_lower(XKB_KEY_Greek_LAMBDA) == XKB_KEY_Greek_lambda); + assert(xkb_keysym_to_upper(XKB_KEY_eacute) == XKB_KEY_Eacute); + assert(xkb_keysym_to_lower(XKB_KEY_Eacute) == XKB_KEY_eacute); + + return 0; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/log.c b/app/src/main/jni/libxkbcommon/xkbcommon/test/log.c new file mode 100644 index 0000000..96e2566 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/log.c @@ -0,0 +1,119 @@ +/* + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "test.h" +#include "context.h" + +#pragma GCC diagnostic ignored "-Wmissing-format-attribute" + +static const char * +log_level_to_string(enum xkb_log_level level) +{ + switch (level) { + case XKB_LOG_LEVEL_CRITICAL: + return "critical"; + case XKB_LOG_LEVEL_ERROR: + return "error"; + case XKB_LOG_LEVEL_WARNING: + return "warning"; + case XKB_LOG_LEVEL_INFO: + return "info"; + case XKB_LOG_LEVEL_DEBUG: + return "debug"; + } + + return "unknown"; +} + +ATTR_PRINTF(3, 0) static void +log_fn(struct xkb_context *ctx, enum xkb_log_level level, + const char *fmt, va_list args) +{ + char *s; + int size; + darray_char *ls = xkb_context_get_user_data(ctx); + assert(ls); + + size = vasprintf(&s, fmt, args); + assert(size != -1); + + darray_append_string(*ls, log_level_to_string(level)); + darray_append_lit(*ls, ": "); + darray_append_string(*ls, s); + free(s); +} + +int +main(void) +{ + darray_char log_string; + struct xkb_context *ctx; + int ret; + + ret = setenv("XKB_LOG_LEVEL", "warn", 1); + assert(ret == 0); + ret = setenv("XKB_LOG_VERBOSITY", "5", 1); + assert(ret == 0); + ctx = test_get_context(0); + assert(ctx); + + darray_init(log_string); + xkb_context_set_user_data(ctx, &log_string); + xkb_context_set_log_fn(ctx, log_fn); + + log_warn(ctx, "first warning: %d\n", 87); + log_info(ctx, "first info\n"); + log_dbg(ctx, "first debug: %s\n", "hello"); + log_err(ctx, "first error: %lu\n", 115415UL); + log_vrb(ctx, 5, "first verbose 5\n"); + + xkb_context_set_log_level(ctx, XKB_LOG_LEVEL_DEBUG); + log_warn(ctx, "second warning: %d\n", 87); + log_dbg(ctx, "second debug: %s %s\n", "hello", "world"); + log_info(ctx, "second info\n"); + log_err(ctx, "second error: %lu\n", 115415UL); + log_vrb(ctx, 6, "second verbose 6\n"); + + xkb_context_set_log_verbosity(ctx, 0); + xkb_context_set_log_level(ctx, XKB_LOG_LEVEL_CRITICAL); + log_warn(ctx, "third warning: %d\n", 87); + log_dbg(ctx, "third debug: %s %s\n", "hello", "world"); + log_info(ctx, "third info\n"); + log_err(ctx, "third error: %lu\n", 115415UL); + log_vrb(ctx, 0, "third verbose 0\n"); + + printf("%s", log_string.item); + + assert(streq(log_string.item, + "warning: first warning: 87\n" + "error: first error: 115415\n" + "warning: first verbose 5\n" + "warning: second warning: 87\n" + "debug: second debug: hello world\n" + "info: second info\n" + "error: second error: 115415\n")); + + xkb_context_unref(ctx); + darray_free(log_string); + return 0; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/print-compiled-keymap.c b/app/src/main/jni/libxkbcommon/xkbcommon/test/print-compiled-keymap.c new file mode 100644 index 0000000..7e57fdd --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/print-compiled-keymap.c @@ -0,0 +1,106 @@ +/* + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include + +#include "test.h" + +int +main(int argc, char *argv[]) +{ + int ret = EXIT_FAILURE; + int opt; + struct xkb_context *ctx; + struct xkb_keymap *keymap; + const char *rules = NULL; + const char *model = NULL; + const char *layout = NULL; + const char *variant = NULL; + const char *options = NULL; + const char *keymap_path = NULL; + char *dump; + + while ((opt = getopt(argc, argv, "r:m:l:v:o:k:h")) != -1) { + switch (opt) { + case 'r': + rules = optarg; + break; + case 'm': + model = optarg; + break; + case 'l': + layout = optarg; + break; + case 'v': + variant = optarg; + break; + case 'o': + options = optarg; + break; + case 'k': + keymap_path = optarg; + break; + case 'h': + case '?': + fprintf(stderr, "Usage: %s [-r ] [-m ] " + "[-l ] [-v ] [-o ]\n", + argv[0]); + fprintf(stderr, " or: %s -k \n", + argv[0]); + exit(EXIT_FAILURE); + } + } + + ctx = test_get_context(0); + if (!ctx) { + fprintf(stderr, "Couldn't create xkb context\n"); + goto err_out; + } + + if (keymap_path) + keymap = test_compile_file(ctx, keymap_path); + else + keymap = test_compile_rules(ctx, rules, model, layout, variant, + options); + if (!keymap) { + fprintf(stderr, "Couldn't create xkb keymap\n"); + goto err_ctx; + } + + dump = xkb_keymap_get_as_string(keymap, XKB_KEYMAP_FORMAT_TEXT_V1); + if (!dump) { + fprintf(stderr, "Couldn't get the keymap string\n"); + goto err_map; + } + + fputs(dump, stdout); + + ret = EXIT_SUCCESS; + free(dump); +err_map: + xkb_keymap_unref(keymap); +err_ctx: + xkb_context_unref(ctx); +err_out: + return ret; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/rmlvo-to-kccgst.c b/app/src/main/jni/libxkbcommon/xkbcommon/test/rmlvo-to-kccgst.c new file mode 100644 index 0000000..5d15933 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/rmlvo-to-kccgst.c @@ -0,0 +1,86 @@ +/* + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include + +#include "test.h" +#include "xkbcomp-priv.h" +#include "rules.h" + +int +main(int argc, char *argv[]) +{ + int opt; + struct xkb_rule_names rmlvo = { NULL }; + struct xkb_context *ctx; + struct xkb_component_names kccgst; + + while ((opt = getopt(argc, argv, "r:m:l:v:o:h")) != -1) { + switch (opt) { + case 'r': + rmlvo.rules = optarg; + break; + case 'm': + rmlvo.model = optarg; + break; + case 'l': + rmlvo.layout = optarg; + break; + case 'v': + rmlvo.variant = optarg; + break; + case 'o': + rmlvo.options = optarg; + break; + case 'h': + case '?': + fprintf(stderr, "Usage: %s [-r ] [-m ] " + "[-l ] [-v ] [-o ]\n", + argv[0]); + return 1; + } + } + + ctx = test_get_context(0); + if (!ctx) { + fprintf(stderr, "Failed to get xkb context\n"); + return 1; + } + + xkb_context_sanitize_rule_names(ctx, &rmlvo); + + if (!xkb_components_from_rules(ctx, &rmlvo, &kccgst)) + return 1; + + printf("keycodes: %s\n", kccgst.keycodes); + printf("types: %s\n", kccgst.types); + printf("compat: %s\n", kccgst.compat); + printf("symbols: %s\n", kccgst.symbols); + + free(kccgst.keycodes); + free(kccgst.types); + free(kccgst.compat); + free(kccgst.symbols); + xkb_context_unref(ctx); + return 0; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/rules-file.c b/app/src/main/jni/libxkbcommon/xkbcommon/test/rules-file.c new file mode 100644 index 0000000..e91d546 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/rules-file.c @@ -0,0 +1,173 @@ +/* + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "test.h" +#include "xkbcomp-priv.h" +#include "rules.h" + +struct test_data { + /* Rules file */ + const char *rules; + + /* Input */ + const char *model; + const char *layout; + const char *variant; + const char *options; + + /* Expected output */ + const char *keycodes; + const char *types; + const char *compat; + const char *symbols; + + /* Or set this if xkb_components_from_rules() should fail. */ + bool should_fail; +}; + +static bool +test_rules(struct xkb_context *ctx, struct test_data *data) +{ + bool passed; + const struct xkb_rule_names rmlvo = { + data->rules, data->model, data->layout, data->variant, data->options + }; + struct xkb_component_names kccgst; + + fprintf(stderr, "\n\nChecking : %s\t%s\t%s\t%s\t%s\n", data->rules, + data->model, data->layout, data->variant, data->options); + + if (data->should_fail) + fprintf(stderr, "Expecting: FAILURE\n"); + else + fprintf(stderr, "Expecting: %s\t%s\t%s\t%s\n", + data->keycodes, data->types, data->compat, data->symbols); + + if (!xkb_components_from_rules(ctx, &rmlvo, &kccgst)) { + fprintf(stderr, "Received : FAILURE\n"); + return data->should_fail; + } + + fprintf(stderr, "Received : %s\t%s\t%s\t%s\n", + kccgst.keycodes, kccgst.types, kccgst.compat, kccgst.symbols); + + passed = streq(kccgst.keycodes, data->keycodes) && + streq(kccgst.types, data->types) && + streq(kccgst.compat, data->compat) && + streq(kccgst.symbols, data->symbols); + + free(kccgst.keycodes); + free(kccgst.types); + free(kccgst.compat); + free(kccgst.symbols); + + return passed; +} + +int +main(int argc, char *argv[]) +{ + struct xkb_context *ctx; + + ctx = test_get_context(0); + assert(ctx); + + struct test_data test1 = { + .rules = "simple", + + .model = "my_model", .layout = "my_layout", .variant = "my_variant", + .options = "my_option", + + .keycodes = "my_keycodes", .types = "my_types", + .compat = "my_compat|some:compat", + .symbols = "my_symbols+extra_variant", + }; + assert(test_rules(ctx, &test1)); + + struct test_data test2 = { + .rules = "simple", + + .model = "", .layout = "", .variant = "", .options = "", + + .keycodes = "default_keycodes", .types = "default_types", + .compat = "default_compat", .symbols = "default_symbols", + }; + assert(test_rules(ctx, &test2)); + + struct test_data test3 = { + .rules = "groups", + + .model = "pc104", .layout = "foo", .variant = "", .options = "", + + .keycodes = "something(pc104)", .types = "default_types", + .compat = "default_compat", .symbols = "default_symbols", + }; + assert(test_rules(ctx, &test3)); + + struct test_data test4 = { + .rules = "groups", + + .model = "foo", .layout = "ar", .variant = "bar", .options = "", + + .keycodes = "default_keycodes", .types = "default_types", + .compat = "default_compat", .symbols = "my_symbols+(bar)", + }; + assert(test_rules(ctx, &test4)); + + struct test_data test5 = { + .rules = "simple", + + .model = NULL, .layout = "my_layout,second_layout", .variant = "my_variant", + .options = "my_option", + + .should_fail = true + }; + assert(test_rules(ctx, &test5)); + + struct test_data test6 = { + .rules = "index", + + .model = "", .layout = "br,al,cn,az", .variant = "", + .options = "some:opt", + + .keycodes = "default_keycodes", .types = "default_types", + .compat = "default_compat", + .symbols = "default_symbols+extra:1+extra:2+extra:3+extra:4", + }; + assert(test_rules(ctx, &test6)); + + struct test_data test7 = { + .rules = "multiple-options", + + .model = "my_model", .layout = "my_layout", .variant = "my_variant", + .options = "option3,option1,colon:opt,option11", + + .keycodes = "my_keycodes", .types = "my_types", + .compat = "my_compat+some:compat+group(bla)", + .symbols = "my_symbols+extra_variant+compose(foo)+keypad(bar)+altwin(menu)", + }; + assert(test_rules(ctx, &test7)); + + xkb_context_unref(ctx); + return 0; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/rulescomp.c b/app/src/main/jni/libxkbcommon/xkbcommon/test/rulescomp.c new file mode 100644 index 0000000..67ffcb8 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/rulescomp.c @@ -0,0 +1,203 @@ +/* + * Copyright © 2009 Dan Nicholson + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "evdev-scancodes.h" +#include "test.h" + +static int +test_rmlvo_va(struct xkb_context *context, const char *rules, + const char *model, const char *layout, + const char *variant, const char *options, va_list ap) +{ + struct xkb_keymap *keymap; + int ret; + + keymap = test_compile_rules(context, rules, model, layout, variant, + options); + if (!keymap) + return 0; + + fprintf(stderr, "Compiled '%s' '%s' '%s' '%s' '%s'\n", + strnull(rules), strnull(model), strnull(layout), + strnull(variant), strnull(options)); + + ret = test_key_seq_va(keymap, ap); + + xkb_keymap_unref(keymap); + + return ret; +} + +static int +test_rmlvo(struct xkb_context *context, const char *rules, + const char *model, const char *layout, const char *variant, + const char *options, ...) +{ + va_list ap; + int ret; + + va_start(ap, options); + ret = test_rmlvo_va(context, rules, model, layout, variant, options, ap); + va_end(ap); + + return ret; +} + +static int +test_rmlvo_env(struct xkb_context *ctx, const char *rules, const char *model, + const char *layout, const char *variant, const char *options, + ...) +{ + va_list ap; + int ret; + + va_start (ap, options); + + if (!isempty(rules)) + setenv("XKB_DEFAULT_RULES", rules, 1); + else + unsetenv("XKB_DEFAULT_RULES"); + + if (!isempty(model)) + setenv("XKB_DEFAULT_MODEL", model, 1); + else + unsetenv("XKB_DEFAULT_MODEL"); + + if (!isempty(layout)) + setenv("XKB_DEFAULT_LAYOUT", layout, 1); + else + unsetenv("XKB_DEFAULT_LAYOUT"); + + if (!isempty(variant)) + setenv("XKB_DEFAULT_VARIANT", variant, 1); + else + unsetenv("XKB_DEFAULT_VARIANT"); + + if (!isempty(options)) + setenv("XKB_DEFAULT_OPTIONS", options, 1); + else + unsetenv("XKB_DEFAULT_OPTIONS"); + + ret = test_rmlvo_va(ctx, NULL, NULL, NULL, NULL, NULL, ap); + + va_end(ap); + + return ret; +} + +int +main(int argc, char *argv[]) +{ + struct xkb_context *ctx = test_get_context(CONTEXT_ALLOW_ENVIRONMENT_NAMES); + + assert(ctx); + +#define KS(name) xkb_keysym_from_name(name, 0) + + assert(test_rmlvo(ctx, "evdev", "pc105", "us,il,ru,ca", ",,,multix", "grp:alts_toggle,ctrl:nocaps,compose:rwin", + KEY_Q, BOTH, XKB_KEY_q, NEXT, + KEY_LEFTALT, DOWN, XKB_KEY_Alt_L, NEXT, + KEY_RIGHTALT, DOWN, XKB_KEY_ISO_Next_Group, NEXT, + KEY_RIGHTALT, UP, XKB_KEY_ISO_Level3_Shift, NEXT, + KEY_LEFTALT, UP, XKB_KEY_Alt_L, NEXT, + KEY_Q, BOTH, XKB_KEY_slash, NEXT, + KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L, NEXT, + KEY_Q, BOTH, XKB_KEY_Q, NEXT, + KEY_RIGHTMETA, BOTH, XKB_KEY_Multi_key, FINISH)); + assert(test_rmlvo(ctx, "evdev", "pc105", "us,in", "", "grp:alts_toggle", + KEY_A, BOTH, XKB_KEY_a, NEXT, + KEY_LEFTALT, DOWN, XKB_KEY_Alt_L, NEXT, + KEY_RIGHTALT, DOWN, XKB_KEY_ISO_Next_Group, NEXT, + KEY_RIGHTALT, UP, XKB_KEY_ISO_Level3_Shift, NEXT, + KEY_LEFTALT, UP, XKB_KEY_Alt_L, NEXT, + KEY_A, BOTH, KS("U094b"), FINISH)); + assert(test_rmlvo(ctx, "evdev", "pc105", "us", "intl", "", + KEY_GRAVE, BOTH, XKB_KEY_dead_grave, FINISH)); + assert(test_rmlvo(ctx, "evdev", "evdev", "us", "intl", "grp:alts_toggle", + KEY_GRAVE, BOTH, XKB_KEY_dead_grave, FINISH)); + + /* 20 is not a legal group; make sure this is handled gracefully. */ + assert(test_rmlvo(ctx, "evdev", "", "us:20", "", "", + KEY_A, BOTH, XKB_KEY_a, FINISH)); + + /* Don't choke on missing values in RMLVO. Should just skip them. + Currently generates us,us,ca. */ + assert(test_rmlvo(ctx, "evdev", "", "us,,ca", "", "grp:alts_toggle", + KEY_A, BOTH, XKB_KEY_a, NEXT, + KEY_LEFTALT, DOWN, XKB_KEY_Alt_L, NEXT, + KEY_RIGHTALT, DOWN, XKB_KEY_ISO_Next_Group, NEXT, + KEY_RIGHTALT, UP, XKB_KEY_ISO_Next_Group, NEXT, + KEY_LEFTALT, UP, XKB_KEY_Alt_L, NEXT, + KEY_LEFTALT, DOWN, XKB_KEY_Alt_L, NEXT, + KEY_RIGHTALT, DOWN, XKB_KEY_ISO_Next_Group, NEXT, + KEY_RIGHTALT, UP, XKB_KEY_ISO_Level3_Shift, NEXT, + KEY_LEFTALT, UP, XKB_KEY_Alt_L, NEXT, + KEY_APOSTROPHE, BOTH, XKB_KEY_dead_grave, FINISH)); + + assert(test_rmlvo(ctx, "", "", "", "", "", + KEY_A, BOTH, XKB_KEY_a, FINISH)); + + assert(!test_rmlvo(ctx, "does-not-exist", "", "", "", "", + KEY_A, BOTH, XKB_KEY_a, FINISH)); + + assert(test_rmlvo_env(ctx, "evdev", "", "us", "", "", + KEY_A, BOTH, XKB_KEY_a, FINISH)); + assert(test_rmlvo_env(ctx, "evdev", "", "us", "", "ctrl:nocaps", + KEY_CAPSLOCK, BOTH, XKB_KEY_Control_L, FINISH)); + + /* Ignores multix and generates us,ca. */ + assert(test_rmlvo_env(ctx, "evdev", "", "us,ca", ",,,multix", "grp:alts_toggle", + KEY_A, BOTH, XKB_KEY_a, NEXT, + KEY_LEFTALT, DOWN, XKB_KEY_Alt_L, NEXT, + KEY_RIGHTALT, DOWN, XKB_KEY_ISO_Next_Group, NEXT, + KEY_RIGHTALT, UP, XKB_KEY_ISO_Level3_Shift, NEXT, + KEY_LEFTALT, UP, XKB_KEY_Alt_L, NEXT, + KEY_GRAVE, UP, XKB_KEY_numbersign, FINISH)); + + assert(!test_rmlvo_env(ctx, "broken", "what-on-earth", "invalid", "", "", + KEY_A, BOTH, XKB_KEY_a, FINISH)); + + /* Ensure a keymap with an empty xkb_keycodes compiles fine. */ + assert(test_rmlvo_env(ctx, "base", "empty", "empty", "", "", + KEY_A, BOTH, XKB_KEY_NoSymbol, FINISH)); + + /* Has an illegal escape sequence, but shouldn't fail. */ + assert(test_rmlvo_env(ctx, "evdev", "", "cz", "bksl", "", + KEY_A, BOTH, XKB_KEY_a, FINISH)); + + xkb_context_unref(ctx); + + ctx = test_get_context(0); + assert(test_rmlvo_env(ctx, "broken", "but", "ignored", "per", "ctx flags", + KEY_A, BOTH, XKB_KEY_a, FINISH)); + + /* Test response to invalid flags. */ + { + struct xkb_rule_names rmlvo = { NULL }; + assert(!xkb_keymap_new_from_names(ctx, &rmlvo, -1)); + assert(!xkb_keymap_new_from_names(ctx, &rmlvo, 5453)); + } + + xkb_context_unref(ctx); + return 0; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/state.c b/app/src/main/jni/libxkbcommon/xkbcommon/test/state.c new file mode 100644 index 0000000..8ae718c --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/state.c @@ -0,0 +1,709 @@ +/* + * Copyright © 2012 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Daniel Stone + */ + +#include +#include +#include + +#include "evdev-scancodes.h" +#include "test.h" + +/* Offset between evdev keycodes (where KEY_ESCAPE is 1), and the evdev XKB + * keycode set (where ESC is 9). */ +#define EVDEV_OFFSET 8 + +static void +print_state(struct xkb_state *state) +{ + struct xkb_keymap *keymap; + xkb_layout_index_t group; + xkb_mod_index_t mod; + xkb_led_index_t led; + + group = xkb_state_serialize_layout(state, XKB_STATE_LAYOUT_EFFECTIVE); + mod = xkb_state_serialize_mods(state, XKB_STATE_MODS_EFFECTIVE); + /* led = xkb_state_serialize_leds(state, XKB_STATE_LEDS); */ + if (!group && !mod /* && !led */) { + fprintf(stderr, "\tno state\n"); + return; + } + + keymap = xkb_state_get_keymap(state); + + for (group = 0; group < xkb_keymap_num_layouts(keymap); group++) { + if (xkb_state_layout_index_is_active(state, group, + XKB_STATE_LAYOUT_EFFECTIVE | + XKB_STATE_LAYOUT_DEPRESSED | + XKB_STATE_LAYOUT_LATCHED | + XKB_STATE_LAYOUT_LOCKED) <= 0) + continue; + fprintf(stderr, "\tgroup %s (%d): %s%s%s%s\n", + xkb_keymap_layout_get_name(keymap, group), + group, + xkb_state_layout_index_is_active(state, group, XKB_STATE_LAYOUT_EFFECTIVE) > 0 ? + "effective " : "", + xkb_state_layout_index_is_active(state, group, XKB_STATE_LAYOUT_DEPRESSED) > 0 ? + "depressed " : "", + xkb_state_layout_index_is_active(state, group, XKB_STATE_LAYOUT_LATCHED) > 0 ? + "latched " : "", + xkb_state_layout_index_is_active(state, group, XKB_STATE_LAYOUT_LOCKED) > 0 ? + "locked " : ""); + } + + for (mod = 0; mod < xkb_keymap_num_mods(keymap); mod++) { + if (xkb_state_mod_index_is_active(state, mod, + XKB_STATE_MODS_EFFECTIVE | + XKB_STATE_MODS_DEPRESSED | + XKB_STATE_MODS_LATCHED | + XKB_STATE_MODS_LOCKED) <= 0) + continue; + fprintf(stderr, "\tmod %s (%d): %s%s%s%s\n", + xkb_keymap_mod_get_name(keymap, mod), + mod, + xkb_state_mod_index_is_active(state, mod, XKB_STATE_MODS_EFFECTIVE) > 0 ? + "effective " : "", + xkb_state_mod_index_is_active(state, mod, XKB_STATE_MODS_DEPRESSED) > 0 ? + "depressed " : "", + xkb_state_mod_index_is_active(state, mod, XKB_STATE_MODS_LATCHED) > 0 ? + "latched " : "", + xkb_state_mod_index_is_active(state, mod, XKB_STATE_MODS_LOCKED) > 0 ? + "locked " : ""); + } + + for (led = 0; led < xkb_keymap_num_leds(keymap); led++) { + if (xkb_state_led_index_is_active(state, led) <= 0) + continue; + fprintf(stderr, "\tled %s (%d): active\n", + xkb_keymap_led_get_name(keymap, led), + led); + } +} + +static void +test_update_key(struct xkb_keymap *keymap) +{ + struct xkb_state *state = xkb_state_new(keymap); + const xkb_keysym_t *syms; + xkb_keysym_t one_sym; + int num_syms; + + assert(state); + + /* LCtrl down */ + xkb_state_update_key(state, KEY_LEFTCTRL + EVDEV_OFFSET, XKB_KEY_DOWN); + fprintf(stderr, "dumping state for LCtrl down:\n"); + print_state(state); + assert(xkb_state_mod_name_is_active(state, XKB_MOD_NAME_CTRL, + XKB_STATE_MODS_DEPRESSED) > 0); + + /* LCtrl + RAlt down */ + xkb_state_update_key(state, KEY_RIGHTALT + EVDEV_OFFSET, XKB_KEY_DOWN); + fprintf(stderr, "dumping state for LCtrl + RAlt down:\n"); + print_state(state); + assert(xkb_state_mod_name_is_active(state, XKB_MOD_NAME_CTRL, + XKB_STATE_MODS_DEPRESSED) > 0); + assert(xkb_state_mod_name_is_active(state, XKB_MOD_NAME_ALT, + XKB_STATE_MODS_DEPRESSED) > 0); + assert(xkb_state_mod_names_are_active(state, XKB_STATE_MODS_DEPRESSED, + XKB_STATE_MATCH_ALL, + XKB_MOD_NAME_CTRL, + XKB_MOD_NAME_ALT, + NULL) > 0); + assert(xkb_state_mod_indices_are_active(state, XKB_STATE_MODS_DEPRESSED, + XKB_STATE_MATCH_ALL, + xkb_keymap_mod_get_index(keymap, XKB_MOD_NAME_CTRL), + xkb_keymap_mod_get_index(keymap, XKB_MOD_NAME_ALT), + XKB_MOD_INVALID) > 0); + assert(xkb_state_mod_names_are_active(state, XKB_STATE_MODS_DEPRESSED, + XKB_STATE_MATCH_ALL, + XKB_MOD_NAME_ALT, + NULL) == 0); + assert(xkb_state_mod_names_are_active(state, XKB_STATE_MODS_DEPRESSED, + XKB_STATE_MATCH_ALL | + XKB_STATE_MATCH_NON_EXCLUSIVE, + XKB_MOD_NAME_ALT, + NULL) > 0); + assert(xkb_state_mod_names_are_active(state, XKB_STATE_MODS_DEPRESSED, + (XKB_STATE_MATCH_ANY | + XKB_STATE_MATCH_NON_EXCLUSIVE), + XKB_MOD_NAME_ALT, + NULL) > 0); + + /* RAlt down */ + xkb_state_update_key(state, KEY_LEFTCTRL + EVDEV_OFFSET, XKB_KEY_UP); + fprintf(stderr, "dumping state for RAlt down:\n"); + print_state(state); + assert(xkb_state_mod_name_is_active(state, XKB_MOD_NAME_CTRL, + XKB_STATE_MODS_EFFECTIVE) == 0); + assert(xkb_state_mod_name_is_active(state, XKB_MOD_NAME_ALT, + XKB_STATE_MODS_DEPRESSED) > 0); + assert(xkb_state_mod_names_are_active(state, XKB_STATE_MODS_DEPRESSED, + XKB_STATE_MATCH_ANY, + XKB_MOD_NAME_CTRL, + XKB_MOD_NAME_ALT, + NULL) > 0); + assert(xkb_state_mod_names_are_active(state, XKB_STATE_MODS_LATCHED, + XKB_STATE_MATCH_ANY, + XKB_MOD_NAME_CTRL, + XKB_MOD_NAME_ALT, + NULL) == 0); + + /* none down */ + xkb_state_update_key(state, KEY_RIGHTALT + EVDEV_OFFSET, XKB_KEY_UP); + assert(xkb_state_mod_name_is_active(state, XKB_MOD_NAME_ALT, + XKB_STATE_MODS_EFFECTIVE) == 0); + + /* Caps locked */ + xkb_state_update_key(state, KEY_CAPSLOCK + EVDEV_OFFSET, XKB_KEY_DOWN); + assert(xkb_state_mod_name_is_active(state, XKB_MOD_NAME_CAPS, + XKB_STATE_MODS_DEPRESSED) > 0); + xkb_state_update_key(state, KEY_CAPSLOCK + EVDEV_OFFSET, XKB_KEY_UP); + fprintf(stderr, "dumping state for Caps Lock:\n"); + print_state(state); + assert(xkb_state_mod_name_is_active(state, XKB_MOD_NAME_CAPS, + XKB_STATE_MODS_DEPRESSED) == 0); + assert(xkb_state_mod_name_is_active(state, XKB_MOD_NAME_CAPS, + XKB_STATE_MODS_LOCKED) > 0); + assert(xkb_state_led_name_is_active(state, XKB_LED_NAME_CAPS) > 0); + num_syms = xkb_state_key_get_syms(state, KEY_Q + EVDEV_OFFSET, &syms); + assert(num_syms == 1 && syms[0] == XKB_KEY_Q); + + /* Num Lock locked */ + xkb_state_update_key(state, KEY_NUMLOCK + EVDEV_OFFSET, XKB_KEY_DOWN); + xkb_state_update_key(state, KEY_NUMLOCK + EVDEV_OFFSET, XKB_KEY_UP); + fprintf(stderr, "dumping state for Caps Lock + Num Lock:\n"); + print_state(state); + assert(xkb_state_mod_name_is_active(state, XKB_MOD_NAME_CAPS, + XKB_STATE_MODS_LOCKED) > 0); + assert(xkb_state_mod_name_is_active(state, "Mod2", + XKB_STATE_MODS_LOCKED) > 0); + num_syms = xkb_state_key_get_syms(state, KEY_KP1 + EVDEV_OFFSET, &syms); + assert(num_syms == 1 && syms[0] == XKB_KEY_KP_1); + assert(xkb_state_led_name_is_active(state, XKB_LED_NAME_NUM) > 0); + + /* Num Lock unlocked */ + xkb_state_update_key(state, KEY_NUMLOCK + EVDEV_OFFSET, XKB_KEY_DOWN); + xkb_state_update_key(state, KEY_NUMLOCK + EVDEV_OFFSET, XKB_KEY_UP); + + /* Switch to group 2 */ + xkb_state_update_key(state, KEY_COMPOSE + EVDEV_OFFSET, XKB_KEY_DOWN); + xkb_state_update_key(state, KEY_COMPOSE + EVDEV_OFFSET, XKB_KEY_UP); + assert(xkb_state_led_name_is_active(state, "Group 2") > 0); + assert(xkb_state_led_name_is_active(state, XKB_LED_NAME_NUM) == 0); + + /* Switch back to group 1. */ + xkb_state_update_key(state, KEY_COMPOSE + EVDEV_OFFSET, XKB_KEY_DOWN); + xkb_state_update_key(state, KEY_COMPOSE + EVDEV_OFFSET, XKB_KEY_UP); + + /* Caps unlocked */ + xkb_state_update_key(state, KEY_CAPSLOCK + EVDEV_OFFSET, XKB_KEY_DOWN); + xkb_state_update_key(state, KEY_CAPSLOCK + EVDEV_OFFSET, XKB_KEY_UP); + assert(xkb_state_mod_name_is_active(state, XKB_MOD_NAME_CAPS, + XKB_STATE_MODS_EFFECTIVE) == 0); + assert(xkb_state_led_name_is_active(state, XKB_LED_NAME_CAPS) == 0); + num_syms = xkb_state_key_get_syms(state, KEY_Q + EVDEV_OFFSET, &syms); + assert(num_syms == 1 && syms[0] == XKB_KEY_q); + + /* Multiple symbols */ + num_syms = xkb_state_key_get_syms(state, KEY_6 + EVDEV_OFFSET, &syms); + assert(num_syms == 5 && + syms[0] == XKB_KEY_H && syms[1] == XKB_KEY_E && + syms[2] == XKB_KEY_L && syms[3] == XKB_KEY_L && + syms[4] == XKB_KEY_O); + one_sym = xkb_state_key_get_one_sym(state, KEY_6 + EVDEV_OFFSET); + assert(one_sym == XKB_KEY_NoSymbol); + xkb_state_update_key(state, KEY_6 + EVDEV_OFFSET, XKB_KEY_DOWN); + xkb_state_update_key(state, KEY_6 + EVDEV_OFFSET, XKB_KEY_UP); + + one_sym = xkb_state_key_get_one_sym(state, KEY_5 + EVDEV_OFFSET); + assert(one_sym == XKB_KEY_5); + + xkb_state_unref(state); +} + +static void +test_serialisation(struct xkb_keymap *keymap) +{ + struct xkb_state *state = xkb_state_new(keymap); + xkb_mod_mask_t base_mods; + xkb_mod_mask_t latched_mods; + xkb_mod_mask_t locked_mods; + xkb_mod_mask_t effective_mods; + xkb_mod_index_t caps, shift, ctrl; + xkb_layout_index_t base_group = 0; + xkb_layout_index_t latched_group = 0; + xkb_layout_index_t locked_group = 0; + + assert(state); + + caps = xkb_keymap_mod_get_index(keymap, XKB_MOD_NAME_CAPS); + assert(caps != XKB_MOD_INVALID); + shift = xkb_keymap_mod_get_index(keymap, XKB_MOD_NAME_SHIFT); + assert(shift != XKB_MOD_INVALID); + ctrl = xkb_keymap_mod_get_index(keymap, XKB_MOD_NAME_CTRL); + assert(ctrl != XKB_MOD_INVALID); + + xkb_state_update_key(state, KEY_CAPSLOCK + EVDEV_OFFSET, XKB_KEY_DOWN); + xkb_state_update_key(state, KEY_CAPSLOCK + EVDEV_OFFSET, XKB_KEY_UP); + base_mods = xkb_state_serialize_mods(state, XKB_STATE_MODS_DEPRESSED); + assert(base_mods == 0); + latched_mods = xkb_state_serialize_mods(state, XKB_STATE_MODS_LATCHED); + assert(latched_mods == 0); + locked_mods = xkb_state_serialize_mods(state, XKB_STATE_MODS_LOCKED); + assert(locked_mods == (1U << caps)); + effective_mods = xkb_state_serialize_mods(state, XKB_STATE_MODS_EFFECTIVE); + assert(effective_mods == locked_mods); + + xkb_state_update_key(state, KEY_LEFTSHIFT + EVDEV_OFFSET, XKB_KEY_DOWN); + base_mods = xkb_state_serialize_mods(state, XKB_STATE_MODS_DEPRESSED); + assert(base_mods == (1U << shift)); + latched_mods = xkb_state_serialize_mods(state, XKB_STATE_MODS_LATCHED); + assert(latched_mods == 0); + locked_mods = xkb_state_serialize_mods(state, XKB_STATE_MODS_LOCKED); + assert(locked_mods == (1U << caps)); + effective_mods = xkb_state_serialize_mods(state, XKB_STATE_MODS_EFFECTIVE); + assert(effective_mods == (base_mods | locked_mods)); + + base_mods |= (1U << ctrl); + xkb_state_update_mask(state, base_mods, latched_mods, locked_mods, + base_group, latched_group, locked_group); + + assert(xkb_state_mod_index_is_active(state, ctrl, XKB_STATE_MODS_DEPRESSED) > 0); + assert(xkb_state_mod_index_is_active(state, ctrl, XKB_STATE_MODS_EFFECTIVE) > 0); + + xkb_state_unref(state); +} + +static void +test_update_mask_mods(struct xkb_keymap *keymap) +{ + struct xkb_state *state = xkb_state_new(keymap); + xkb_mod_index_t caps, shift, num, alt, mod1, mod2; + enum xkb_state_component changed; + + assert(state); + + caps = xkb_keymap_mod_get_index(keymap, XKB_MOD_NAME_CAPS); + assert(caps != XKB_MOD_INVALID); + shift = xkb_keymap_mod_get_index(keymap, XKB_MOD_NAME_SHIFT); + assert(shift != XKB_MOD_INVALID); + num = xkb_keymap_mod_get_index(keymap, "NumLock"); + assert(num != XKB_MOD_INVALID); + alt = xkb_keymap_mod_get_index(keymap, "Alt"); + assert(alt != XKB_MOD_INVALID); + mod1 = xkb_keymap_mod_get_index(keymap, "Mod1"); + assert(mod1 != XKB_MOD_INVALID); + mod2 = xkb_keymap_mod_get_index(keymap, "Mod2"); + assert(mod2 != XKB_MOD_INVALID); + + changed = xkb_state_update_mask(state, 1 << caps, 0, 0, 0, 0, 0); + assert(changed == (XKB_STATE_MODS_DEPRESSED | XKB_STATE_MODS_EFFECTIVE)); + assert(xkb_state_serialize_mods(state, XKB_STATE_MODS_EFFECTIVE) == + (1u << caps)); + + changed = xkb_state_update_mask(state, (1 << caps), 0, (1 << shift), 0, 0, 0); + assert(changed == (XKB_STATE_MODS_LOCKED | XKB_STATE_MODS_EFFECTIVE | + XKB_STATE_LEDS)); + assert(xkb_state_serialize_mods(state, XKB_STATE_MODS_EFFECTIVE) == + ((1u << caps) | (1u << shift))); + assert(xkb_state_serialize_mods(state, XKB_STATE_MODS_DEPRESSED) == + (1u << caps)); + assert(xkb_state_serialize_mods(state, XKB_STATE_MODS_LATCHED) == 0); + assert(xkb_state_serialize_mods(state, XKB_STATE_MODS_LOCKED) == + (1u << shift)); + + changed = xkb_state_update_mask(state, 0, 0, 0, 0, 0, 0); + assert(changed == (XKB_STATE_MODS_DEPRESSED | XKB_STATE_MODS_LOCKED | + XKB_STATE_MODS_EFFECTIVE | XKB_STATE_LEDS)); + assert(xkb_state_serialize_mods(state, XKB_STATE_MODS_EFFECTIVE) == 0); + + changed = xkb_state_update_mask(state, (1 << alt), 0, 0, 0, 0, 0); + assert(changed == (XKB_STATE_MODS_DEPRESSED | XKB_STATE_MODS_EFFECTIVE)); + assert(xkb_state_serialize_mods(state, XKB_STATE_MODS_EFFECTIVE) == + ((1u << alt) | (1u << mod1))); + + changed = xkb_state_update_mask(state, 0, 0, (1 << num), 0, 0, 0); + assert(changed == (XKB_STATE_MODS_DEPRESSED | XKB_STATE_MODS_LOCKED | + XKB_STATE_MODS_EFFECTIVE | XKB_STATE_LEDS)); + assert(xkb_state_serialize_mods(state, XKB_STATE_MODS_EFFECTIVE) == + ((1u << num) | (1u << mod2))); + + xkb_state_update_mask(state, 0, 0, 0, 0, 0, 0); + + changed = xkb_state_update_mask(state, (1 << mod2), 0, (1 << num), 0, 0, 0); + assert(changed == (XKB_STATE_MODS_DEPRESSED | XKB_STATE_MODS_LOCKED | + XKB_STATE_MODS_EFFECTIVE | XKB_STATE_LEDS)); + assert(xkb_state_serialize_mods(state, XKB_STATE_MODS_EFFECTIVE) == + ((1u << mod2) | (1u << num))); + assert(xkb_state_serialize_mods(state, XKB_STATE_MODS_DEPRESSED) == + (1u << mod2)); + assert(xkb_state_serialize_mods(state, XKB_STATE_MODS_LOCKED) == + ((1u << num) | (1u << mod2))); + + xkb_state_unref(state); +} + +static void +test_repeat(struct xkb_keymap *keymap) +{ + assert(!xkb_keymap_key_repeats(keymap, KEY_LEFTSHIFT + 8)); + assert(xkb_keymap_key_repeats(keymap, KEY_A + 8)); + assert(xkb_keymap_key_repeats(keymap, KEY_8 + 8)); + assert(xkb_keymap_key_repeats(keymap, KEY_DOWN + 8)); + assert(xkb_keymap_key_repeats(keymap, KEY_KBDILLUMDOWN + 8)); +} + +static void +test_consume(struct xkb_keymap *keymap) +{ + struct xkb_state *state; + xkb_mod_index_t alt, shift, caps, ctrl, mod5; + xkb_mod_mask_t mask; + + state = xkb_state_new(keymap); + assert(state); + + alt = xkb_keymap_mod_get_index(keymap, XKB_MOD_NAME_ALT); + assert(alt != XKB_MOD_INVALID); + shift = xkb_keymap_mod_get_index(keymap, XKB_MOD_NAME_SHIFT); + assert(shift != XKB_MOD_INVALID); + caps = xkb_keymap_mod_get_index(keymap, XKB_MOD_NAME_CAPS); + assert(caps != XKB_MOD_INVALID); + ctrl = xkb_keymap_mod_get_index(keymap, XKB_MOD_NAME_CTRL); + assert(ctrl != XKB_MOD_INVALID); + mod5 = xkb_keymap_mod_get_index(keymap, "Mod5"); + assert(mod5 != XKB_MOD_INVALID); + + /* Test remove_consumed() */ + xkb_state_update_key(state, KEY_LEFTALT + EVDEV_OFFSET, XKB_KEY_DOWN); + xkb_state_update_key(state, KEY_LEFTSHIFT + EVDEV_OFFSET, XKB_KEY_DOWN); + xkb_state_update_key(state, KEY_EQUAL + EVDEV_OFFSET, XKB_KEY_DOWN); + + fprintf(stderr, "dumping state for Alt-Shift-+\n"); + print_state(state); + + mask = xkb_state_serialize_mods(state, XKB_STATE_MODS_EFFECTIVE); + assert(mask == ((1U << alt) | (1U << shift))); + mask = xkb_state_mod_mask_remove_consumed(state, KEY_EQUAL + EVDEV_OFFSET, + mask); + assert(mask == (1U << alt)); + + /* Test get_consumed_mods() */ + mask = xkb_state_key_get_consumed_mods(state, KEY_EQUAL + EVDEV_OFFSET); + assert(mask == (1U << shift)); + + mask = xkb_state_key_get_consumed_mods(state, KEY_ESC + EVDEV_OFFSET); + assert(mask == 0); + + xkb_state_unref(state); + + /* Test is_consumed() - simple ALPHABETIC type. */ + state = xkb_state_new(keymap); + assert(state); + + mask = xkb_state_key_get_consumed_mods(state, KEY_A + EVDEV_OFFSET); + assert(mask == ((1U << shift) | (1U << caps))); + + assert(xkb_state_mod_index_is_consumed(state, KEY_A + EVDEV_OFFSET, caps) > 0); + assert(xkb_state_mod_index_is_consumed(state, KEY_A + EVDEV_OFFSET, shift) > 0); + xkb_state_update_key(state, KEY_CAPSLOCK + EVDEV_OFFSET, XKB_KEY_DOWN); + xkb_state_update_key(state, KEY_CAPSLOCK + EVDEV_OFFSET, XKB_KEY_UP); + assert(xkb_state_mod_index_is_consumed(state, KEY_A + EVDEV_OFFSET, caps) > 0); + assert(xkb_state_mod_index_is_consumed(state, KEY_A + EVDEV_OFFSET, shift) > 0); + xkb_state_update_key(state, KEY_LEFTSHIFT + EVDEV_OFFSET, XKB_KEY_DOWN); + assert(xkb_state_mod_index_is_consumed(state, KEY_A + EVDEV_OFFSET, caps) > 0); + assert(xkb_state_mod_index_is_consumed(state, KEY_A + EVDEV_OFFSET, shift) > 0); + xkb_state_update_key(state, KEY_LEFTSHIFT + EVDEV_OFFSET, XKB_KEY_UP); + xkb_state_update_key(state, KEY_CAPSLOCK + EVDEV_OFFSET, XKB_KEY_DOWN); + xkb_state_update_key(state, KEY_CAPSLOCK + EVDEV_OFFSET, XKB_KEY_UP); + assert(xkb_state_mod_index_is_consumed(state, KEY_A + EVDEV_OFFSET, caps) > 0); + assert(xkb_state_mod_index_is_consumed(state, KEY_A + EVDEV_OFFSET, shift) > 0); + + xkb_state_unref(state); + + /* More complicated - CTRL+ALT */ + state = xkb_state_new(keymap); + + mask = xkb_state_key_get_consumed_mods(state, KEY_F1 + EVDEV_OFFSET); + assert(mask == ((1U << shift) | (1U << alt) | (1U << ctrl) | (1U << mod5))); + + /* Shift is preserved. */ + xkb_state_update_key(state, KEY_LEFTSHIFT + EVDEV_OFFSET, XKB_KEY_DOWN); + mask = xkb_state_key_get_consumed_mods(state, KEY_F1 + EVDEV_OFFSET); + assert(mask == ((1U << alt) | (1U << ctrl) | (1U << mod5))); + xkb_state_update_key(state, KEY_LEFTSHIFT + EVDEV_OFFSET, XKB_KEY_UP); + + mask = xkb_state_key_get_consumed_mods(state, KEY_F1 + EVDEV_OFFSET); + assert(mask == ((1U << shift) | (1U << alt) | (1U << ctrl) | (1U << mod5))); + + assert(state); + + xkb_state_unref(state); +} + +static void +key_iter(struct xkb_keymap *keymap, xkb_keycode_t key, void *data) +{ + xkb_keycode_t *counter = data; + + assert(*counter == key); + (*counter)++; +} + +static void +test_range(struct xkb_keymap *keymap) +{ + xkb_keycode_t counter; + + assert(xkb_keymap_min_keycode(keymap) == 9); + assert(xkb_keymap_max_keycode(keymap) == 253); + + counter = xkb_keymap_min_keycode(keymap); + xkb_keymap_key_for_each(keymap, key_iter, &counter); + assert(counter == xkb_keymap_max_keycode(keymap) + 1); +} + +static void +test_caps_keysym_transformation(struct xkb_keymap *keymap) +{ + struct xkb_state *state = xkb_state_new(keymap); + xkb_mod_index_t caps, shift; + int nsyms; + xkb_keysym_t sym; + const xkb_keysym_t *syms; + + assert(state); + + /* See xkb_state_key_get_one_sym() for what's this all about. */ + + caps = xkb_keymap_mod_get_index(keymap, XKB_MOD_NAME_CAPS); + shift = xkb_keymap_mod_get_index(keymap, XKB_MOD_NAME_SHIFT); + assert(caps != XKB_MOD_INVALID && shift != XKB_MOD_INVALID); + + assert(xkb_state_key_get_layout(state, KEY_A + 8) == 0); + assert(xkb_state_key_get_layout(state, KEY_SEMICOLON + 8) == 0); + + /* Without caps, no transformation. */ + assert(xkb_state_mod_index_is_active(state, caps, XKB_STATE_MODS_EFFECTIVE) == 0); + assert(xkb_state_mod_index_is_active(state, shift, XKB_STATE_MODS_EFFECTIVE) == 0); + assert(xkb_state_key_get_level(state, KEY_A + 8, 0) == 0); + sym = xkb_state_key_get_one_sym(state, KEY_A + 8); + assert(sym == XKB_KEY_a); + assert(xkb_state_key_get_level(state, KEY_SEMICOLON + 8, 0) == 0); + sym = xkb_state_key_get_one_sym(state, KEY_SEMICOLON + 8); + assert(sym == XKB_KEY_eacute); + nsyms = xkb_state_key_get_syms(state, KEY_SEMICOLON + 8, &syms); + assert(nsyms == 1 && syms[0] == XKB_KEY_eacute); + + /* With shift, no transformation (only different level). */ + xkb_state_update_key(state, KEY_LEFTSHIFT + 8, XKB_KEY_DOWN); + assert(xkb_state_mod_index_is_active(state, caps, XKB_STATE_MODS_EFFECTIVE) == 0); + assert(xkb_state_mod_index_is_active(state, shift, XKB_STATE_MODS_EFFECTIVE) > 0); + assert(xkb_state_key_get_level(state, KEY_A + 8, 0) == 1); + sym = xkb_state_key_get_one_sym(state, KEY_A + 8); + assert(sym == XKB_KEY_A); + sym = xkb_state_key_get_one_sym(state, KEY_SEMICOLON + 8); + assert(sym == XKB_KEY_odiaeresis); + nsyms = xkb_state_key_get_syms(state, KEY_SEMICOLON + 8, &syms); + assert(nsyms == 1 && syms[0] == XKB_KEY_odiaeresis); + xkb_state_update_key(state, KEY_LEFTSHIFT + 8, XKB_KEY_UP); + assert(xkb_state_mod_index_is_active(state, shift, XKB_STATE_MODS_EFFECTIVE) == 0); + + /* With caps, transform in same level, only with _get_one_sym(). */ + xkb_state_update_key(state, KEY_CAPSLOCK + 8, XKB_KEY_DOWN); + xkb_state_update_key(state, KEY_CAPSLOCK + 8, XKB_KEY_UP); + assert(xkb_state_mod_index_is_active(state, caps, XKB_STATE_MODS_EFFECTIVE) > 0); + assert(xkb_state_mod_index_is_active(state, shift, XKB_STATE_MODS_EFFECTIVE) == 0); + assert(xkb_state_key_get_level(state, KEY_A + 8, 0) == 1); + sym = xkb_state_key_get_one_sym(state, KEY_A + 8); + assert(sym == XKB_KEY_A); + assert(xkb_state_key_get_level(state, KEY_SEMICOLON + 8, 0) == 0); + sym = xkb_state_key_get_one_sym(state, KEY_SEMICOLON + 8); + assert(sym == XKB_KEY_Eacute); + nsyms = xkb_state_key_get_syms(state, KEY_SEMICOLON + 8, &syms); + assert(nsyms == 1 && syms[0] == XKB_KEY_eacute); + xkb_state_update_key(state, KEY_LEFTSHIFT + 8, XKB_KEY_UP); + assert(xkb_state_mod_index_is_active(state, shift, XKB_STATE_MODS_EFFECTIVE) == 0); + xkb_state_update_key(state, KEY_CAPSLOCK + 8, XKB_KEY_DOWN); + xkb_state_update_key(state, KEY_CAPSLOCK + 8, XKB_KEY_UP); + + xkb_state_unref(state); +} + +static void +test_get_utf8_utf32(struct xkb_keymap *keymap) +{ + char buf[256]; + struct xkb_state *state = xkb_state_new(keymap); + assert(state); + +#define TEST_KEY(key, expected_utf8, expected_utf32) do { \ + assert(xkb_state_key_get_utf8(state, key + 8, NULL, 0) == strlen(expected_utf8)); \ + assert(xkb_state_key_get_utf8(state, key + 8, buf, sizeof(buf)) == strlen(expected_utf8)); \ + assert(memcmp(buf, expected_utf8, sizeof(expected_utf8)) == 0); \ + assert(xkb_state_key_get_utf32(state, key + 8) == expected_utf32); \ +} while (0) + + /* Simple ASCII. */ + TEST_KEY(KEY_A, "a", 0x61); + TEST_KEY(KEY_ESC, "\x1B", 0x1B); + TEST_KEY(KEY_1, "1", 0x31); + + /* Invalid. */ + TEST_KEY(XKB_KEYCODE_INVALID - 8, "", 0); + TEST_KEY(300, "", 0); + + /* No string. */ + TEST_KEY(KEY_LEFTCTRL, "", 0); + TEST_KEY(KEY_NUMLOCK, "", 0); + + /* Multiple keysyms. */ + TEST_KEY(KEY_6, "HELLO", 0); + TEST_KEY(KEY_7, "YES THIS IS DOG", 0); + + /* Check truncation. */ + memset(buf, 'X', sizeof(buf)); + assert(xkb_state_key_get_utf8(state, KEY_6 + 8, buf, 0) == strlen("HELLO")); + assert(memcmp(buf, "X", 1) == 0); + assert(xkb_state_key_get_utf8(state, KEY_6 + 8, buf, 1) == strlen("HELLO")); + assert(memcmp(buf, "", 1) == 0); + assert(xkb_state_key_get_utf8(state, KEY_6 + 8, buf, 2) == strlen("HELLO")); + assert(memcmp(buf, "H", 2) == 0); + assert(xkb_state_key_get_utf8(state, KEY_6 + 8, buf, 3) == strlen("HELLO")); + assert(memcmp(buf, "HE", 3) == 0); + assert(xkb_state_key_get_utf8(state, KEY_6 + 8, buf, 5) == strlen("HELLO")); + assert(memcmp(buf, "HELL", 5) == 0); + assert(xkb_state_key_get_utf8(state, KEY_6 + 8, buf, 6) == strlen("HELLO")); + assert(memcmp(buf, "HELLO", 6) == 0); + assert(xkb_state_key_get_utf8(state, KEY_6 + 8, buf, 7) == strlen("HELLO")); + assert(memcmp(buf, "HELLO\0X", 7) == 0); + + /* Switch to ru layout */ + xkb_state_update_key(state, KEY_COMPOSE + EVDEV_OFFSET, XKB_KEY_DOWN); + xkb_state_update_key(state, KEY_COMPOSE + EVDEV_OFFSET, XKB_KEY_UP); + assert(xkb_state_key_get_layout(state, KEY_A + 8) == 1); + + /* Non ASCII. */ + TEST_KEY(KEY_ESC, "\x1B", 0x1B); + TEST_KEY(KEY_A, "ф", 0x0444); + TEST_KEY(KEY_Z, "я", 0x044F); + + /* Switch back to us layout */ + xkb_state_update_key(state, KEY_COMPOSE + EVDEV_OFFSET, XKB_KEY_DOWN); + xkb_state_update_key(state, KEY_COMPOSE + EVDEV_OFFSET, XKB_KEY_UP); + assert(xkb_state_key_get_layout(state, KEY_A + 8) == 0); + + xkb_state_update_key(state, KEY_LEFTSHIFT + EVDEV_OFFSET, XKB_KEY_DOWN); + TEST_KEY(KEY_A, "A", 0x41); + TEST_KEY(KEY_ESC, "\x1B", 0x1B); + TEST_KEY(KEY_1, "!", 0x21); + xkb_state_update_key(state, KEY_LEFTSHIFT + EVDEV_OFFSET, XKB_KEY_UP); + + TEST_KEY(KEY_6, "HELLO", 0); + TEST_KEY(KEY_7, "YES THIS IS DOG", 0); + + xkb_state_unref(state); +} + +static void +test_ctrl_string_transformation(struct xkb_keymap *keymap) +{ + char buf[256]; + struct xkb_state *state = xkb_state_new(keymap); + xkb_mod_index_t ctrl; + + assert(state); + + /* See xkb_state_key_get_utf8() for what's this all about. */ + + ctrl = xkb_keymap_mod_get_index(keymap, XKB_MOD_NAME_CTRL); + assert(ctrl != XKB_MOD_INVALID); + + /* First without. */ + TEST_KEY(KEY_A, "a", 0x61); + TEST_KEY(KEY_B, "b", 0x62); + TEST_KEY(KEY_C, "c", 0x63); + TEST_KEY(KEY_ESC, "\x1B", 0x1B); + TEST_KEY(KEY_1, "1", 0x31); + + /* And with. */ + xkb_state_update_key(state, KEY_RIGHTCTRL + EVDEV_OFFSET, XKB_KEY_DOWN); + assert(xkb_state_mod_index_is_active(state, ctrl, XKB_STATE_MODS_EFFECTIVE) > 0); + TEST_KEY(KEY_A, "\x01", 0x01); + TEST_KEY(KEY_B, "\x02", 0x02); + TEST_KEY(KEY_C, "\x03", 0x03); + TEST_KEY(KEY_ESC, "\x1B", 0x1B); + TEST_KEY(KEY_1, "1", 0x31); + xkb_state_update_key(state, KEY_RIGHTCTRL + EVDEV_OFFSET, XKB_KEY_UP); + + /* Switch to ru layout */ + xkb_state_update_key(state, KEY_COMPOSE + EVDEV_OFFSET, XKB_KEY_DOWN); + xkb_state_update_key(state, KEY_COMPOSE + EVDEV_OFFSET, XKB_KEY_UP); + assert(xkb_state_key_get_layout(state, KEY_A + 8) == 1); + + /* Non ASCII. */ + xkb_state_update_key(state, KEY_RIGHTCTRL + EVDEV_OFFSET, XKB_KEY_DOWN); + assert(xkb_state_mod_index_is_active(state, ctrl, XKB_STATE_MODS_EFFECTIVE) > 0); + TEST_KEY(KEY_A, "\x01", 0x01); + TEST_KEY(KEY_B, "\x02", 0x02); + xkb_state_update_key(state, KEY_RIGHTCTRL + EVDEV_OFFSET, XKB_KEY_UP); + + xkb_state_unref(state); +} + +int +main(void) +{ + struct xkb_context *context = test_get_context(0); + struct xkb_keymap *keymap; + + assert(context); + + /* Make sure these are allowed. */ + xkb_context_unref(NULL); + xkb_keymap_unref(NULL); + xkb_state_unref(NULL); + + keymap = test_compile_rules(context, "evdev", "pc104", "us,ru", NULL, "grp:menu_toggle"); + assert(keymap); + + test_update_key(keymap); + test_serialisation(keymap); + test_update_mask_mods(keymap); + test_repeat(keymap); + test_consume(keymap); + test_range(keymap); + test_get_utf8_utf32(keymap); + test_ctrl_string_transformation(keymap); + + xkb_keymap_unref(keymap); + keymap = test_compile_rules(context, "evdev", NULL, "ch", "fr", NULL); + assert(keymap); + + test_caps_keysym_transformation(keymap); + + xkb_keymap_unref(keymap); + xkb_context_unref(context); +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/stringcomp.c b/app/src/main/jni/libxkbcommon/xkbcommon/test/stringcomp.c new file mode 100644 index 0000000..1a1813b --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/stringcomp.c @@ -0,0 +1,105 @@ +/* + * Copyright © 2009 Dan Nicholson + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include +#include +#include + +#include "test.h" + +#define DATA_PATH "keymaps/stringcomp.data" + +int +main(int argc, char *argv[]) +{ + struct xkb_context *ctx = test_get_context(0); + struct xkb_keymap *keymap; + char *original, *dump, *dump2; + + assert(ctx); + + /* Load in a prebuilt keymap, make sure we can compile it from a string, + * then compare it to make sure we get the same result when dumping it + * to a string. */ + original = test_read_file(DATA_PATH); + assert(original); + + keymap = test_compile_string(ctx, original); + assert(keymap); + + dump = xkb_keymap_get_as_string(keymap, XKB_KEYMAP_USE_ORIGINAL_FORMAT); + assert(dump); + + if (!streq(original, dump)) { + fprintf(stderr, + "round-trip test failed: dumped map differs from original\n"); + fprintf(stderr, "path to original file: %s\n", + test_get_path(DATA_PATH)); + fprintf(stderr, "length: dumped %lu, original %lu\n", + (unsigned long) strlen(dump), + (unsigned long) strlen(original)); + fprintf(stderr, "dumped map:\n"); + fprintf(stderr, "%s\n", dump); + fflush(stderr); + assert(0); + } + + free(original); + free(dump); + xkb_keymap_unref(keymap); + + /* Make sure we can't (falsely claim to) compile an empty string. */ + keymap = test_compile_string(ctx, ""); + assert(!keymap); + + /* Make sure we can recompile our output for a normal keymap from rules. */ + keymap = test_compile_rules(ctx, NULL, NULL, + "ru,ca,de,us", ",multix,neo,intl", NULL); + assert(keymap); + dump = xkb_keymap_get_as_string(keymap, XKB_KEYMAP_USE_ORIGINAL_FORMAT); + assert(dump); + xkb_keymap_unref(keymap); + keymap = test_compile_string(ctx, dump); + assert(keymap); + /* Now test that the dump of the dump is equal to the dump! */ + dump2 = xkb_keymap_get_as_string(keymap, XKB_KEYMAP_USE_ORIGINAL_FORMAT); + assert(dump2); + assert(streq(dump, dump2)); + + /* Test response to invalid formats and flags. */ + assert(!xkb_keymap_new_from_string(ctx, dump, 0, 0)); + assert(!xkb_keymap_new_from_string(ctx, dump, -1, 0)); + assert(!xkb_keymap_new_from_string(ctx, dump, XKB_KEYMAP_FORMAT_TEXT_V1+1, 0)); + assert(!xkb_keymap_new_from_string(ctx, dump, XKB_KEYMAP_FORMAT_TEXT_V1, -1)); + assert(!xkb_keymap_new_from_string(ctx, dump, XKB_KEYMAP_FORMAT_TEXT_V1, 1414)); + assert(!xkb_keymap_get_as_string(keymap, 0)); + assert(!xkb_keymap_get_as_string(keymap, 4893)); + + xkb_keymap_unref(keymap); + free(dump); + free(dump2); + + xkb_context_unref(ctx); + + return 0; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/test.h b/app/src/main/jni/libxkbcommon/xkbcommon/test/test.h new file mode 100644 index 0000000..628ec18 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/test.h @@ -0,0 +1,90 @@ +/* + * Copyright © 2012 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Daniel Stone + */ + +#include + +/* Don't use compat names in internal code. */ +#define _XKBCOMMON_COMPAT_H +#include "xkbcommon/xkbcommon.h" +#include "xkbcommon/xkbcommon-compose.h" +#include "utils.h" + +/* Automake test exit code to signify SKIP (à la PASS, FAIL, etc). */ +#define SKIP_TEST 77 + +/* The offset between KEY_* numbering, and keycodes in the XKB evdev + * dataset. */ +#define EVDEV_OFFSET 8 + +enum key_seq_state { + DOWN, + REPEAT, + UP, + BOTH, + NEXT, + FINISH, +}; + +int +test_key_seq(struct xkb_keymap *keymap, ...); + +int +test_key_seq_va(struct xkb_keymap *keymap, va_list args); + +char * +test_get_path(const char *path_rel); + +char * +test_read_file(const char *path_rel); + +enum test_context_flags { + CONTEXT_NO_FLAG = 0, + CONTEXT_ALLOW_ENVIRONMENT_NAMES = (1 << 0), +}; + +struct xkb_context * +test_get_context(enum test_context_flags flags); + +struct xkb_keymap * +test_compile_file(struct xkb_context *context, const char *path_rel); + +struct xkb_keymap * +test_compile_string(struct xkb_context *context, const char *string); + +struct xkb_keymap * +test_compile_buffer(struct xkb_context *context, const char *buf, size_t len); + +struct xkb_keymap * +test_compile_rules(struct xkb_context *context, const char *rules, + const char *model, const char *layout, const char *variant, + const char *options); + +void +test_print_keycode_state(struct xkb_state *state, + struct xkb_compose_state *compose_state, + xkb_keycode_t keycode); + +void +test_print_state_changes(enum xkb_state_component changed); diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/utf8.c b/app/src/main/jni/libxkbcommon/xkbcommon/test/utf8.c new file mode 100644 index 0000000..17c7156 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/utf8.c @@ -0,0 +1,157 @@ +/* + * Copyright © 2014 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include +#include +#include +#include + +#include "utf8.h" + +#define VALID(lit) assert(is_valid_utf8(lit, sizeof(lit)-1)) +#define INVALID(lit) assert(!is_valid_utf8(lit, sizeof(lit)-1)) + +static void +test_is_valid_utf8(void) +{ + /* + * Mostly taken from: + * http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt + */ + + VALID("ascii"); + VALID("\xCE\xBA\xE1\xBD\xB9\xCF\x83\xCE\xBC\xCE\xB5"); + + VALID(""); + VALID("\x00"); + VALID("\x00\x00"); + + VALID("\x50"); + VALID("\xC2\x80"); + VALID("\xE0\xA0\x80"); + VALID("\xF0\x90\x80\x80"); + + /* 5/6-byte continuations aren't allowed (unlike UTF-8-test). */ + INVALID("\xF8\x88\x80\x80\x80"); + INVALID("\xFC\x84\x80\x80\x80\x80"); + + VALID("\x7F"); + VALID("\xDF\xBF"); + VALID("\xEF\xBF\xBF"); + /* VALID("\xF7\xBF\xBF\xBF"); */ + + /* 5/6-byte continuations aren't allowed (unlike UTF-8-test). */ + INVALID("\xFB\xBF\xBF\xBF\xBF"); + INVALID("\xFD\xBFxBF\xBF\xBF"); + + VALID("\xED\x9F\xBF"); + VALID("\xEE\x80\x80"); + VALID("\xEF\xBF\xBD"); + VALID("\xF4\x8F\xBF\xBF"); + /* VALID("\xF4\x90\x80\x80"); */ + + INVALID("\x80"); + INVALID("\xBF"); + INVALID("\x80\xBF"); + INVALID("\x80\xBF\x80"); + INVALID("\x80\xBF\x80\xBF"); + INVALID("\x80\xBF\x80\xBF\x80"); + INVALID("\x80\xBF\x80\xBF\x80\xBF"); + INVALID("\x80\xBF\x80\xBF\x80\xBF\x80"); + INVALID("\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F" + "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F" + "\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF" + "\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF"); + + INVALID("\xC0 \xC1 \xC2 \xC3 \xC4 \xC5 \xC6 \xC7 \xC8 \xC9 \xCA \xCB \xCC " + "\xCD \xCE \xCF " + "\xD0 \xD1 \xD2 \xD3 \xD4 \xD5 \xD6 \xD7 \xD8 \xD9 \xDA \xDB \xDD " + "\xDD \xDE \xDF "); + INVALID("\xF0 \xF1 \xF2 \xF3 \xF4 \xF5 \xF6 \xF7 "); + INVALID("\xF8 \xF9 \xFA \xFB "); + INVALID("\xFC \xFD "); + + INVALID("\xC0"); + INVALID("\xE0\x80"); + INVALID("\xF0\x80\x80"); + INVALID("\xF8\x80\x80\x80"); + INVALID("\xFC\x80\x80\x80\x80"); + INVALID("\xDF"); + INVALID("\xEF\xBF"); + INVALID("\xF7\xBF\xBF"); + INVALID("\xFB\xBF\xBF\xBF"); + INVALID("\xFD\xBF\xBF\xBF\xBF"); + + INVALID("\xC0\xE0\x80\xF0\x80\x80\xF8\x80\x80\x80\xFC\x80\x80\x80\x80" + "\xDF\xEF\xBF\xF7\xBF\xBF\xFB\xBF\xBF\xBF\xFD\xBF\xBF\xBF\xBF"); + + INVALID("\xFE"); + INVALID("\xFF"); + INVALID("\xFE\xFE\xFF\xFF"); + + INVALID("\xC0\xAF"); + INVALID("\xE0\x80\xAF"); + INVALID("\xF0\x80\x80\xAF"); + INVALID("\xF8\x80\x80\x80\xAF"); + INVALID("\xFC\x80\x80\x80\x80\xAF"); + + INVALID("\xC1\xBF"); + INVALID("\xE0\x9F\xBF"); + INVALID("\xF0\x8F\xBF\xBF"); + INVALID("\xF8\x87\xBF\xBF\xBF"); + INVALID("\xFC\x83\xBF\xBF\xBF\xBF"); + + INVALID("\xC0\x80"); + INVALID("\xE0\x80\x80"); + INVALID("\xF0\x80\x80\x80"); + INVALID("\xF8\x80\x80\x80\x80"); + INVALID("\xFC\x80\x80\x80\x80\x80"); + + INVALID("\xED\xA0\x80"); + INVALID("\xED\xAD\xBF"); + INVALID("\xED\xAE\x80"); + INVALID("\xED\xAF\xBF"); + INVALID("\xED\xB0\x80"); + INVALID("\xED\xBE\x80"); + INVALID("\xED\xBF\xBF"); + + INVALID("\xED\xA0\x80\xED\xB0\x80"); + INVALID("\xED\xA0\x80\xED\xBF\xBF"); + INVALID("\xED\xAD\xBF\xED\xB0\x80"); + INVALID("\xED\xAD\xBF\xED\xBF\xBF"); + INVALID("\xED\xAE\x80\xED\xB0\x80"); + INVALID("\xED\xAE\x80\xED\xBF\xBF"); + INVALID("\xED\xAF\xBF\xED\xB0\x80"); + INVALID("\xED\xAF\xBF\xED\xBF\xBF"); + + /* INVALID("\xEF\xBF\xBE"); */ + /* INVALID("\xEF\xBF\xBF"); */ +} + +int +main(void) +{ + test_is_valid_utf8(); + + return 0; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/x11.c b/app/src/main/jni/libxkbcommon/xkbcommon/test/x11.c new file mode 100644 index 0000000..232e136 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/x11.c @@ -0,0 +1,78 @@ +/* + * Copyright © 2013 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "test.h" +#include "xkbcommon/xkbcommon-x11.h" + +int +main(void) +{ + struct xkb_context *ctx = test_get_context(0); + xcb_connection_t *conn; + int ret; + int32_t device_id; + struct xkb_keymap *keymap; + struct xkb_state *state; + char *dump; + + /* + * The next two steps depend on a running X server with XKB support. + * If it fails, it's not necessarily an actual problem with the code. + * So we don't want a FAIL here. + */ + conn = xcb_connect(NULL, NULL); + if (!conn || xcb_connection_has_error(conn)) + return SKIP_TEST; + + ret = xkb_x11_setup_xkb_extension(conn, + XKB_X11_MIN_MAJOR_XKB_VERSION, + XKB_X11_MIN_MINOR_XKB_VERSION, + XKB_X11_SETUP_XKB_EXTENSION_NO_FLAGS, + NULL, NULL, NULL, NULL); + if (!ret) + return SKIP_TEST; + + device_id = xkb_x11_get_core_keyboard_device_id(conn); + assert(device_id != -1); + + keymap = xkb_x11_keymap_new_from_device(ctx, conn, device_id, + XKB_KEYMAP_COMPILE_NO_FLAGS); + assert(keymap); + + state = xkb_x11_state_new_from_device(keymap, conn, device_id); + assert(state); + + dump = xkb_keymap_get_as_string(keymap, XKB_KEYMAP_USE_ORIGINAL_FORMAT); + assert(dump); + fputs(dump, stdout); + + /* TODO: Write some X11-specific tests. */ + + free(dump); + xkb_state_unref(state); + xkb_keymap_unref(keymap); + xcb_disconnect(conn); + xkb_context_unref(ctx); + + return 0; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/x11comp.c b/app/src/main/jni/libxkbcommon/xkbcommon/test/x11comp.c new file mode 100644 index 0000000..bc87a72 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/x11comp.c @@ -0,0 +1,166 @@ +/* + * Copyright © 2014 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "test.h" +#include "xkbcommon/xkbcommon-x11.h" + +int +main(void) +{ + struct xkb_context *ctx = test_get_context(0); + struct xkb_keymap *keymap; + xcb_connection_t *conn; + int32_t device_id; + int pipefds[2]; + int ret, status; + char displayfd[128], display[128]; + char *search_path, *search_path_arg, *xkb_path; + char *original, *dump; + char *envp[] = { NULL }; + char *xvfb_argv[] = { "Xvfb", "-displayfd", displayfd, NULL }; + pid_t xvfb_pid; + char *xkbcomp_argv[] = { "xkbcomp", "-I", NULL /* search_path_arg */, + NULL /* xkb_path */, display, NULL }; + pid_t xkbcomp_pid; + + /* + * What all of this mess does is: + * 1. Launch Xvfb on the next available DISPLAY. Xvfb reports the + * display number to an fd passed with -displayfd once it's + * initialized. We pass a pipe there to read it. + * 2. Make an xcb connection to this display. + * 3. Launch xkbcomp to change the keymap of the new display (doing + * this programmatically is major work [which we may yet do some + * day for xkbcommon-x11] so we use xkbcomp for now). + * 4. Download the keymap back from the display using xkbcommon-x11. + * 5. Compare received keymap to the uploaded keymap. + * 6. Kill the server & clean up. + */ + + ret = pipe(pipefds); + assert(ret == 0); + + ret = snprintf(displayfd, sizeof(displayfd), "%d", pipefds[1]); + assert(ret >= 0 && ret < sizeof(displayfd)); + + ret = posix_spawnp(&xvfb_pid, "Xvfb", NULL, NULL, xvfb_argv, envp); + if (ret != 0) { + ret = SKIP_TEST; + goto err_ctx; + } + + close(pipefds[1]); + + display[0] = ':'; + ret = read(pipefds[0], display + 1, sizeof(display) - 1); + if (ret <= 0 || 1 + ret >= sizeof(display) - 1) { + ret = SKIP_TEST; + goto err_xvfd; + } + if (display[ret] == '\n') + display[ret] = '\0'; + display[1 + ret] = '\0'; + close(pipefds[0]); + + conn = xcb_connect(display, NULL); + if (xcb_connection_has_error(conn)) { + ret = SKIP_TEST; + goto err_xvfd; + } + ret = xkb_x11_setup_xkb_extension(conn, + XKB_X11_MIN_MAJOR_XKB_VERSION, + XKB_X11_MIN_MINOR_XKB_VERSION, + XKB_X11_SETUP_XKB_EXTENSION_NO_FLAGS, + NULL, NULL, NULL, NULL); + if (!ret) { + ret = SKIP_TEST; + goto err_xcb; + } + device_id = xkb_x11_get_core_keyboard_device_id(conn); + assert(device_id != -1); + + xkb_path = test_get_path("keymaps/host.xkb"); + search_path = test_get_path(""); + assert(search_path); + ret = asprintf(&search_path_arg, "-I%s", search_path); + assert(ret >= 0); + xkbcomp_argv[2] = search_path_arg; + xkbcomp_argv[3] = xkb_path; + ret = posix_spawnp(&xkbcomp_pid, "xkbcomp", NULL, NULL, xkbcomp_argv, envp); + free(search_path_arg); + free(search_path); + free(xkb_path); + if (ret != 0) { + ret = SKIP_TEST; + goto err_xcb; + } + ret = waitpid(xkbcomp_pid, &status, 0); + if (ret < 0 || !WIFEXITED(status) || WEXITSTATUS(status) != 0) { + ret = SKIP_TEST; + goto err_xcb; + } + + keymap = xkb_x11_keymap_new_from_device(ctx, conn, device_id, + XKB_KEYMAP_COMPILE_NO_FLAGS); + assert(keymap); + + original = test_read_file("keymaps/host.xkb"); + assert(original); + + dump = xkb_keymap_get_as_string(keymap, XKB_KEYMAP_USE_ORIGINAL_FORMAT); + assert(dump); + + ret = streq(original, dump); + if (!ret) { + fprintf(stderr, + "round-trip test failed: dumped map differs from original\n"); + fprintf(stderr, "length: dumped %lu, original %lu\n", + (unsigned long) strlen(dump), + (unsigned long) strlen(original)); + fprintf(stderr, "dumped map:\n"); + fprintf(stderr, "%s\n", dump); + ret = 1; + goto err_dump; + } + + ret = 0; +err_dump: + free(original); + free(dump); + xkb_keymap_unref(keymap); +err_xcb: + xcb_disconnect(conn); +err_xvfd: + kill(xvfb_pid, SIGTERM); +err_ctx: + xkb_context_unref(ctx); + return ret; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon-uninstalled.pc.in b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon-uninstalled.pc.in new file mode 100644 index 0000000..d4d6a2b --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon-uninstalled.pc.in @@ -0,0 +1,8 @@ +libdir=@abs_top_builddir@/.libs +includedir=@abs_top_srcdir@ + +Name: xkbcommon +Description: XKB API common to servers and clients (uninstalled) +Version: @PACKAGE_VERSION@ +Cflags: -I${includedir} +Libs: -L${libdir} -lxkbcommon diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon-x11-uninstalled.pc.in b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon-x11-uninstalled.pc.in new file mode 100644 index 0000000..d99ca49 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon-x11-uninstalled.pc.in @@ -0,0 +1,10 @@ +libdir=@abs_top_builddir@/.libs +includedir=@abs_top_srcdir@ + +Name: xkbcommon-x11 +Description: XKB API common to servers and clients - X11 support (uninstalled) +Version: @PACKAGE_VERSION@ +Requires: xkbcommon +Requires.private: xcb xcb-xkb +Cflags: -I${includedir} +Libs: -L${libdir} -lxkbcommon-x11 diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon-x11.map b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon-x11.map new file mode 100644 index 0000000..a219288 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon-x11.map @@ -0,0 +1,9 @@ +V_0.5.0 { +global: + xkb_x11_setup_xkb_extension; + xkb_x11_get_core_keyboard_device_id; + xkb_x11_keymap_new_from_device; + xkb_x11_state_new_from_device; +local: + *; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon-x11.pc.in b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon-x11.pc.in new file mode 100644 index 0000000..c4efc43 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon-x11.pc.in @@ -0,0 +1,12 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: xkbcommon-x11 +Description: XKB API common to servers and clients - X11 support +Version: @PACKAGE_VERSION@ +Requires: xkbcommon +Requires.private: xcb xcb-xkb +Cflags: -I${includedir} +Libs: -L${libdir} -lxkbcommon-x11 diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon.map b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon.map new file mode 100644 index 0000000..29fd7ac --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon.map @@ -0,0 +1,87 @@ +V_0.5.0 { +global: + xkb_keysym_get_name; + xkb_keysym_from_name; + xkb_keysym_to_utf8; + xkb_keysym_to_utf32; + xkb_context_new; + xkb_context_ref; + xkb_context_unref; + xkb_context_set_user_data; + xkb_context_get_user_data; + xkb_context_include_path_append; + xkb_context_include_path_append_default; + xkb_context_include_path_reset_defaults; + xkb_context_include_path_clear; + xkb_context_num_include_paths; + xkb_context_include_path_get; + xkb_context_set_log_level; + xkb_context_get_log_level; + xkb_context_set_log_verbosity; + xkb_context_get_log_verbosity; + xkb_context_set_log_fn; + xkb_keymap_new_from_names; + xkb_keymap_new_from_file; + xkb_keymap_new_from_string; + xkb_keymap_new_from_buffer; + xkb_keymap_ref; + xkb_keymap_unref; + xkb_keymap_get_as_string; + xkb_keymap_min_keycode; + xkb_keymap_max_keycode; + xkb_keymap_key_for_each; + xkb_keymap_num_mods; + xkb_keymap_mod_get_name; + xkb_keymap_mod_get_index; + xkb_keymap_num_layouts; + xkb_keymap_layout_get_name; + xkb_keymap_layout_get_index; + xkb_keymap_num_leds; + xkb_keymap_led_get_name; + xkb_keymap_led_get_index; + xkb_keymap_num_layouts_for_key; + xkb_keymap_num_levels_for_key; + xkb_keymap_key_get_syms_by_level; + xkb_keymap_key_repeats; + xkb_state_new; + xkb_state_ref; + xkb_state_unref; + xkb_state_get_keymap; + xkb_state_update_key; + xkb_state_update_mask; + xkb_state_key_get_syms; + xkb_state_key_get_utf8; + xkb_state_key_get_utf32; + xkb_state_key_get_one_sym; + xkb_state_key_get_layout; + xkb_state_key_get_level; + xkb_state_serialize_mods; + xkb_state_serialize_layout; + xkb_state_mod_name_is_active; + xkb_state_mod_names_are_active; + xkb_state_mod_index_is_active; + xkb_state_mod_indices_are_active; + xkb_state_mod_index_is_consumed; + xkb_state_mod_mask_remove_consumed; + xkb_state_key_get_consumed_mods; + xkb_state_layout_name_is_active; + xkb_state_layout_index_is_active; + xkb_state_led_name_is_active; + xkb_state_led_index_is_active; + xkb_compose_table_new_from_locale; + xkb_compose_table_new_from_file; + xkb_compose_table_new_from_buffer; + xkb_compose_table_ref; + xkb_compose_table_unref; + xkb_compose_state_new; + xkb_compose_state_ref; + xkb_compose_state_unref; + xkb_compose_state_get_compose_table; + xkb_compose_state_feed; + xkb_compose_state_reset; + xkb_compose_state_get_status; + xkb_compose_state_get_utf8; + xkb_compose_state_get_one_sym; +local: + *; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon.pc.in b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon.pc.in new file mode 100644 index 0000000..17e1172 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon.pc.in @@ -0,0 +1,10 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: xkbcommon +Description: XKB API common to servers and clients +Version: @PACKAGE_VERSION@ +Cflags: -I${includedir} +Libs: -L${libdir} -lxkbcommon diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon-compat.h b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon-compat.h new file mode 100644 index 0000000..299732f --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon-compat.h @@ -0,0 +1,98 @@ +/* + * Copyright © 2012 Daniel Stone + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Daniel Stone + */ + +#ifndef _XKBCOMMON_COMPAT_H +#define _XKBCOMMON_COMPAT_H + +/** + * Renamed keymap API. + */ +#define xkb_group_index_t xkb_layout_index_t +#define xkb_group_mask_t xkb_layout_mask_t +#define xkb_map_compile_flags xkb_keymap_compile_flags +#define XKB_GROUP_INVALID XKB_LAYOUT_INVALID + +#define XKB_STATE_DEPRESSED \ + (XKB_STATE_MODS_DEPRESSED | XKB_STATE_LAYOUT_DEPRESSED) +#define XKB_STATE_LATCHED \ + (XKB_STATE_MODS_LATCHED | XKB_STATE_LAYOUT_LATCHED) +#define XKB_STATE_LOCKED \ + (XKB_STATE_MODS_LOCKED | XKB_STATE_LAYOUT_LOCKED) +#define XKB_STATE_EFFECTIVE \ + (XKB_STATE_DEPRESSED | XKB_STATE_LATCHED | XKB_STATE_LOCKED | \ + XKB_STATE_MODS_EFFECTIVE | XKB_STATE_LAYOUT_EFFECTIVE) + +#define xkb_map_new_from_names(context, names, flags) \ + xkb_keymap_new_from_names(context, names, flags) +#define xkb_map_new_from_file(context, file, format, flags) \ + xkb_keymap_new_from_file(context, file, format, flags) +#define xkb_map_new_from_string(context, string, format, flags) \ + xkb_keymap_new_from_string(context, string, format, flags) +#define xkb_map_get_as_string(keymap) \ + xkb_keymap_get_as_string(keymap, XKB_KEYMAP_FORMAT_TEXT_V1) +#define xkb_map_ref(keymap) xkb_keymap_ref(keymap) +#define xkb_map_unref(keymap) xkb_keymap_unref(keymap) + +#define xkb_map_num_mods(keymap) xkb_keymap_num_mods(keymap) +#define xkb_map_mod_get_name(keymap, idx) xkb_keymap_mod_get_name(keymap, idx) +#define xkb_map_mod_get_index(keymap, str) xkb_keymap_mod_get_index(keymap, str) +#define xkb_key_mod_index_is_consumed(state, key, mod) \ + xkb_state_mod_index_is_consumed(state, key, mod) +#define xkb_key_mod_mask_remove_consumed(state, key, modmask) \ + xkb_state_mod_mask_remove_consumed(state, key, modmask) + +#define xkb_map_num_groups(keymap) xkb_keymap_num_layouts(keymap) +#define xkb_key_num_groups(keymap, key) \ + xkb_keymap_num_layouts_for_key(keymap, key) +#define xkb_map_group_get_name(keymap, idx) \ + xkb_keymap_layout_get_name(keymap, idx) +#define xkb_map_group_get_index(keymap, str) \ + xkb_keymap_layout_get_index(keymap, str) + +#define xkb_map_num_leds(keymap) xkb_keymap_num_leds(keymap) +#define xkb_map_led_get_name(keymap, idx) xkb_keymap_led_get_name(keymap, idx) +#define xkb_map_led_get_index(keymap, str) \ + xkb_keymap_led_get_index(keymap, str) + +#define xkb_key_repeats(keymap, key) xkb_keymap_key_repeats(keymap, key) + +#define xkb_key_get_syms(state, key, syms_out) \ + xkb_state_key_get_syms(state, key, syms_out) + +#define xkb_state_group_name_is_active(state, name, type) \ + xkb_state_layout_name_is_active(state, name, type) +#define xkb_state_group_index_is_active(state, idx, type) \ + xkb_state_layout_index_is_active(state, idx, type) + +#define xkb_state_serialize_group(state, component) \ + xkb_state_serialize_layout(state, component) + +#define xkb_state_get_map(state) xkb_state_get_keymap(state) + +/* Not needed anymore, since there's NO_FLAGS. */ +#define XKB_MAP_COMPILE_PLACEHOLDER XKB_KEYMAP_COMPILE_NO_FLAGS +#define XKB_MAP_COMPILE_NO_FLAGS XKB_KEYMAP_COMPILE_NO_FLAGS + +#endif diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon-compose.h b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon-compose.h new file mode 100644 index 0000000..5755aec --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon-compose.h @@ -0,0 +1,483 @@ +/* + * Copyright © 2013 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef _XKBCOMMON_COMPOSE_H +#define _XKBCOMMON_COMPOSE_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @file + * libxkbcommon Compose API - support for Compose and dead-keys. + */ + +/** + * @defgroup compose Compose and dead-keys support + * Support for Compose and dead-keys. + * @since 0.5.0 + * + * @{ + */ + +/** + * @page compose-overview Overview + * @parblock + * + * Compose and dead-keys are a common feature of many keyboard input + * systems. They extend the range of the keysysm that can be produced + * directly from a keyboard by using a sequence of key strokes, instead + * of just one. + * + * Here are some example sequences, in the libX11 Compose file format: + * + * : "á" aacute # LATIN SMALL LETTER A WITH ACUTE + * : "@" at # COMMERCIAL AT + * + * When the user presses a key which produces the \ keysym, + * nothing initially happens (thus the key is dubbed a "dead-key"). But + * when the user enters , "á" is "composed", in place of "a". If + * instead the user had entered a keysym which does not follow + * \ in any compose sequence, the sequence is said to be + * "cancelled". + * + * Compose files define many such sequences. For a description of the + * common file format for Compose files, see the Compose(5) man page. + * + * A successfuly-composed sequence has two results: a keysym and a UTF-8 + * string. At least one of the two is defined for each sequence. If only + * a keysym is given, the keysym's string representation is used for the + * result string (using xkb_keysym_to_utf8()). + * + * This library provides low-level support for Compose file parsing and + * processing. Higher-level APIs (such as libX11's Xutf8LookupString(3)) + * may be built upon it, or it can be used directly. + * + * @endparblock + */ + +/** + * @page compose-conflicting Conflicting Sequences + * @parblock + * + * To avoid ambiguity, a sequence is not allowed to be a prefix of another. + * In such a case, the conflict is resolved thus: + * + * 1. A longer sequence overrides a shorter one. + * 2. An equal sequence overrides an existing one. + * 3. A shorter sequence does not override a longer one. + * + * Sequences of length 1 are allowed, although they are not common. + * + * @endparblock + */ + +/** + * @page compose-cancellation Cancellation Behavior + * @parblock + * + * What should happen when a sequence is cancelled? For example, consider + * there are only the above sequences, and the input kesysms are + * \ \. There are a few approaches: + * + * 1. Swallow the cancelling keysym; that is, no keysym is produced. + * This is the approach taken by libX11. + * 2. Let the cancelling keysym through; that is, \ is produced. + * 3. Replay the entire sequence; that is, \ \ is produced. + * This is the approach taken by Microsoft Windows (approximately; + * instead of \, the underlying key is used. This is + * difficult to simulate with XKB keymaps). + * + * You can program whichever approach best fits users' expectations. + * + * @endparblock + */ + +/** + * @struct xkb_compose_table + * Opaque Compose table object. + * + * The compose table holds the definitions of the Compose sequences, as + * gathered from Compose files. It is immutable. + */ +struct xkb_compose_table; + +/** + * @struct xkb_compose_state + * Opaque Compose state object. + * + * The compose state maintains state for compose sequence matching, such + * as which possible sequences are being matched, and the position within + * these sequences. It acts as a simple state machine wherein keysyms are + * the input, and composed keysyms and strings are the output. + * + * The compose state is usually associated with a keyboard device. + */ +struct xkb_compose_state; + +/** Flags affecting Compose file compilation. */ +enum xkb_compose_compile_flags { + /** Do not apply any flags. */ + XKB_COMPOSE_COMPILE_NO_FLAGS = 0 +}; + +/** The recognized Compose file formats. */ +enum xkb_compose_format { + /** The classic libX11 Compose text format, described in Compose(5). */ + XKB_COMPOSE_FORMAT_TEXT_V1 = 1 +}; + +/** + * @page compose-locale Compose Locale + * @parblock + * + * Compose files are locale dependent: + * - Compose files are written for a locale, and the locale is used when + * searching for the appropriate file to use. + * - Compose files may reference the locale internally, with directives + * such as %L. + * As such, functions like xkb_compose_table_new_from_locale() require + * a @p locale parameter. This will usually be the current locale (see + * locale(7) for more details). You may also want to allow the user to + * explicitly configure it, so he can use the Compose file of a given + * locale, but not use that locale for other things. + * + * You may query the current locale as follows: + * @code + * const char *locale; + * locale = setlocale(LC_CTYPE, NULL); + * @endcode + * + * This will only give useful results if the program had previously set + * the current locale using setlocale(3), with LC_CTYPE or LC_ALL and a + * non-NULL argument. + * + * If you prefer not to use the locale system of the C runtime library, + * you may nevertheless obtain the user's locale directly using + * environment variables, as described in locale(7). For example, + * @code + * locale = getenv("LC_ALL"); + * if (!locale) + * locale = getenv("LC_CTYPE"); + * if (!locale) + * locale = getenv("LANG"); + * if (!locale) + * locale = "C"; + * @endcode + * + * Note that some locales supported by the C standard library may not + * have a Compose file assigned. + * + * @endparblock + */ + +/** + * Create a compose table for a given locale. + * + * The locale is used for searching the file-system for an appropriate + * Compose file. The search order is described in Compose(5). It is + * affected by the following environment variables: + * XCOMPOSEFILE, HOME, XLOCALEDIR. + * + * @param context + * The library context in which to create the compose table. + * @param locale + * The current locale. See @ref compose-locale. + * @param flags + * Optional flags for the compose table, or 0. + * + * @returns A compose table for the given locale, or NULL if the + * compilation failed or a Compose file was not found. + * + * @memberof xkb_compose_table + */ +struct xkb_compose_table * +xkb_compose_table_new_from_locale(struct xkb_context *context, + const char *locale, + enum xkb_compose_compile_flags flags); + +/** + * Create a new compose table from a Compose file. + * + * @param context + * The library context in which to create the compose table. + * @param file + * The Compose file to compile. + * @param locale + * The current locale. See @ref compose-locale. + * @param format + * The text format of the Compose file to compile. + * @param flags + * Optional flags for the compose table, or 0. + * + * @returns A compose table compiled from the given file, or NULL if + * the compilation failed. + * + * @memberof xkb_compose_table + */ +struct xkb_compose_table * +xkb_compose_table_new_from_file(struct xkb_context *context, + FILE *file, + const char *locale, + enum xkb_compose_format format, + enum xkb_compose_compile_flags flags); + +/** + * Create a new compose table from a memory buffer. + * + * This is just like xkb_compose_table_new_from_file(), but instead of + * a file, gets the table as one enormous string. + * + * @see xkb_compose_table_new_from_file() + * @memberof xkb_compose_table + */ +struct xkb_compose_table * +xkb_compose_table_new_from_buffer(struct xkb_context *context, + const char *buffer, size_t length, + const char *locale, + enum xkb_compose_format format, + enum xkb_compose_compile_flags flags); + +/** + * Take a new reference on a compose table. + * + * @returns The passed in object. + * + * @memberof xkb_compose_table + */ +struct xkb_compose_table * +xkb_compose_table_ref(struct xkb_compose_table *table); + +/** + * Release a reference on a compose table, and possibly free it. + * + * @param table The object. If it is NULL, this function does nothing. + * + * @memberof xkb_compose_table + */ +void +xkb_compose_table_unref(struct xkb_compose_table *table); + +/** Flags for compose state creation. */ +enum xkb_compose_state_flags { + /** Do not apply any flags. */ + XKB_COMPOSE_STATE_NO_FLAGS = 0 +}; + +/** + * Create a new compose state object. + * + * @param table + * The compose table the state will use. + * @param flags + * Optional flags for the compose state, or 0. + * + * @returns A new compose state, or NULL on failure. + * + * @memberof xkb_compose_state + */ +struct xkb_compose_state * +xkb_compose_state_new(struct xkb_compose_table *table, + enum xkb_compose_state_flags flags); + +/** + * Take a new reference on a compose state object. + * + * @returns The passed in object. + * + * @memberof xkb_compose_state + */ +struct xkb_compose_state * +xkb_compose_state_ref(struct xkb_compose_state *state); + +/** + * Release a reference on a compose state object, and possibly free it. + * + * @param state The object. If NULL, do nothing. + * + * @memberof xkb_compose_state + */ +void +xkb_compose_state_unref(struct xkb_compose_state *state); + +/** + * Get the compose table which a compose state object is using. + * + * @returns The compose table which was passed to xkb_compose_state_new() + * when creating this state object. + * + * This function does not take a new reference on the compose table; you + * must explicitly reference it yourself if you plan to use it beyond the + * lifetime of the state. + * + * @memberof xkb_compose_state + */ +struct xkb_compose_table * +xkb_compose_state_get_compose_table(struct xkb_compose_state *state); + +/** Status of the Compose sequence state machine. */ +enum xkb_compose_status { + /** The initial state; no sequence has started yet. */ + XKB_COMPOSE_NOTHING, + /** In the middle of a sequence. */ + XKB_COMPOSE_COMPOSING, + /** A complete sequence has been matched. */ + XKB_COMPOSE_COMPOSED, + /** The last sequence was cancelled due to an unmatched keysym. */ + XKB_COMPOSE_CANCELLED +}; + +/** The effect of a keysym fed to xkb_compose_state_feed(). */ +enum xkb_compose_feed_result { + /** The keysym had no effect - it did not affect the status. */ + XKB_COMPOSE_FEED_IGNORED, + /** The keysym started, advanced or cancelled a sequence. */ + XKB_COMPOSE_FEED_ACCEPTED +}; + +/** + * Feed one keysym to the Compose sequence state machine. + * + * This function can advance into a compose sequence, cancel a sequence, + * start a new sequence, or do nothing in particular . The resulting + * status may be observed with xkb_compose_state_get_status(). + * + * Some keysyms, such as keysysm for modifier keys, are ignored - they + * have no effect on the status or otherwise. + * + * The following is a description of the possible status transitions, in + * the format CURRENT STATUS => NEXT STATUS, given a non-ignored input + * keysym @p keysym: + * + @verbatim + NOTHING or CANCELLED or COMPOSED => + NOTHING if keysym does not start a sequence. + COMPOSING if keysym starts a sequence. + COMPOSED if keysym starts and terminates a single-keysym sequence. + + COMPOSING => + COMPOSING if keysym advances any of the currently possible + sequences but does not terminate any of them. + COMPOSED if keysym terminates one of the currently possible + sequences. + CANCELLED if keysym does not advance any of the currently + possible sequences. + @endverbatim + * + * The current Compose formats do not support multiple-keysyms. + * Therefore, if you are using a function such as xkb_state_key_get_syms() + * and it returns more than one keysym, consider feeding + * @p XKB_KEY_NoSymbol instead. + * + * @param state + * The compose state object. + * @param keysym + * A keysym, usually obtained after a key-press event, with a + * function such as xkb_state_key_get_one_sym(). + * + * @returns Whether the keysym was ignored. This is useful, for example, + * if you want to keep a record of the sequence matched thus far. + * + * @memberof xkb_compose_state + */ +enum xkb_compose_feed_result +xkb_compose_state_feed(struct xkb_compose_state *state, + xkb_keysym_t keysym); + +/** + * Reset the Compose sequence state machine. + * + * The status is set to XKB_COMPOSE_NOTHING, and the current sequence + * is discarded. + * + * @memberof xkb_compose_state + */ +void +xkb_compose_state_reset(struct xkb_compose_state *state); + +/** + * Get the current status of the compose state machine. + * + * @see xkb_compose_status + * @memberof xkb_compose_state + **/ +enum xkb_compose_status +xkb_compose_state_get_status(struct xkb_compose_state *state); + +/** + * Get the result Unicode/UTF-8 string for a composed sequence. + * + * See @ref compose-overview for more details. This function is only + * useful when the status is XKB_COMPOSE_COMPOSED. + * + * @param[in] state + * The compose state. + * @param[out] buffer + * A buffer to write the string into. + * @param[in] size + * Size of the buffer. + * + * @warning If the buffer passed is too small, the string is truncated + * (though still NUL-terminated). + * + * @returns + * The number of bytes required for the string, excluding the NUL byte. + * If the sequence is not complete, or does not have a viable result + * string, returns 0, and sets @p buffer to the empty string (if + * possible). + * @returns + * You may check if truncation has occurred by comparing the return value + * with the size of @p buffer, similarly to the snprintf(3) function. + * You may safely pass NULL and 0 to @p buffer and @p size to find the + * required size (without the NUL-byte). + * + * @memberof xkb_compose_state + **/ +int +xkb_compose_state_get_utf8(struct xkb_compose_state *state, + char *buffer, size_t size); + +/** + * Get the result keysym for a composed sequence. + * + * See @ref compose-overview for more details. This function is only + * useful when the status is XKB_COMPOSE_COMPOSED. + * + * @returns The result keysym. If the sequence is not complete, or does + * not specify a result keysym, returns XKB_KEY_NoSymbol. + * + * @memberof xkb_compose_state + **/ +xkb_keysym_t +xkb_compose_state_get_one_sym(struct xkb_compose_state *state); + +/** @} */ + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* _XKBCOMMON_COMPOSE_H */ diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon-keysyms.h b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon-keysyms.h new file mode 100644 index 0000000..69c582e --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon-keysyms.h @@ -0,0 +1,3012 @@ +#ifndef _XKBCOMMON_KEYSYMS_H +#define _XKBCOMMON_KEYSYMS_H + +/* This file is autogenerated from Makefile.am; please do not commit directly. */ + +#define XKB_KEY_NoSymbol 0x000000 /* Special KeySym */ + +/*********************************************************** +Copyright 1987, 1994, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall +not be used in advertising or otherwise to promote the sale, use or +other dealings in this Software without prior written authorization +from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ + +/* + * The "X11 Window System Protocol" standard defines in Appendix A the + * keysym codes. These 29-bit integer values identify characters or + * functions associated with each key (e.g., via the visible + * engraving) of a keyboard layout. This file assigns mnemonic macro + * names for these keysyms. + * + * This file is also compiled (by src/util/makekeys.c in libX11) into + * hash tables that can be accessed with X11 library functions such as + * XStringToKeysym() and XKeysymToString(). + * + * Where a keysym corresponds one-to-one to an ISO 10646 / Unicode + * character, this is noted in a comment that provides both the U+xxxx + * Unicode position, as well as the official Unicode name of the + * character. + * + * Where the correspondence is either not one-to-one or semantically + * unclear, the Unicode position and name are enclosed in + * parentheses. Such legacy keysyms should be considered deprecated + * and are not recommended for use in future keyboard mappings. + * + * For any future extension of the keysyms with characters already + * found in ISO 10646 / Unicode, the following algorithm shall be + * used. The new keysym code position will simply be the character's + * Unicode number plus 0x01000000. The keysym values in the range + * 0x01000100 to 0x0110ffff are reserved to represent Unicode + * characters in the range U+0100 to U+10FFFF. + * + * While most newer Unicode-based X11 clients do already accept + * Unicode-mapped keysyms in the range 0x01000100 to 0x0110ffff, it + * will remain necessary for clients -- in the interest of + * compatibility with existing servers -- to also understand the + * existing legacy keysym values in the range 0x0100 to 0x20ff. + * + * Where several mnemonic names are defined for the same keysym in this + * file, all but the first one listed should be considered deprecated. + * + * Mnemonic names for keysyms are defined in this file with lines + * that match one of these Perl regular expressions: + * + * /^\#define XKB_KEY_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*\/\* U+([0-9A-F]{4,6}) (.*) \*\/\s*$/ + * /^\#define XKB_KEY_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*\/\*\(U+([0-9A-F]{4,6}) (.*)\)\*\/\s*$/ + * /^\#define XKB_KEY_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*(\/\*\s*(.*)\s*\*\/)?\s*$/ + * + * Before adding new keysyms, please do consider the following: In + * addition to the keysym names defined in this file, the + * XStringToKeysym() and XKeysymToString() functions will also handle + * any keysym string of the form "U0020" to "U007E" and "U00A0" to + * "U10FFFF" for all possible Unicode characters. In other words, + * every possible Unicode character has already a keysym string + * defined algorithmically, even if it is not listed here. Therefore, + * defining an additional keysym macro is only necessary where a + * non-hexadecimal mnemonic name is needed, or where the new keysym + * does not represent any existing Unicode character. + * + * When adding new keysyms to this file, do not forget to also update the + * following as needed: + * + * - the mappings in src/KeyBind.c in the repo + * git://anongit.freedesktop.org/xorg/lib/libX11.git + * + * - the protocol specification in specs/keysyms.xml + * in the repo git://anongit.freedesktop.org/xorg/proto/x11proto.git + * + */ + +#define XKB_KEY_VoidSymbol 0xffffff /* Void symbol */ + +/* + * TTY function keys, cleverly chosen to map to ASCII, for convenience of + * programming, but could have been arbitrary (at the cost of lookup + * tables in client code). + */ + +#define XKB_KEY_BackSpace 0xff08 /* Back space, back char */ +#define XKB_KEY_Tab 0xff09 +#define XKB_KEY_Linefeed 0xff0a /* Linefeed, LF */ +#define XKB_KEY_Clear 0xff0b +#define XKB_KEY_Return 0xff0d /* Return, enter */ +#define XKB_KEY_Pause 0xff13 /* Pause, hold */ +#define XKB_KEY_Scroll_Lock 0xff14 +#define XKB_KEY_Sys_Req 0xff15 +#define XKB_KEY_Escape 0xff1b +#define XKB_KEY_Delete 0xffff /* Delete, rubout */ + + + +/* International & multi-key character composition */ + +#define XKB_KEY_Multi_key 0xff20 /* Multi-key character compose */ +#define XKB_KEY_Codeinput 0xff37 +#define XKB_KEY_SingleCandidate 0xff3c +#define XKB_KEY_MultipleCandidate 0xff3d +#define XKB_KEY_PreviousCandidate 0xff3e + +/* Japanese keyboard support */ + +#define XKB_KEY_Kanji 0xff21 /* Kanji, Kanji convert */ +#define XKB_KEY_Muhenkan 0xff22 /* Cancel Conversion */ +#define XKB_KEY_Henkan_Mode 0xff23 /* Start/Stop Conversion */ +#define XKB_KEY_Henkan 0xff23 /* Alias for Henkan_Mode */ +#define XKB_KEY_Romaji 0xff24 /* to Romaji */ +#define XKB_KEY_Hiragana 0xff25 /* to Hiragana */ +#define XKB_KEY_Katakana 0xff26 /* to Katakana */ +#define XKB_KEY_Hiragana_Katakana 0xff27 /* Hiragana/Katakana toggle */ +#define XKB_KEY_Zenkaku 0xff28 /* to Zenkaku */ +#define XKB_KEY_Hankaku 0xff29 /* to Hankaku */ +#define XKB_KEY_Zenkaku_Hankaku 0xff2a /* Zenkaku/Hankaku toggle */ +#define XKB_KEY_Touroku 0xff2b /* Add to Dictionary */ +#define XKB_KEY_Massyo 0xff2c /* Delete from Dictionary */ +#define XKB_KEY_Kana_Lock 0xff2d /* Kana Lock */ +#define XKB_KEY_Kana_Shift 0xff2e /* Kana Shift */ +#define XKB_KEY_Eisu_Shift 0xff2f /* Alphanumeric Shift */ +#define XKB_KEY_Eisu_toggle 0xff30 /* Alphanumeric toggle */ +#define XKB_KEY_Kanji_Bangou 0xff37 /* Codeinput */ +#define XKB_KEY_Zen_Koho 0xff3d /* Multiple/All Candidate(s) */ +#define XKB_KEY_Mae_Koho 0xff3e /* Previous Candidate */ + +/* 0xff31 thru 0xff3f are under XK_KOREAN */ + +/* Cursor control & motion */ + +#define XKB_KEY_Home 0xff50 +#define XKB_KEY_Left 0xff51 /* Move left, left arrow */ +#define XKB_KEY_Up 0xff52 /* Move up, up arrow */ +#define XKB_KEY_Right 0xff53 /* Move right, right arrow */ +#define XKB_KEY_Down 0xff54 /* Move down, down arrow */ +#define XKB_KEY_Prior 0xff55 /* Prior, previous */ +#define XKB_KEY_Page_Up 0xff55 +#define XKB_KEY_Next 0xff56 /* Next */ +#define XKB_KEY_Page_Down 0xff56 +#define XKB_KEY_End 0xff57 /* EOL */ +#define XKB_KEY_Begin 0xff58 /* BOL */ + + +/* Misc functions */ + +#define XKB_KEY_Select 0xff60 /* Select, mark */ +#define XKB_KEY_Print 0xff61 +#define XKB_KEY_Execute 0xff62 /* Execute, run, do */ +#define XKB_KEY_Insert 0xff63 /* Insert, insert here */ +#define XKB_KEY_Undo 0xff65 +#define XKB_KEY_Redo 0xff66 /* Redo, again */ +#define XKB_KEY_Menu 0xff67 +#define XKB_KEY_Find 0xff68 /* Find, search */ +#define XKB_KEY_Cancel 0xff69 /* Cancel, stop, abort, exit */ +#define XKB_KEY_Help 0xff6a /* Help */ +#define XKB_KEY_Break 0xff6b +#define XKB_KEY_Mode_switch 0xff7e /* Character set switch */ +#define XKB_KEY_script_switch 0xff7e /* Alias for mode_switch */ +#define XKB_KEY_Num_Lock 0xff7f + +/* Keypad functions, keypad numbers cleverly chosen to map to ASCII */ + +#define XKB_KEY_KP_Space 0xff80 /* Space */ +#define XKB_KEY_KP_Tab 0xff89 +#define XKB_KEY_KP_Enter 0xff8d /* Enter */ +#define XKB_KEY_KP_F1 0xff91 /* PF1, KP_A, ... */ +#define XKB_KEY_KP_F2 0xff92 +#define XKB_KEY_KP_F3 0xff93 +#define XKB_KEY_KP_F4 0xff94 +#define XKB_KEY_KP_Home 0xff95 +#define XKB_KEY_KP_Left 0xff96 +#define XKB_KEY_KP_Up 0xff97 +#define XKB_KEY_KP_Right 0xff98 +#define XKB_KEY_KP_Down 0xff99 +#define XKB_KEY_KP_Prior 0xff9a +#define XKB_KEY_KP_Page_Up 0xff9a +#define XKB_KEY_KP_Next 0xff9b +#define XKB_KEY_KP_Page_Down 0xff9b +#define XKB_KEY_KP_End 0xff9c +#define XKB_KEY_KP_Begin 0xff9d +#define XKB_KEY_KP_Insert 0xff9e +#define XKB_KEY_KP_Delete 0xff9f +#define XKB_KEY_KP_Equal 0xffbd /* Equals */ +#define XKB_KEY_KP_Multiply 0xffaa +#define XKB_KEY_KP_Add 0xffab +#define XKB_KEY_KP_Separator 0xffac /* Separator, often comma */ +#define XKB_KEY_KP_Subtract 0xffad +#define XKB_KEY_KP_Decimal 0xffae +#define XKB_KEY_KP_Divide 0xffaf + +#define XKB_KEY_KP_0 0xffb0 +#define XKB_KEY_KP_1 0xffb1 +#define XKB_KEY_KP_2 0xffb2 +#define XKB_KEY_KP_3 0xffb3 +#define XKB_KEY_KP_4 0xffb4 +#define XKB_KEY_KP_5 0xffb5 +#define XKB_KEY_KP_6 0xffb6 +#define XKB_KEY_KP_7 0xffb7 +#define XKB_KEY_KP_8 0xffb8 +#define XKB_KEY_KP_9 0xffb9 + + + +/* + * Auxiliary functions; note the duplicate definitions for left and right + * function keys; Sun keyboards and a few other manufacturers have such + * function key groups on the left and/or right sides of the keyboard. + * We've not found a keyboard with more than 35 function keys total. + */ + +#define XKB_KEY_F1 0xffbe +#define XKB_KEY_F2 0xffbf +#define XKB_KEY_F3 0xffc0 +#define XKB_KEY_F4 0xffc1 +#define XKB_KEY_F5 0xffc2 +#define XKB_KEY_F6 0xffc3 +#define XKB_KEY_F7 0xffc4 +#define XKB_KEY_F8 0xffc5 +#define XKB_KEY_F9 0xffc6 +#define XKB_KEY_F10 0xffc7 +#define XKB_KEY_F11 0xffc8 +#define XKB_KEY_L1 0xffc8 +#define XKB_KEY_F12 0xffc9 +#define XKB_KEY_L2 0xffc9 +#define XKB_KEY_F13 0xffca +#define XKB_KEY_L3 0xffca +#define XKB_KEY_F14 0xffcb +#define XKB_KEY_L4 0xffcb +#define XKB_KEY_F15 0xffcc +#define XKB_KEY_L5 0xffcc +#define XKB_KEY_F16 0xffcd +#define XKB_KEY_L6 0xffcd +#define XKB_KEY_F17 0xffce +#define XKB_KEY_L7 0xffce +#define XKB_KEY_F18 0xffcf +#define XKB_KEY_L8 0xffcf +#define XKB_KEY_F19 0xffd0 +#define XKB_KEY_L9 0xffd0 +#define XKB_KEY_F20 0xffd1 +#define XKB_KEY_L10 0xffd1 +#define XKB_KEY_F21 0xffd2 +#define XKB_KEY_R1 0xffd2 +#define XKB_KEY_F22 0xffd3 +#define XKB_KEY_R2 0xffd3 +#define XKB_KEY_F23 0xffd4 +#define XKB_KEY_R3 0xffd4 +#define XKB_KEY_F24 0xffd5 +#define XKB_KEY_R4 0xffd5 +#define XKB_KEY_F25 0xffd6 +#define XKB_KEY_R5 0xffd6 +#define XKB_KEY_F26 0xffd7 +#define XKB_KEY_R6 0xffd7 +#define XKB_KEY_F27 0xffd8 +#define XKB_KEY_R7 0xffd8 +#define XKB_KEY_F28 0xffd9 +#define XKB_KEY_R8 0xffd9 +#define XKB_KEY_F29 0xffda +#define XKB_KEY_R9 0xffda +#define XKB_KEY_F30 0xffdb +#define XKB_KEY_R10 0xffdb +#define XKB_KEY_F31 0xffdc +#define XKB_KEY_R11 0xffdc +#define XKB_KEY_F32 0xffdd +#define XKB_KEY_R12 0xffdd +#define XKB_KEY_F33 0xffde +#define XKB_KEY_R13 0xffde +#define XKB_KEY_F34 0xffdf +#define XKB_KEY_R14 0xffdf +#define XKB_KEY_F35 0xffe0 +#define XKB_KEY_R15 0xffe0 + +/* Modifiers */ + +#define XKB_KEY_Shift_L 0xffe1 /* Left shift */ +#define XKB_KEY_Shift_R 0xffe2 /* Right shift */ +#define XKB_KEY_Control_L 0xffe3 /* Left control */ +#define XKB_KEY_Control_R 0xffe4 /* Right control */ +#define XKB_KEY_Caps_Lock 0xffe5 /* Caps lock */ +#define XKB_KEY_Shift_Lock 0xffe6 /* Shift lock */ + +#define XKB_KEY_Meta_L 0xffe7 /* Left meta */ +#define XKB_KEY_Meta_R 0xffe8 /* Right meta */ +#define XKB_KEY_Alt_L 0xffe9 /* Left alt */ +#define XKB_KEY_Alt_R 0xffea /* Right alt */ +#define XKB_KEY_Super_L 0xffeb /* Left super */ +#define XKB_KEY_Super_R 0xffec /* Right super */ +#define XKB_KEY_Hyper_L 0xffed /* Left hyper */ +#define XKB_KEY_Hyper_R 0xffee /* Right hyper */ + +/* + * Keyboard (XKB) Extension function and modifier keys + * (from Appendix C of "The X Keyboard Extension: Protocol Specification") + * Byte 3 = 0xfe + */ + +#define XKB_KEY_ISO_Lock 0xfe01 +#define XKB_KEY_ISO_Level2_Latch 0xfe02 +#define XKB_KEY_ISO_Level3_Shift 0xfe03 +#define XKB_KEY_ISO_Level3_Latch 0xfe04 +#define XKB_KEY_ISO_Level3_Lock 0xfe05 +#define XKB_KEY_ISO_Level5_Shift 0xfe11 +#define XKB_KEY_ISO_Level5_Latch 0xfe12 +#define XKB_KEY_ISO_Level5_Lock 0xfe13 +#define XKB_KEY_ISO_Group_Shift 0xff7e /* Alias for mode_switch */ +#define XKB_KEY_ISO_Group_Latch 0xfe06 +#define XKB_KEY_ISO_Group_Lock 0xfe07 +#define XKB_KEY_ISO_Next_Group 0xfe08 +#define XKB_KEY_ISO_Next_Group_Lock 0xfe09 +#define XKB_KEY_ISO_Prev_Group 0xfe0a +#define XKB_KEY_ISO_Prev_Group_Lock 0xfe0b +#define XKB_KEY_ISO_First_Group 0xfe0c +#define XKB_KEY_ISO_First_Group_Lock 0xfe0d +#define XKB_KEY_ISO_Last_Group 0xfe0e +#define XKB_KEY_ISO_Last_Group_Lock 0xfe0f + +#define XKB_KEY_ISO_Left_Tab 0xfe20 +#define XKB_KEY_ISO_Move_Line_Up 0xfe21 +#define XKB_KEY_ISO_Move_Line_Down 0xfe22 +#define XKB_KEY_ISO_Partial_Line_Up 0xfe23 +#define XKB_KEY_ISO_Partial_Line_Down 0xfe24 +#define XKB_KEY_ISO_Partial_Space_Left 0xfe25 +#define XKB_KEY_ISO_Partial_Space_Right 0xfe26 +#define XKB_KEY_ISO_Set_Margin_Left 0xfe27 +#define XKB_KEY_ISO_Set_Margin_Right 0xfe28 +#define XKB_KEY_ISO_Release_Margin_Left 0xfe29 +#define XKB_KEY_ISO_Release_Margin_Right 0xfe2a +#define XKB_KEY_ISO_Release_Both_Margins 0xfe2b +#define XKB_KEY_ISO_Fast_Cursor_Left 0xfe2c +#define XKB_KEY_ISO_Fast_Cursor_Right 0xfe2d +#define XKB_KEY_ISO_Fast_Cursor_Up 0xfe2e +#define XKB_KEY_ISO_Fast_Cursor_Down 0xfe2f +#define XKB_KEY_ISO_Continuous_Underline 0xfe30 +#define XKB_KEY_ISO_Discontinuous_Underline 0xfe31 +#define XKB_KEY_ISO_Emphasize 0xfe32 +#define XKB_KEY_ISO_Center_Object 0xfe33 +#define XKB_KEY_ISO_Enter 0xfe34 + +#define XKB_KEY_dead_grave 0xfe50 +#define XKB_KEY_dead_acute 0xfe51 +#define XKB_KEY_dead_circumflex 0xfe52 +#define XKB_KEY_dead_tilde 0xfe53 +#define XKB_KEY_dead_perispomeni 0xfe53 /* alias for dead_tilde */ +#define XKB_KEY_dead_macron 0xfe54 +#define XKB_KEY_dead_breve 0xfe55 +#define XKB_KEY_dead_abovedot 0xfe56 +#define XKB_KEY_dead_diaeresis 0xfe57 +#define XKB_KEY_dead_abovering 0xfe58 +#define XKB_KEY_dead_doubleacute 0xfe59 +#define XKB_KEY_dead_caron 0xfe5a +#define XKB_KEY_dead_cedilla 0xfe5b +#define XKB_KEY_dead_ogonek 0xfe5c +#define XKB_KEY_dead_iota 0xfe5d +#define XKB_KEY_dead_voiced_sound 0xfe5e +#define XKB_KEY_dead_semivoiced_sound 0xfe5f +#define XKB_KEY_dead_belowdot 0xfe60 +#define XKB_KEY_dead_hook 0xfe61 +#define XKB_KEY_dead_horn 0xfe62 +#define XKB_KEY_dead_stroke 0xfe63 +#define XKB_KEY_dead_abovecomma 0xfe64 +#define XKB_KEY_dead_psili 0xfe64 /* alias for dead_abovecomma */ +#define XKB_KEY_dead_abovereversedcomma 0xfe65 +#define XKB_KEY_dead_dasia 0xfe65 /* alias for dead_abovereversedcomma */ +#define XKB_KEY_dead_doublegrave 0xfe66 +#define XKB_KEY_dead_belowring 0xfe67 +#define XKB_KEY_dead_belowmacron 0xfe68 +#define XKB_KEY_dead_belowcircumflex 0xfe69 +#define XKB_KEY_dead_belowtilde 0xfe6a +#define XKB_KEY_dead_belowbreve 0xfe6b +#define XKB_KEY_dead_belowdiaeresis 0xfe6c +#define XKB_KEY_dead_invertedbreve 0xfe6d +#define XKB_KEY_dead_belowcomma 0xfe6e +#define XKB_KEY_dead_currency 0xfe6f + +/* extra dead elements for German T3 layout */ +#define XKB_KEY_dead_lowline 0xfe90 +#define XKB_KEY_dead_aboveverticalline 0xfe91 +#define XKB_KEY_dead_belowverticalline 0xfe92 +#define XKB_KEY_dead_longsolidusoverlay 0xfe93 + +/* dead vowels for universal syllable entry */ +#define XKB_KEY_dead_a 0xfe80 +#define XKB_KEY_dead_A 0xfe81 +#define XKB_KEY_dead_e 0xfe82 +#define XKB_KEY_dead_E 0xfe83 +#define XKB_KEY_dead_i 0xfe84 +#define XKB_KEY_dead_I 0xfe85 +#define XKB_KEY_dead_o 0xfe86 +#define XKB_KEY_dead_O 0xfe87 +#define XKB_KEY_dead_u 0xfe88 +#define XKB_KEY_dead_U 0xfe89 +#define XKB_KEY_dead_small_schwa 0xfe8a +#define XKB_KEY_dead_capital_schwa 0xfe8b + +#define XKB_KEY_dead_greek 0xfe8c + +#define XKB_KEY_First_Virtual_Screen 0xfed0 +#define XKB_KEY_Prev_Virtual_Screen 0xfed1 +#define XKB_KEY_Next_Virtual_Screen 0xfed2 +#define XKB_KEY_Last_Virtual_Screen 0xfed4 +#define XKB_KEY_Terminate_Server 0xfed5 + +#define XKB_KEY_AccessX_Enable 0xfe70 +#define XKB_KEY_AccessX_Feedback_Enable 0xfe71 +#define XKB_KEY_RepeatKeys_Enable 0xfe72 +#define XKB_KEY_SlowKeys_Enable 0xfe73 +#define XKB_KEY_BounceKeys_Enable 0xfe74 +#define XKB_KEY_StickyKeys_Enable 0xfe75 +#define XKB_KEY_MouseKeys_Enable 0xfe76 +#define XKB_KEY_MouseKeys_Accel_Enable 0xfe77 +#define XKB_KEY_Overlay1_Enable 0xfe78 +#define XKB_KEY_Overlay2_Enable 0xfe79 +#define XKB_KEY_AudibleBell_Enable 0xfe7a + +#define XKB_KEY_Pointer_Left 0xfee0 +#define XKB_KEY_Pointer_Right 0xfee1 +#define XKB_KEY_Pointer_Up 0xfee2 +#define XKB_KEY_Pointer_Down 0xfee3 +#define XKB_KEY_Pointer_UpLeft 0xfee4 +#define XKB_KEY_Pointer_UpRight 0xfee5 +#define XKB_KEY_Pointer_DownLeft 0xfee6 +#define XKB_KEY_Pointer_DownRight 0xfee7 +#define XKB_KEY_Pointer_Button_Dflt 0xfee8 +#define XKB_KEY_Pointer_Button1 0xfee9 +#define XKB_KEY_Pointer_Button2 0xfeea +#define XKB_KEY_Pointer_Button3 0xfeeb +#define XKB_KEY_Pointer_Button4 0xfeec +#define XKB_KEY_Pointer_Button5 0xfeed +#define XKB_KEY_Pointer_DblClick_Dflt 0xfeee +#define XKB_KEY_Pointer_DblClick1 0xfeef +#define XKB_KEY_Pointer_DblClick2 0xfef0 +#define XKB_KEY_Pointer_DblClick3 0xfef1 +#define XKB_KEY_Pointer_DblClick4 0xfef2 +#define XKB_KEY_Pointer_DblClick5 0xfef3 +#define XKB_KEY_Pointer_Drag_Dflt 0xfef4 +#define XKB_KEY_Pointer_Drag1 0xfef5 +#define XKB_KEY_Pointer_Drag2 0xfef6 +#define XKB_KEY_Pointer_Drag3 0xfef7 +#define XKB_KEY_Pointer_Drag4 0xfef8 +#define XKB_KEY_Pointer_Drag5 0xfefd + +#define XKB_KEY_Pointer_EnableKeys 0xfef9 +#define XKB_KEY_Pointer_Accelerate 0xfefa +#define XKB_KEY_Pointer_DfltBtnNext 0xfefb +#define XKB_KEY_Pointer_DfltBtnPrev 0xfefc + +/* Single-Stroke Multiple-Character N-Graph Keysyms For The X Input Method */ + +#define XKB_KEY_ch 0xfea0 +#define XKB_KEY_Ch 0xfea1 +#define XKB_KEY_CH 0xfea2 +#define XKB_KEY_c_h 0xfea3 +#define XKB_KEY_C_h 0xfea4 +#define XKB_KEY_C_H 0xfea5 + + +/* + * 3270 Terminal Keys + * Byte 3 = 0xfd + */ + +#define XKB_KEY_3270_Duplicate 0xfd01 +#define XKB_KEY_3270_FieldMark 0xfd02 +#define XKB_KEY_3270_Right2 0xfd03 +#define XKB_KEY_3270_Left2 0xfd04 +#define XKB_KEY_3270_BackTab 0xfd05 +#define XKB_KEY_3270_EraseEOF 0xfd06 +#define XKB_KEY_3270_EraseInput 0xfd07 +#define XKB_KEY_3270_Reset 0xfd08 +#define XKB_KEY_3270_Quit 0xfd09 +#define XKB_KEY_3270_PA1 0xfd0a +#define XKB_KEY_3270_PA2 0xfd0b +#define XKB_KEY_3270_PA3 0xfd0c +#define XKB_KEY_3270_Test 0xfd0d +#define XKB_KEY_3270_Attn 0xfd0e +#define XKB_KEY_3270_CursorBlink 0xfd0f +#define XKB_KEY_3270_AltCursor 0xfd10 +#define XKB_KEY_3270_KeyClick 0xfd11 +#define XKB_KEY_3270_Jump 0xfd12 +#define XKB_KEY_3270_Ident 0xfd13 +#define XKB_KEY_3270_Rule 0xfd14 +#define XKB_KEY_3270_Copy 0xfd15 +#define XKB_KEY_3270_Play 0xfd16 +#define XKB_KEY_3270_Setup 0xfd17 +#define XKB_KEY_3270_Record 0xfd18 +#define XKB_KEY_3270_ChangeScreen 0xfd19 +#define XKB_KEY_3270_DeleteWord 0xfd1a +#define XKB_KEY_3270_ExSelect 0xfd1b +#define XKB_KEY_3270_CursorSelect 0xfd1c +#define XKB_KEY_3270_PrintScreen 0xfd1d +#define XKB_KEY_3270_Enter 0xfd1e + +/* + * Latin 1 + * (ISO/IEC 8859-1 = Unicode U+0020..U+00FF) + * Byte 3 = 0 + */ +#define XKB_KEY_space 0x0020 /* U+0020 SPACE */ +#define XKB_KEY_exclam 0x0021 /* U+0021 EXCLAMATION MARK */ +#define XKB_KEY_quotedbl 0x0022 /* U+0022 QUOTATION MARK */ +#define XKB_KEY_numbersign 0x0023 /* U+0023 NUMBER SIGN */ +#define XKB_KEY_dollar 0x0024 /* U+0024 DOLLAR SIGN */ +#define XKB_KEY_percent 0x0025 /* U+0025 PERCENT SIGN */ +#define XKB_KEY_ampersand 0x0026 /* U+0026 AMPERSAND */ +#define XKB_KEY_apostrophe 0x0027 /* U+0027 APOSTROPHE */ +#define XKB_KEY_quoteright 0x0027 /* deprecated */ +#define XKB_KEY_parenleft 0x0028 /* U+0028 LEFT PARENTHESIS */ +#define XKB_KEY_parenright 0x0029 /* U+0029 RIGHT PARENTHESIS */ +#define XKB_KEY_asterisk 0x002a /* U+002A ASTERISK */ +#define XKB_KEY_plus 0x002b /* U+002B PLUS SIGN */ +#define XKB_KEY_comma 0x002c /* U+002C COMMA */ +#define XKB_KEY_minus 0x002d /* U+002D HYPHEN-MINUS */ +#define XKB_KEY_period 0x002e /* U+002E FULL STOP */ +#define XKB_KEY_slash 0x002f /* U+002F SOLIDUS */ +#define XKB_KEY_0 0x0030 /* U+0030 DIGIT ZERO */ +#define XKB_KEY_1 0x0031 /* U+0031 DIGIT ONE */ +#define XKB_KEY_2 0x0032 /* U+0032 DIGIT TWO */ +#define XKB_KEY_3 0x0033 /* U+0033 DIGIT THREE */ +#define XKB_KEY_4 0x0034 /* U+0034 DIGIT FOUR */ +#define XKB_KEY_5 0x0035 /* U+0035 DIGIT FIVE */ +#define XKB_KEY_6 0x0036 /* U+0036 DIGIT SIX */ +#define XKB_KEY_7 0x0037 /* U+0037 DIGIT SEVEN */ +#define XKB_KEY_8 0x0038 /* U+0038 DIGIT EIGHT */ +#define XKB_KEY_9 0x0039 /* U+0039 DIGIT NINE */ +#define XKB_KEY_colon 0x003a /* U+003A COLON */ +#define XKB_KEY_semicolon 0x003b /* U+003B SEMICOLON */ +#define XKB_KEY_less 0x003c /* U+003C LESS-THAN SIGN */ +#define XKB_KEY_equal 0x003d /* U+003D EQUALS SIGN */ +#define XKB_KEY_greater 0x003e /* U+003E GREATER-THAN SIGN */ +#define XKB_KEY_question 0x003f /* U+003F QUESTION MARK */ +#define XKB_KEY_at 0x0040 /* U+0040 COMMERCIAL AT */ +#define XKB_KEY_A 0x0041 /* U+0041 LATIN CAPITAL LETTER A */ +#define XKB_KEY_B 0x0042 /* U+0042 LATIN CAPITAL LETTER B */ +#define XKB_KEY_C 0x0043 /* U+0043 LATIN CAPITAL LETTER C */ +#define XKB_KEY_D 0x0044 /* U+0044 LATIN CAPITAL LETTER D */ +#define XKB_KEY_E 0x0045 /* U+0045 LATIN CAPITAL LETTER E */ +#define XKB_KEY_F 0x0046 /* U+0046 LATIN CAPITAL LETTER F */ +#define XKB_KEY_G 0x0047 /* U+0047 LATIN CAPITAL LETTER G */ +#define XKB_KEY_H 0x0048 /* U+0048 LATIN CAPITAL LETTER H */ +#define XKB_KEY_I 0x0049 /* U+0049 LATIN CAPITAL LETTER I */ +#define XKB_KEY_J 0x004a /* U+004A LATIN CAPITAL LETTER J */ +#define XKB_KEY_K 0x004b /* U+004B LATIN CAPITAL LETTER K */ +#define XKB_KEY_L 0x004c /* U+004C LATIN CAPITAL LETTER L */ +#define XKB_KEY_M 0x004d /* U+004D LATIN CAPITAL LETTER M */ +#define XKB_KEY_N 0x004e /* U+004E LATIN CAPITAL LETTER N */ +#define XKB_KEY_O 0x004f /* U+004F LATIN CAPITAL LETTER O */ +#define XKB_KEY_P 0x0050 /* U+0050 LATIN CAPITAL LETTER P */ +#define XKB_KEY_Q 0x0051 /* U+0051 LATIN CAPITAL LETTER Q */ +#define XKB_KEY_R 0x0052 /* U+0052 LATIN CAPITAL LETTER R */ +#define XKB_KEY_S 0x0053 /* U+0053 LATIN CAPITAL LETTER S */ +#define XKB_KEY_T 0x0054 /* U+0054 LATIN CAPITAL LETTER T */ +#define XKB_KEY_U 0x0055 /* U+0055 LATIN CAPITAL LETTER U */ +#define XKB_KEY_V 0x0056 /* U+0056 LATIN CAPITAL LETTER V */ +#define XKB_KEY_W 0x0057 /* U+0057 LATIN CAPITAL LETTER W */ +#define XKB_KEY_X 0x0058 /* U+0058 LATIN CAPITAL LETTER X */ +#define XKB_KEY_Y 0x0059 /* U+0059 LATIN CAPITAL LETTER Y */ +#define XKB_KEY_Z 0x005a /* U+005A LATIN CAPITAL LETTER Z */ +#define XKB_KEY_bracketleft 0x005b /* U+005B LEFT SQUARE BRACKET */ +#define XKB_KEY_backslash 0x005c /* U+005C REVERSE SOLIDUS */ +#define XKB_KEY_bracketright 0x005d /* U+005D RIGHT SQUARE BRACKET */ +#define XKB_KEY_asciicircum 0x005e /* U+005E CIRCUMFLEX ACCENT */ +#define XKB_KEY_underscore 0x005f /* U+005F LOW LINE */ +#define XKB_KEY_grave 0x0060 /* U+0060 GRAVE ACCENT */ +#define XKB_KEY_quoteleft 0x0060 /* deprecated */ +#define XKB_KEY_a 0x0061 /* U+0061 LATIN SMALL LETTER A */ +#define XKB_KEY_b 0x0062 /* U+0062 LATIN SMALL LETTER B */ +#define XKB_KEY_c 0x0063 /* U+0063 LATIN SMALL LETTER C */ +#define XKB_KEY_d 0x0064 /* U+0064 LATIN SMALL LETTER D */ +#define XKB_KEY_e 0x0065 /* U+0065 LATIN SMALL LETTER E */ +#define XKB_KEY_f 0x0066 /* U+0066 LATIN SMALL LETTER F */ +#define XKB_KEY_g 0x0067 /* U+0067 LATIN SMALL LETTER G */ +#define XKB_KEY_h 0x0068 /* U+0068 LATIN SMALL LETTER H */ +#define XKB_KEY_i 0x0069 /* U+0069 LATIN SMALL LETTER I */ +#define XKB_KEY_j 0x006a /* U+006A LATIN SMALL LETTER J */ +#define XKB_KEY_k 0x006b /* U+006B LATIN SMALL LETTER K */ +#define XKB_KEY_l 0x006c /* U+006C LATIN SMALL LETTER L */ +#define XKB_KEY_m 0x006d /* U+006D LATIN SMALL LETTER M */ +#define XKB_KEY_n 0x006e /* U+006E LATIN SMALL LETTER N */ +#define XKB_KEY_o 0x006f /* U+006F LATIN SMALL LETTER O */ +#define XKB_KEY_p 0x0070 /* U+0070 LATIN SMALL LETTER P */ +#define XKB_KEY_q 0x0071 /* U+0071 LATIN SMALL LETTER Q */ +#define XKB_KEY_r 0x0072 /* U+0072 LATIN SMALL LETTER R */ +#define XKB_KEY_s 0x0073 /* U+0073 LATIN SMALL LETTER S */ +#define XKB_KEY_t 0x0074 /* U+0074 LATIN SMALL LETTER T */ +#define XKB_KEY_u 0x0075 /* U+0075 LATIN SMALL LETTER U */ +#define XKB_KEY_v 0x0076 /* U+0076 LATIN SMALL LETTER V */ +#define XKB_KEY_w 0x0077 /* U+0077 LATIN SMALL LETTER W */ +#define XKB_KEY_x 0x0078 /* U+0078 LATIN SMALL LETTER X */ +#define XKB_KEY_y 0x0079 /* U+0079 LATIN SMALL LETTER Y */ +#define XKB_KEY_z 0x007a /* U+007A LATIN SMALL LETTER Z */ +#define XKB_KEY_braceleft 0x007b /* U+007B LEFT CURLY BRACKET */ +#define XKB_KEY_bar 0x007c /* U+007C VERTICAL LINE */ +#define XKB_KEY_braceright 0x007d /* U+007D RIGHT CURLY BRACKET */ +#define XKB_KEY_asciitilde 0x007e /* U+007E TILDE */ + +#define XKB_KEY_nobreakspace 0x00a0 /* U+00A0 NO-BREAK SPACE */ +#define XKB_KEY_exclamdown 0x00a1 /* U+00A1 INVERTED EXCLAMATION MARK */ +#define XKB_KEY_cent 0x00a2 /* U+00A2 CENT SIGN */ +#define XKB_KEY_sterling 0x00a3 /* U+00A3 POUND SIGN */ +#define XKB_KEY_currency 0x00a4 /* U+00A4 CURRENCY SIGN */ +#define XKB_KEY_yen 0x00a5 /* U+00A5 YEN SIGN */ +#define XKB_KEY_brokenbar 0x00a6 /* U+00A6 BROKEN BAR */ +#define XKB_KEY_section 0x00a7 /* U+00A7 SECTION SIGN */ +#define XKB_KEY_diaeresis 0x00a8 /* U+00A8 DIAERESIS */ +#define XKB_KEY_copyright 0x00a9 /* U+00A9 COPYRIGHT SIGN */ +#define XKB_KEY_ordfeminine 0x00aa /* U+00AA FEMININE ORDINAL INDICATOR */ +#define XKB_KEY_guillemotleft 0x00ab /* U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ +#define XKB_KEY_notsign 0x00ac /* U+00AC NOT SIGN */ +#define XKB_KEY_hyphen 0x00ad /* U+00AD SOFT HYPHEN */ +#define XKB_KEY_registered 0x00ae /* U+00AE REGISTERED SIGN */ +#define XKB_KEY_macron 0x00af /* U+00AF MACRON */ +#define XKB_KEY_degree 0x00b0 /* U+00B0 DEGREE SIGN */ +#define XKB_KEY_plusminus 0x00b1 /* U+00B1 PLUS-MINUS SIGN */ +#define XKB_KEY_twosuperior 0x00b2 /* U+00B2 SUPERSCRIPT TWO */ +#define XKB_KEY_threesuperior 0x00b3 /* U+00B3 SUPERSCRIPT THREE */ +#define XKB_KEY_acute 0x00b4 /* U+00B4 ACUTE ACCENT */ +#define XKB_KEY_mu 0x00b5 /* U+00B5 MICRO SIGN */ +#define XKB_KEY_paragraph 0x00b6 /* U+00B6 PILCROW SIGN */ +#define XKB_KEY_periodcentered 0x00b7 /* U+00B7 MIDDLE DOT */ +#define XKB_KEY_cedilla 0x00b8 /* U+00B8 CEDILLA */ +#define XKB_KEY_onesuperior 0x00b9 /* U+00B9 SUPERSCRIPT ONE */ +#define XKB_KEY_masculine 0x00ba /* U+00BA MASCULINE ORDINAL INDICATOR */ +#define XKB_KEY_guillemotright 0x00bb /* U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ +#define XKB_KEY_onequarter 0x00bc /* U+00BC VULGAR FRACTION ONE QUARTER */ +#define XKB_KEY_onehalf 0x00bd /* U+00BD VULGAR FRACTION ONE HALF */ +#define XKB_KEY_threequarters 0x00be /* U+00BE VULGAR FRACTION THREE QUARTERS */ +#define XKB_KEY_questiondown 0x00bf /* U+00BF INVERTED QUESTION MARK */ +#define XKB_KEY_Agrave 0x00c0 /* U+00C0 LATIN CAPITAL LETTER A WITH GRAVE */ +#define XKB_KEY_Aacute 0x00c1 /* U+00C1 LATIN CAPITAL LETTER A WITH ACUTE */ +#define XKB_KEY_Acircumflex 0x00c2 /* U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ +#define XKB_KEY_Atilde 0x00c3 /* U+00C3 LATIN CAPITAL LETTER A WITH TILDE */ +#define XKB_KEY_Adiaeresis 0x00c4 /* U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS */ +#define XKB_KEY_Aring 0x00c5 /* U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE */ +#define XKB_KEY_AE 0x00c6 /* U+00C6 LATIN CAPITAL LETTER AE */ +#define XKB_KEY_Ccedilla 0x00c7 /* U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA */ +#define XKB_KEY_Egrave 0x00c8 /* U+00C8 LATIN CAPITAL LETTER E WITH GRAVE */ +#define XKB_KEY_Eacute 0x00c9 /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */ +#define XKB_KEY_Ecircumflex 0x00ca /* U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ +#define XKB_KEY_Ediaeresis 0x00cb /* U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS */ +#define XKB_KEY_Igrave 0x00cc /* U+00CC LATIN CAPITAL LETTER I WITH GRAVE */ +#define XKB_KEY_Iacute 0x00cd /* U+00CD LATIN CAPITAL LETTER I WITH ACUTE */ +#define XKB_KEY_Icircumflex 0x00ce /* U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ +#define XKB_KEY_Idiaeresis 0x00cf /* U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS */ +#define XKB_KEY_ETH 0x00d0 /* U+00D0 LATIN CAPITAL LETTER ETH */ +#define XKB_KEY_Eth 0x00d0 /* deprecated */ +#define XKB_KEY_Ntilde 0x00d1 /* U+00D1 LATIN CAPITAL LETTER N WITH TILDE */ +#define XKB_KEY_Ograve 0x00d2 /* U+00D2 LATIN CAPITAL LETTER O WITH GRAVE */ +#define XKB_KEY_Oacute 0x00d3 /* U+00D3 LATIN CAPITAL LETTER O WITH ACUTE */ +#define XKB_KEY_Ocircumflex 0x00d4 /* U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ +#define XKB_KEY_Otilde 0x00d5 /* U+00D5 LATIN CAPITAL LETTER O WITH TILDE */ +#define XKB_KEY_Odiaeresis 0x00d6 /* U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS */ +#define XKB_KEY_multiply 0x00d7 /* U+00D7 MULTIPLICATION SIGN */ +#define XKB_KEY_Oslash 0x00d8 /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */ +#define XKB_KEY_Ooblique 0x00d8 /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */ +#define XKB_KEY_Ugrave 0x00d9 /* U+00D9 LATIN CAPITAL LETTER U WITH GRAVE */ +#define XKB_KEY_Uacute 0x00da /* U+00DA LATIN CAPITAL LETTER U WITH ACUTE */ +#define XKB_KEY_Ucircumflex 0x00db /* U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ +#define XKB_KEY_Udiaeresis 0x00dc /* U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS */ +#define XKB_KEY_Yacute 0x00dd /* U+00DD LATIN CAPITAL LETTER Y WITH ACUTE */ +#define XKB_KEY_THORN 0x00de /* U+00DE LATIN CAPITAL LETTER THORN */ +#define XKB_KEY_Thorn 0x00de /* deprecated */ +#define XKB_KEY_ssharp 0x00df /* U+00DF LATIN SMALL LETTER SHARP S */ +#define XKB_KEY_agrave 0x00e0 /* U+00E0 LATIN SMALL LETTER A WITH GRAVE */ +#define XKB_KEY_aacute 0x00e1 /* U+00E1 LATIN SMALL LETTER A WITH ACUTE */ +#define XKB_KEY_acircumflex 0x00e2 /* U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX */ +#define XKB_KEY_atilde 0x00e3 /* U+00E3 LATIN SMALL LETTER A WITH TILDE */ +#define XKB_KEY_adiaeresis 0x00e4 /* U+00E4 LATIN SMALL LETTER A WITH DIAERESIS */ +#define XKB_KEY_aring 0x00e5 /* U+00E5 LATIN SMALL LETTER A WITH RING ABOVE */ +#define XKB_KEY_ae 0x00e6 /* U+00E6 LATIN SMALL LETTER AE */ +#define XKB_KEY_ccedilla 0x00e7 /* U+00E7 LATIN SMALL LETTER C WITH CEDILLA */ +#define XKB_KEY_egrave 0x00e8 /* U+00E8 LATIN SMALL LETTER E WITH GRAVE */ +#define XKB_KEY_eacute 0x00e9 /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */ +#define XKB_KEY_ecircumflex 0x00ea /* U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX */ +#define XKB_KEY_ediaeresis 0x00eb /* U+00EB LATIN SMALL LETTER E WITH DIAERESIS */ +#define XKB_KEY_igrave 0x00ec /* U+00EC LATIN SMALL LETTER I WITH GRAVE */ +#define XKB_KEY_iacute 0x00ed /* U+00ED LATIN SMALL LETTER I WITH ACUTE */ +#define XKB_KEY_icircumflex 0x00ee /* U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX */ +#define XKB_KEY_idiaeresis 0x00ef /* U+00EF LATIN SMALL LETTER I WITH DIAERESIS */ +#define XKB_KEY_eth 0x00f0 /* U+00F0 LATIN SMALL LETTER ETH */ +#define XKB_KEY_ntilde 0x00f1 /* U+00F1 LATIN SMALL LETTER N WITH TILDE */ +#define XKB_KEY_ograve 0x00f2 /* U+00F2 LATIN SMALL LETTER O WITH GRAVE */ +#define XKB_KEY_oacute 0x00f3 /* U+00F3 LATIN SMALL LETTER O WITH ACUTE */ +#define XKB_KEY_ocircumflex 0x00f4 /* U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX */ +#define XKB_KEY_otilde 0x00f5 /* U+00F5 LATIN SMALL LETTER O WITH TILDE */ +#define XKB_KEY_odiaeresis 0x00f6 /* U+00F6 LATIN SMALL LETTER O WITH DIAERESIS */ +#define XKB_KEY_division 0x00f7 /* U+00F7 DIVISION SIGN */ +#define XKB_KEY_oslash 0x00f8 /* U+00F8 LATIN SMALL LETTER O WITH STROKE */ +#define XKB_KEY_ooblique 0x00f8 /* U+00F8 LATIN SMALL LETTER O WITH STROKE */ +#define XKB_KEY_ugrave 0x00f9 /* U+00F9 LATIN SMALL LETTER U WITH GRAVE */ +#define XKB_KEY_uacute 0x00fa /* U+00FA LATIN SMALL LETTER U WITH ACUTE */ +#define XKB_KEY_ucircumflex 0x00fb /* U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX */ +#define XKB_KEY_udiaeresis 0x00fc /* U+00FC LATIN SMALL LETTER U WITH DIAERESIS */ +#define XKB_KEY_yacute 0x00fd /* U+00FD LATIN SMALL LETTER Y WITH ACUTE */ +#define XKB_KEY_thorn 0x00fe /* U+00FE LATIN SMALL LETTER THORN */ +#define XKB_KEY_ydiaeresis 0x00ff /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */ + +/* + * Latin 2 + * Byte 3 = 1 + */ + +#define XKB_KEY_Aogonek 0x01a1 /* U+0104 LATIN CAPITAL LETTER A WITH OGONEK */ +#define XKB_KEY_breve 0x01a2 /* U+02D8 BREVE */ +#define XKB_KEY_Lstroke 0x01a3 /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */ +#define XKB_KEY_Lcaron 0x01a5 /* U+013D LATIN CAPITAL LETTER L WITH CARON */ +#define XKB_KEY_Sacute 0x01a6 /* U+015A LATIN CAPITAL LETTER S WITH ACUTE */ +#define XKB_KEY_Scaron 0x01a9 /* U+0160 LATIN CAPITAL LETTER S WITH CARON */ +#define XKB_KEY_Scedilla 0x01aa /* U+015E LATIN CAPITAL LETTER S WITH CEDILLA */ +#define XKB_KEY_Tcaron 0x01ab /* U+0164 LATIN CAPITAL LETTER T WITH CARON */ +#define XKB_KEY_Zacute 0x01ac /* U+0179 LATIN CAPITAL LETTER Z WITH ACUTE */ +#define XKB_KEY_Zcaron 0x01ae /* U+017D LATIN CAPITAL LETTER Z WITH CARON */ +#define XKB_KEY_Zabovedot 0x01af /* U+017B LATIN CAPITAL LETTER Z WITH DOT ABOVE */ +#define XKB_KEY_aogonek 0x01b1 /* U+0105 LATIN SMALL LETTER A WITH OGONEK */ +#define XKB_KEY_ogonek 0x01b2 /* U+02DB OGONEK */ +#define XKB_KEY_lstroke 0x01b3 /* U+0142 LATIN SMALL LETTER L WITH STROKE */ +#define XKB_KEY_lcaron 0x01b5 /* U+013E LATIN SMALL LETTER L WITH CARON */ +#define XKB_KEY_sacute 0x01b6 /* U+015B LATIN SMALL LETTER S WITH ACUTE */ +#define XKB_KEY_caron 0x01b7 /* U+02C7 CARON */ +#define XKB_KEY_scaron 0x01b9 /* U+0161 LATIN SMALL LETTER S WITH CARON */ +#define XKB_KEY_scedilla 0x01ba /* U+015F LATIN SMALL LETTER S WITH CEDILLA */ +#define XKB_KEY_tcaron 0x01bb /* U+0165 LATIN SMALL LETTER T WITH CARON */ +#define XKB_KEY_zacute 0x01bc /* U+017A LATIN SMALL LETTER Z WITH ACUTE */ +#define XKB_KEY_doubleacute 0x01bd /* U+02DD DOUBLE ACUTE ACCENT */ +#define XKB_KEY_zcaron 0x01be /* U+017E LATIN SMALL LETTER Z WITH CARON */ +#define XKB_KEY_zabovedot 0x01bf /* U+017C LATIN SMALL LETTER Z WITH DOT ABOVE */ +#define XKB_KEY_Racute 0x01c0 /* U+0154 LATIN CAPITAL LETTER R WITH ACUTE */ +#define XKB_KEY_Abreve 0x01c3 /* U+0102 LATIN CAPITAL LETTER A WITH BREVE */ +#define XKB_KEY_Lacute 0x01c5 /* U+0139 LATIN CAPITAL LETTER L WITH ACUTE */ +#define XKB_KEY_Cacute 0x01c6 /* U+0106 LATIN CAPITAL LETTER C WITH ACUTE */ +#define XKB_KEY_Ccaron 0x01c8 /* U+010C LATIN CAPITAL LETTER C WITH CARON */ +#define XKB_KEY_Eogonek 0x01ca /* U+0118 LATIN CAPITAL LETTER E WITH OGONEK */ +#define XKB_KEY_Ecaron 0x01cc /* U+011A LATIN CAPITAL LETTER E WITH CARON */ +#define XKB_KEY_Dcaron 0x01cf /* U+010E LATIN CAPITAL LETTER D WITH CARON */ +#define XKB_KEY_Dstroke 0x01d0 /* U+0110 LATIN CAPITAL LETTER D WITH STROKE */ +#define XKB_KEY_Nacute 0x01d1 /* U+0143 LATIN CAPITAL LETTER N WITH ACUTE */ +#define XKB_KEY_Ncaron 0x01d2 /* U+0147 LATIN CAPITAL LETTER N WITH CARON */ +#define XKB_KEY_Odoubleacute 0x01d5 /* U+0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ +#define XKB_KEY_Rcaron 0x01d8 /* U+0158 LATIN CAPITAL LETTER R WITH CARON */ +#define XKB_KEY_Uring 0x01d9 /* U+016E LATIN CAPITAL LETTER U WITH RING ABOVE */ +#define XKB_KEY_Udoubleacute 0x01db /* U+0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ +#define XKB_KEY_Tcedilla 0x01de /* U+0162 LATIN CAPITAL LETTER T WITH CEDILLA */ +#define XKB_KEY_racute 0x01e0 /* U+0155 LATIN SMALL LETTER R WITH ACUTE */ +#define XKB_KEY_abreve 0x01e3 /* U+0103 LATIN SMALL LETTER A WITH BREVE */ +#define XKB_KEY_lacute 0x01e5 /* U+013A LATIN SMALL LETTER L WITH ACUTE */ +#define XKB_KEY_cacute 0x01e6 /* U+0107 LATIN SMALL LETTER C WITH ACUTE */ +#define XKB_KEY_ccaron 0x01e8 /* U+010D LATIN SMALL LETTER C WITH CARON */ +#define XKB_KEY_eogonek 0x01ea /* U+0119 LATIN SMALL LETTER E WITH OGONEK */ +#define XKB_KEY_ecaron 0x01ec /* U+011B LATIN SMALL LETTER E WITH CARON */ +#define XKB_KEY_dcaron 0x01ef /* U+010F LATIN SMALL LETTER D WITH CARON */ +#define XKB_KEY_dstroke 0x01f0 /* U+0111 LATIN SMALL LETTER D WITH STROKE */ +#define XKB_KEY_nacute 0x01f1 /* U+0144 LATIN SMALL LETTER N WITH ACUTE */ +#define XKB_KEY_ncaron 0x01f2 /* U+0148 LATIN SMALL LETTER N WITH CARON */ +#define XKB_KEY_odoubleacute 0x01f5 /* U+0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE */ +#define XKB_KEY_rcaron 0x01f8 /* U+0159 LATIN SMALL LETTER R WITH CARON */ +#define XKB_KEY_uring 0x01f9 /* U+016F LATIN SMALL LETTER U WITH RING ABOVE */ +#define XKB_KEY_udoubleacute 0x01fb /* U+0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE */ +#define XKB_KEY_tcedilla 0x01fe /* U+0163 LATIN SMALL LETTER T WITH CEDILLA */ +#define XKB_KEY_abovedot 0x01ff /* U+02D9 DOT ABOVE */ + +/* + * Latin 3 + * Byte 3 = 2 + */ + +#define XKB_KEY_Hstroke 0x02a1 /* U+0126 LATIN CAPITAL LETTER H WITH STROKE */ +#define XKB_KEY_Hcircumflex 0x02a6 /* U+0124 LATIN CAPITAL LETTER H WITH CIRCUMFLEX */ +#define XKB_KEY_Iabovedot 0x02a9 /* U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE */ +#define XKB_KEY_Gbreve 0x02ab /* U+011E LATIN CAPITAL LETTER G WITH BREVE */ +#define XKB_KEY_Jcircumflex 0x02ac /* U+0134 LATIN CAPITAL LETTER J WITH CIRCUMFLEX */ +#define XKB_KEY_hstroke 0x02b1 /* U+0127 LATIN SMALL LETTER H WITH STROKE */ +#define XKB_KEY_hcircumflex 0x02b6 /* U+0125 LATIN SMALL LETTER H WITH CIRCUMFLEX */ +#define XKB_KEY_idotless 0x02b9 /* U+0131 LATIN SMALL LETTER DOTLESS I */ +#define XKB_KEY_gbreve 0x02bb /* U+011F LATIN SMALL LETTER G WITH BREVE */ +#define XKB_KEY_jcircumflex 0x02bc /* U+0135 LATIN SMALL LETTER J WITH CIRCUMFLEX */ +#define XKB_KEY_Cabovedot 0x02c5 /* U+010A LATIN CAPITAL LETTER C WITH DOT ABOVE */ +#define XKB_KEY_Ccircumflex 0x02c6 /* U+0108 LATIN CAPITAL LETTER C WITH CIRCUMFLEX */ +#define XKB_KEY_Gabovedot 0x02d5 /* U+0120 LATIN CAPITAL LETTER G WITH DOT ABOVE */ +#define XKB_KEY_Gcircumflex 0x02d8 /* U+011C LATIN CAPITAL LETTER G WITH CIRCUMFLEX */ +#define XKB_KEY_Ubreve 0x02dd /* U+016C LATIN CAPITAL LETTER U WITH BREVE */ +#define XKB_KEY_Scircumflex 0x02de /* U+015C LATIN CAPITAL LETTER S WITH CIRCUMFLEX */ +#define XKB_KEY_cabovedot 0x02e5 /* U+010B LATIN SMALL LETTER C WITH DOT ABOVE */ +#define XKB_KEY_ccircumflex 0x02e6 /* U+0109 LATIN SMALL LETTER C WITH CIRCUMFLEX */ +#define XKB_KEY_gabovedot 0x02f5 /* U+0121 LATIN SMALL LETTER G WITH DOT ABOVE */ +#define XKB_KEY_gcircumflex 0x02f8 /* U+011D LATIN SMALL LETTER G WITH CIRCUMFLEX */ +#define XKB_KEY_ubreve 0x02fd /* U+016D LATIN SMALL LETTER U WITH BREVE */ +#define XKB_KEY_scircumflex 0x02fe /* U+015D LATIN SMALL LETTER S WITH CIRCUMFLEX */ + + +/* + * Latin 4 + * Byte 3 = 3 + */ + +#define XKB_KEY_kra 0x03a2 /* U+0138 LATIN SMALL LETTER KRA */ +#define XKB_KEY_kappa 0x03a2 /* deprecated */ +#define XKB_KEY_Rcedilla 0x03a3 /* U+0156 LATIN CAPITAL LETTER R WITH CEDILLA */ +#define XKB_KEY_Itilde 0x03a5 /* U+0128 LATIN CAPITAL LETTER I WITH TILDE */ +#define XKB_KEY_Lcedilla 0x03a6 /* U+013B LATIN CAPITAL LETTER L WITH CEDILLA */ +#define XKB_KEY_Emacron 0x03aa /* U+0112 LATIN CAPITAL LETTER E WITH MACRON */ +#define XKB_KEY_Gcedilla 0x03ab /* U+0122 LATIN CAPITAL LETTER G WITH CEDILLA */ +#define XKB_KEY_Tslash 0x03ac /* U+0166 LATIN CAPITAL LETTER T WITH STROKE */ +#define XKB_KEY_rcedilla 0x03b3 /* U+0157 LATIN SMALL LETTER R WITH CEDILLA */ +#define XKB_KEY_itilde 0x03b5 /* U+0129 LATIN SMALL LETTER I WITH TILDE */ +#define XKB_KEY_lcedilla 0x03b6 /* U+013C LATIN SMALL LETTER L WITH CEDILLA */ +#define XKB_KEY_emacron 0x03ba /* U+0113 LATIN SMALL LETTER E WITH MACRON */ +#define XKB_KEY_gcedilla 0x03bb /* U+0123 LATIN SMALL LETTER G WITH CEDILLA */ +#define XKB_KEY_tslash 0x03bc /* U+0167 LATIN SMALL LETTER T WITH STROKE */ +#define XKB_KEY_ENG 0x03bd /* U+014A LATIN CAPITAL LETTER ENG */ +#define XKB_KEY_eng 0x03bf /* U+014B LATIN SMALL LETTER ENG */ +#define XKB_KEY_Amacron 0x03c0 /* U+0100 LATIN CAPITAL LETTER A WITH MACRON */ +#define XKB_KEY_Iogonek 0x03c7 /* U+012E LATIN CAPITAL LETTER I WITH OGONEK */ +#define XKB_KEY_Eabovedot 0x03cc /* U+0116 LATIN CAPITAL LETTER E WITH DOT ABOVE */ +#define XKB_KEY_Imacron 0x03cf /* U+012A LATIN CAPITAL LETTER I WITH MACRON */ +#define XKB_KEY_Ncedilla 0x03d1 /* U+0145 LATIN CAPITAL LETTER N WITH CEDILLA */ +#define XKB_KEY_Omacron 0x03d2 /* U+014C LATIN CAPITAL LETTER O WITH MACRON */ +#define XKB_KEY_Kcedilla 0x03d3 /* U+0136 LATIN CAPITAL LETTER K WITH CEDILLA */ +#define XKB_KEY_Uogonek 0x03d9 /* U+0172 LATIN CAPITAL LETTER U WITH OGONEK */ +#define XKB_KEY_Utilde 0x03dd /* U+0168 LATIN CAPITAL LETTER U WITH TILDE */ +#define XKB_KEY_Umacron 0x03de /* U+016A LATIN CAPITAL LETTER U WITH MACRON */ +#define XKB_KEY_amacron 0x03e0 /* U+0101 LATIN SMALL LETTER A WITH MACRON */ +#define XKB_KEY_iogonek 0x03e7 /* U+012F LATIN SMALL LETTER I WITH OGONEK */ +#define XKB_KEY_eabovedot 0x03ec /* U+0117 LATIN SMALL LETTER E WITH DOT ABOVE */ +#define XKB_KEY_imacron 0x03ef /* U+012B LATIN SMALL LETTER I WITH MACRON */ +#define XKB_KEY_ncedilla 0x03f1 /* U+0146 LATIN SMALL LETTER N WITH CEDILLA */ +#define XKB_KEY_omacron 0x03f2 /* U+014D LATIN SMALL LETTER O WITH MACRON */ +#define XKB_KEY_kcedilla 0x03f3 /* U+0137 LATIN SMALL LETTER K WITH CEDILLA */ +#define XKB_KEY_uogonek 0x03f9 /* U+0173 LATIN SMALL LETTER U WITH OGONEK */ +#define XKB_KEY_utilde 0x03fd /* U+0169 LATIN SMALL LETTER U WITH TILDE */ +#define XKB_KEY_umacron 0x03fe /* U+016B LATIN SMALL LETTER U WITH MACRON */ + +/* + * Latin 8 + */ +#define XKB_KEY_Wcircumflex 0x1000174 /* U+0174 LATIN CAPITAL LETTER W WITH CIRCUMFLEX */ +#define XKB_KEY_wcircumflex 0x1000175 /* U+0175 LATIN SMALL LETTER W WITH CIRCUMFLEX */ +#define XKB_KEY_Ycircumflex 0x1000176 /* U+0176 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX */ +#define XKB_KEY_ycircumflex 0x1000177 /* U+0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX */ +#define XKB_KEY_Babovedot 0x1001e02 /* U+1E02 LATIN CAPITAL LETTER B WITH DOT ABOVE */ +#define XKB_KEY_babovedot 0x1001e03 /* U+1E03 LATIN SMALL LETTER B WITH DOT ABOVE */ +#define XKB_KEY_Dabovedot 0x1001e0a /* U+1E0A LATIN CAPITAL LETTER D WITH DOT ABOVE */ +#define XKB_KEY_dabovedot 0x1001e0b /* U+1E0B LATIN SMALL LETTER D WITH DOT ABOVE */ +#define XKB_KEY_Fabovedot 0x1001e1e /* U+1E1E LATIN CAPITAL LETTER F WITH DOT ABOVE */ +#define XKB_KEY_fabovedot 0x1001e1f /* U+1E1F LATIN SMALL LETTER F WITH DOT ABOVE */ +#define XKB_KEY_Mabovedot 0x1001e40 /* U+1E40 LATIN CAPITAL LETTER M WITH DOT ABOVE */ +#define XKB_KEY_mabovedot 0x1001e41 /* U+1E41 LATIN SMALL LETTER M WITH DOT ABOVE */ +#define XKB_KEY_Pabovedot 0x1001e56 /* U+1E56 LATIN CAPITAL LETTER P WITH DOT ABOVE */ +#define XKB_KEY_pabovedot 0x1001e57 /* U+1E57 LATIN SMALL LETTER P WITH DOT ABOVE */ +#define XKB_KEY_Sabovedot 0x1001e60 /* U+1E60 LATIN CAPITAL LETTER S WITH DOT ABOVE */ +#define XKB_KEY_sabovedot 0x1001e61 /* U+1E61 LATIN SMALL LETTER S WITH DOT ABOVE */ +#define XKB_KEY_Tabovedot 0x1001e6a /* U+1E6A LATIN CAPITAL LETTER T WITH DOT ABOVE */ +#define XKB_KEY_tabovedot 0x1001e6b /* U+1E6B LATIN SMALL LETTER T WITH DOT ABOVE */ +#define XKB_KEY_Wgrave 0x1001e80 /* U+1E80 LATIN CAPITAL LETTER W WITH GRAVE */ +#define XKB_KEY_wgrave 0x1001e81 /* U+1E81 LATIN SMALL LETTER W WITH GRAVE */ +#define XKB_KEY_Wacute 0x1001e82 /* U+1E82 LATIN CAPITAL LETTER W WITH ACUTE */ +#define XKB_KEY_wacute 0x1001e83 /* U+1E83 LATIN SMALL LETTER W WITH ACUTE */ +#define XKB_KEY_Wdiaeresis 0x1001e84 /* U+1E84 LATIN CAPITAL LETTER W WITH DIAERESIS */ +#define XKB_KEY_wdiaeresis 0x1001e85 /* U+1E85 LATIN SMALL LETTER W WITH DIAERESIS */ +#define XKB_KEY_Ygrave 0x1001ef2 /* U+1EF2 LATIN CAPITAL LETTER Y WITH GRAVE */ +#define XKB_KEY_ygrave 0x1001ef3 /* U+1EF3 LATIN SMALL LETTER Y WITH GRAVE */ + +/* + * Latin 9 + * Byte 3 = 0x13 + */ + +#define XKB_KEY_OE 0x13bc /* U+0152 LATIN CAPITAL LIGATURE OE */ +#define XKB_KEY_oe 0x13bd /* U+0153 LATIN SMALL LIGATURE OE */ +#define XKB_KEY_Ydiaeresis 0x13be /* U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS */ + +/* + * Katakana + * Byte 3 = 4 + */ + +#define XKB_KEY_overline 0x047e /* U+203E OVERLINE */ +#define XKB_KEY_kana_fullstop 0x04a1 /* U+3002 IDEOGRAPHIC FULL STOP */ +#define XKB_KEY_kana_openingbracket 0x04a2 /* U+300C LEFT CORNER BRACKET */ +#define XKB_KEY_kana_closingbracket 0x04a3 /* U+300D RIGHT CORNER BRACKET */ +#define XKB_KEY_kana_comma 0x04a4 /* U+3001 IDEOGRAPHIC COMMA */ +#define XKB_KEY_kana_conjunctive 0x04a5 /* U+30FB KATAKANA MIDDLE DOT */ +#define XKB_KEY_kana_middledot 0x04a5 /* deprecated */ +#define XKB_KEY_kana_WO 0x04a6 /* U+30F2 KATAKANA LETTER WO */ +#define XKB_KEY_kana_a 0x04a7 /* U+30A1 KATAKANA LETTER SMALL A */ +#define XKB_KEY_kana_i 0x04a8 /* U+30A3 KATAKANA LETTER SMALL I */ +#define XKB_KEY_kana_u 0x04a9 /* U+30A5 KATAKANA LETTER SMALL U */ +#define XKB_KEY_kana_e 0x04aa /* U+30A7 KATAKANA LETTER SMALL E */ +#define XKB_KEY_kana_o 0x04ab /* U+30A9 KATAKANA LETTER SMALL O */ +#define XKB_KEY_kana_ya 0x04ac /* U+30E3 KATAKANA LETTER SMALL YA */ +#define XKB_KEY_kana_yu 0x04ad /* U+30E5 KATAKANA LETTER SMALL YU */ +#define XKB_KEY_kana_yo 0x04ae /* U+30E7 KATAKANA LETTER SMALL YO */ +#define XKB_KEY_kana_tsu 0x04af /* U+30C3 KATAKANA LETTER SMALL TU */ +#define XKB_KEY_kana_tu 0x04af /* deprecated */ +#define XKB_KEY_prolongedsound 0x04b0 /* U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK */ +#define XKB_KEY_kana_A 0x04b1 /* U+30A2 KATAKANA LETTER A */ +#define XKB_KEY_kana_I 0x04b2 /* U+30A4 KATAKANA LETTER I */ +#define XKB_KEY_kana_U 0x04b3 /* U+30A6 KATAKANA LETTER U */ +#define XKB_KEY_kana_E 0x04b4 /* U+30A8 KATAKANA LETTER E */ +#define XKB_KEY_kana_O 0x04b5 /* U+30AA KATAKANA LETTER O */ +#define XKB_KEY_kana_KA 0x04b6 /* U+30AB KATAKANA LETTER KA */ +#define XKB_KEY_kana_KI 0x04b7 /* U+30AD KATAKANA LETTER KI */ +#define XKB_KEY_kana_KU 0x04b8 /* U+30AF KATAKANA LETTER KU */ +#define XKB_KEY_kana_KE 0x04b9 /* U+30B1 KATAKANA LETTER KE */ +#define XKB_KEY_kana_KO 0x04ba /* U+30B3 KATAKANA LETTER KO */ +#define XKB_KEY_kana_SA 0x04bb /* U+30B5 KATAKANA LETTER SA */ +#define XKB_KEY_kana_SHI 0x04bc /* U+30B7 KATAKANA LETTER SI */ +#define XKB_KEY_kana_SU 0x04bd /* U+30B9 KATAKANA LETTER SU */ +#define XKB_KEY_kana_SE 0x04be /* U+30BB KATAKANA LETTER SE */ +#define XKB_KEY_kana_SO 0x04bf /* U+30BD KATAKANA LETTER SO */ +#define XKB_KEY_kana_TA 0x04c0 /* U+30BF KATAKANA LETTER TA */ +#define XKB_KEY_kana_CHI 0x04c1 /* U+30C1 KATAKANA LETTER TI */ +#define XKB_KEY_kana_TI 0x04c1 /* deprecated */ +#define XKB_KEY_kana_TSU 0x04c2 /* U+30C4 KATAKANA LETTER TU */ +#define XKB_KEY_kana_TU 0x04c2 /* deprecated */ +#define XKB_KEY_kana_TE 0x04c3 /* U+30C6 KATAKANA LETTER TE */ +#define XKB_KEY_kana_TO 0x04c4 /* U+30C8 KATAKANA LETTER TO */ +#define XKB_KEY_kana_NA 0x04c5 /* U+30CA KATAKANA LETTER NA */ +#define XKB_KEY_kana_NI 0x04c6 /* U+30CB KATAKANA LETTER NI */ +#define XKB_KEY_kana_NU 0x04c7 /* U+30CC KATAKANA LETTER NU */ +#define XKB_KEY_kana_NE 0x04c8 /* U+30CD KATAKANA LETTER NE */ +#define XKB_KEY_kana_NO 0x04c9 /* U+30CE KATAKANA LETTER NO */ +#define XKB_KEY_kana_HA 0x04ca /* U+30CF KATAKANA LETTER HA */ +#define XKB_KEY_kana_HI 0x04cb /* U+30D2 KATAKANA LETTER HI */ +#define XKB_KEY_kana_FU 0x04cc /* U+30D5 KATAKANA LETTER HU */ +#define XKB_KEY_kana_HU 0x04cc /* deprecated */ +#define XKB_KEY_kana_HE 0x04cd /* U+30D8 KATAKANA LETTER HE */ +#define XKB_KEY_kana_HO 0x04ce /* U+30DB KATAKANA LETTER HO */ +#define XKB_KEY_kana_MA 0x04cf /* U+30DE KATAKANA LETTER MA */ +#define XKB_KEY_kana_MI 0x04d0 /* U+30DF KATAKANA LETTER MI */ +#define XKB_KEY_kana_MU 0x04d1 /* U+30E0 KATAKANA LETTER MU */ +#define XKB_KEY_kana_ME 0x04d2 /* U+30E1 KATAKANA LETTER ME */ +#define XKB_KEY_kana_MO 0x04d3 /* U+30E2 KATAKANA LETTER MO */ +#define XKB_KEY_kana_YA 0x04d4 /* U+30E4 KATAKANA LETTER YA */ +#define XKB_KEY_kana_YU 0x04d5 /* U+30E6 KATAKANA LETTER YU */ +#define XKB_KEY_kana_YO 0x04d6 /* U+30E8 KATAKANA LETTER YO */ +#define XKB_KEY_kana_RA 0x04d7 /* U+30E9 KATAKANA LETTER RA */ +#define XKB_KEY_kana_RI 0x04d8 /* U+30EA KATAKANA LETTER RI */ +#define XKB_KEY_kana_RU 0x04d9 /* U+30EB KATAKANA LETTER RU */ +#define XKB_KEY_kana_RE 0x04da /* U+30EC KATAKANA LETTER RE */ +#define XKB_KEY_kana_RO 0x04db /* U+30ED KATAKANA LETTER RO */ +#define XKB_KEY_kana_WA 0x04dc /* U+30EF KATAKANA LETTER WA */ +#define XKB_KEY_kana_N 0x04dd /* U+30F3 KATAKANA LETTER N */ +#define XKB_KEY_voicedsound 0x04de /* U+309B KATAKANA-HIRAGANA VOICED SOUND MARK */ +#define XKB_KEY_semivoicedsound 0x04df /* U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */ +#define XKB_KEY_kana_switch 0xff7e /* Alias for mode_switch */ + +/* + * Arabic + * Byte 3 = 5 + */ + +#define XKB_KEY_Farsi_0 0x10006f0 /* U+06F0 EXTENDED ARABIC-INDIC DIGIT ZERO */ +#define XKB_KEY_Farsi_1 0x10006f1 /* U+06F1 EXTENDED ARABIC-INDIC DIGIT ONE */ +#define XKB_KEY_Farsi_2 0x10006f2 /* U+06F2 EXTENDED ARABIC-INDIC DIGIT TWO */ +#define XKB_KEY_Farsi_3 0x10006f3 /* U+06F3 EXTENDED ARABIC-INDIC DIGIT THREE */ +#define XKB_KEY_Farsi_4 0x10006f4 /* U+06F4 EXTENDED ARABIC-INDIC DIGIT FOUR */ +#define XKB_KEY_Farsi_5 0x10006f5 /* U+06F5 EXTENDED ARABIC-INDIC DIGIT FIVE */ +#define XKB_KEY_Farsi_6 0x10006f6 /* U+06F6 EXTENDED ARABIC-INDIC DIGIT SIX */ +#define XKB_KEY_Farsi_7 0x10006f7 /* U+06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN */ +#define XKB_KEY_Farsi_8 0x10006f8 /* U+06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT */ +#define XKB_KEY_Farsi_9 0x10006f9 /* U+06F9 EXTENDED ARABIC-INDIC DIGIT NINE */ +#define XKB_KEY_Arabic_percent 0x100066a /* U+066A ARABIC PERCENT SIGN */ +#define XKB_KEY_Arabic_superscript_alef 0x1000670 /* U+0670 ARABIC LETTER SUPERSCRIPT ALEF */ +#define XKB_KEY_Arabic_tteh 0x1000679 /* U+0679 ARABIC LETTER TTEH */ +#define XKB_KEY_Arabic_peh 0x100067e /* U+067E ARABIC LETTER PEH */ +#define XKB_KEY_Arabic_tcheh 0x1000686 /* U+0686 ARABIC LETTER TCHEH */ +#define XKB_KEY_Arabic_ddal 0x1000688 /* U+0688 ARABIC LETTER DDAL */ +#define XKB_KEY_Arabic_rreh 0x1000691 /* U+0691 ARABIC LETTER RREH */ +#define XKB_KEY_Arabic_comma 0x05ac /* U+060C ARABIC COMMA */ +#define XKB_KEY_Arabic_fullstop 0x10006d4 /* U+06D4 ARABIC FULL STOP */ +#define XKB_KEY_Arabic_0 0x1000660 /* U+0660 ARABIC-INDIC DIGIT ZERO */ +#define XKB_KEY_Arabic_1 0x1000661 /* U+0661 ARABIC-INDIC DIGIT ONE */ +#define XKB_KEY_Arabic_2 0x1000662 /* U+0662 ARABIC-INDIC DIGIT TWO */ +#define XKB_KEY_Arabic_3 0x1000663 /* U+0663 ARABIC-INDIC DIGIT THREE */ +#define XKB_KEY_Arabic_4 0x1000664 /* U+0664 ARABIC-INDIC DIGIT FOUR */ +#define XKB_KEY_Arabic_5 0x1000665 /* U+0665 ARABIC-INDIC DIGIT FIVE */ +#define XKB_KEY_Arabic_6 0x1000666 /* U+0666 ARABIC-INDIC DIGIT SIX */ +#define XKB_KEY_Arabic_7 0x1000667 /* U+0667 ARABIC-INDIC DIGIT SEVEN */ +#define XKB_KEY_Arabic_8 0x1000668 /* U+0668 ARABIC-INDIC DIGIT EIGHT */ +#define XKB_KEY_Arabic_9 0x1000669 /* U+0669 ARABIC-INDIC DIGIT NINE */ +#define XKB_KEY_Arabic_semicolon 0x05bb /* U+061B ARABIC SEMICOLON */ +#define XKB_KEY_Arabic_question_mark 0x05bf /* U+061F ARABIC QUESTION MARK */ +#define XKB_KEY_Arabic_hamza 0x05c1 /* U+0621 ARABIC LETTER HAMZA */ +#define XKB_KEY_Arabic_maddaonalef 0x05c2 /* U+0622 ARABIC LETTER ALEF WITH MADDA ABOVE */ +#define XKB_KEY_Arabic_hamzaonalef 0x05c3 /* U+0623 ARABIC LETTER ALEF WITH HAMZA ABOVE */ +#define XKB_KEY_Arabic_hamzaonwaw 0x05c4 /* U+0624 ARABIC LETTER WAW WITH HAMZA ABOVE */ +#define XKB_KEY_Arabic_hamzaunderalef 0x05c5 /* U+0625 ARABIC LETTER ALEF WITH HAMZA BELOW */ +#define XKB_KEY_Arabic_hamzaonyeh 0x05c6 /* U+0626 ARABIC LETTER YEH WITH HAMZA ABOVE */ +#define XKB_KEY_Arabic_alef 0x05c7 /* U+0627 ARABIC LETTER ALEF */ +#define XKB_KEY_Arabic_beh 0x05c8 /* U+0628 ARABIC LETTER BEH */ +#define XKB_KEY_Arabic_tehmarbuta 0x05c9 /* U+0629 ARABIC LETTER TEH MARBUTA */ +#define XKB_KEY_Arabic_teh 0x05ca /* U+062A ARABIC LETTER TEH */ +#define XKB_KEY_Arabic_theh 0x05cb /* U+062B ARABIC LETTER THEH */ +#define XKB_KEY_Arabic_jeem 0x05cc /* U+062C ARABIC LETTER JEEM */ +#define XKB_KEY_Arabic_hah 0x05cd /* U+062D ARABIC LETTER HAH */ +#define XKB_KEY_Arabic_khah 0x05ce /* U+062E ARABIC LETTER KHAH */ +#define XKB_KEY_Arabic_dal 0x05cf /* U+062F ARABIC LETTER DAL */ +#define XKB_KEY_Arabic_thal 0x05d0 /* U+0630 ARABIC LETTER THAL */ +#define XKB_KEY_Arabic_ra 0x05d1 /* U+0631 ARABIC LETTER REH */ +#define XKB_KEY_Arabic_zain 0x05d2 /* U+0632 ARABIC LETTER ZAIN */ +#define XKB_KEY_Arabic_seen 0x05d3 /* U+0633 ARABIC LETTER SEEN */ +#define XKB_KEY_Arabic_sheen 0x05d4 /* U+0634 ARABIC LETTER SHEEN */ +#define XKB_KEY_Arabic_sad 0x05d5 /* U+0635 ARABIC LETTER SAD */ +#define XKB_KEY_Arabic_dad 0x05d6 /* U+0636 ARABIC LETTER DAD */ +#define XKB_KEY_Arabic_tah 0x05d7 /* U+0637 ARABIC LETTER TAH */ +#define XKB_KEY_Arabic_zah 0x05d8 /* U+0638 ARABIC LETTER ZAH */ +#define XKB_KEY_Arabic_ain 0x05d9 /* U+0639 ARABIC LETTER AIN */ +#define XKB_KEY_Arabic_ghain 0x05da /* U+063A ARABIC LETTER GHAIN */ +#define XKB_KEY_Arabic_tatweel 0x05e0 /* U+0640 ARABIC TATWEEL */ +#define XKB_KEY_Arabic_feh 0x05e1 /* U+0641 ARABIC LETTER FEH */ +#define XKB_KEY_Arabic_qaf 0x05e2 /* U+0642 ARABIC LETTER QAF */ +#define XKB_KEY_Arabic_kaf 0x05e3 /* U+0643 ARABIC LETTER KAF */ +#define XKB_KEY_Arabic_lam 0x05e4 /* U+0644 ARABIC LETTER LAM */ +#define XKB_KEY_Arabic_meem 0x05e5 /* U+0645 ARABIC LETTER MEEM */ +#define XKB_KEY_Arabic_noon 0x05e6 /* U+0646 ARABIC LETTER NOON */ +#define XKB_KEY_Arabic_ha 0x05e7 /* U+0647 ARABIC LETTER HEH */ +#define XKB_KEY_Arabic_heh 0x05e7 /* deprecated */ +#define XKB_KEY_Arabic_waw 0x05e8 /* U+0648 ARABIC LETTER WAW */ +#define XKB_KEY_Arabic_alefmaksura 0x05e9 /* U+0649 ARABIC LETTER ALEF MAKSURA */ +#define XKB_KEY_Arabic_yeh 0x05ea /* U+064A ARABIC LETTER YEH */ +#define XKB_KEY_Arabic_fathatan 0x05eb /* U+064B ARABIC FATHATAN */ +#define XKB_KEY_Arabic_dammatan 0x05ec /* U+064C ARABIC DAMMATAN */ +#define XKB_KEY_Arabic_kasratan 0x05ed /* U+064D ARABIC KASRATAN */ +#define XKB_KEY_Arabic_fatha 0x05ee /* U+064E ARABIC FATHA */ +#define XKB_KEY_Arabic_damma 0x05ef /* U+064F ARABIC DAMMA */ +#define XKB_KEY_Arabic_kasra 0x05f0 /* U+0650 ARABIC KASRA */ +#define XKB_KEY_Arabic_shadda 0x05f1 /* U+0651 ARABIC SHADDA */ +#define XKB_KEY_Arabic_sukun 0x05f2 /* U+0652 ARABIC SUKUN */ +#define XKB_KEY_Arabic_madda_above 0x1000653 /* U+0653 ARABIC MADDAH ABOVE */ +#define XKB_KEY_Arabic_hamza_above 0x1000654 /* U+0654 ARABIC HAMZA ABOVE */ +#define XKB_KEY_Arabic_hamza_below 0x1000655 /* U+0655 ARABIC HAMZA BELOW */ +#define XKB_KEY_Arabic_jeh 0x1000698 /* U+0698 ARABIC LETTER JEH */ +#define XKB_KEY_Arabic_veh 0x10006a4 /* U+06A4 ARABIC LETTER VEH */ +#define XKB_KEY_Arabic_keheh 0x10006a9 /* U+06A9 ARABIC LETTER KEHEH */ +#define XKB_KEY_Arabic_gaf 0x10006af /* U+06AF ARABIC LETTER GAF */ +#define XKB_KEY_Arabic_noon_ghunna 0x10006ba /* U+06BA ARABIC LETTER NOON GHUNNA */ +#define XKB_KEY_Arabic_heh_doachashmee 0x10006be /* U+06BE ARABIC LETTER HEH DOACHASHMEE */ +#define XKB_KEY_Farsi_yeh 0x10006cc /* U+06CC ARABIC LETTER FARSI YEH */ +#define XKB_KEY_Arabic_farsi_yeh 0x10006cc /* U+06CC ARABIC LETTER FARSI YEH */ +#define XKB_KEY_Arabic_yeh_baree 0x10006d2 /* U+06D2 ARABIC LETTER YEH BARREE */ +#define XKB_KEY_Arabic_heh_goal 0x10006c1 /* U+06C1 ARABIC LETTER HEH GOAL */ +#define XKB_KEY_Arabic_switch 0xff7e /* Alias for mode_switch */ + +/* + * Cyrillic + * Byte 3 = 6 + */ +#define XKB_KEY_Cyrillic_GHE_bar 0x1000492 /* U+0492 CYRILLIC CAPITAL LETTER GHE WITH STROKE */ +#define XKB_KEY_Cyrillic_ghe_bar 0x1000493 /* U+0493 CYRILLIC SMALL LETTER GHE WITH STROKE */ +#define XKB_KEY_Cyrillic_ZHE_descender 0x1000496 /* U+0496 CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER */ +#define XKB_KEY_Cyrillic_zhe_descender 0x1000497 /* U+0497 CYRILLIC SMALL LETTER ZHE WITH DESCENDER */ +#define XKB_KEY_Cyrillic_KA_descender 0x100049a /* U+049A CYRILLIC CAPITAL LETTER KA WITH DESCENDER */ +#define XKB_KEY_Cyrillic_ka_descender 0x100049b /* U+049B CYRILLIC SMALL LETTER KA WITH DESCENDER */ +#define XKB_KEY_Cyrillic_KA_vertstroke 0x100049c /* U+049C CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE */ +#define XKB_KEY_Cyrillic_ka_vertstroke 0x100049d /* U+049D CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE */ +#define XKB_KEY_Cyrillic_EN_descender 0x10004a2 /* U+04A2 CYRILLIC CAPITAL LETTER EN WITH DESCENDER */ +#define XKB_KEY_Cyrillic_en_descender 0x10004a3 /* U+04A3 CYRILLIC SMALL LETTER EN WITH DESCENDER */ +#define XKB_KEY_Cyrillic_U_straight 0x10004ae /* U+04AE CYRILLIC CAPITAL LETTER STRAIGHT U */ +#define XKB_KEY_Cyrillic_u_straight 0x10004af /* U+04AF CYRILLIC SMALL LETTER STRAIGHT U */ +#define XKB_KEY_Cyrillic_U_straight_bar 0x10004b0 /* U+04B0 CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE */ +#define XKB_KEY_Cyrillic_u_straight_bar 0x10004b1 /* U+04B1 CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE */ +#define XKB_KEY_Cyrillic_HA_descender 0x10004b2 /* U+04B2 CYRILLIC CAPITAL LETTER HA WITH DESCENDER */ +#define XKB_KEY_Cyrillic_ha_descender 0x10004b3 /* U+04B3 CYRILLIC SMALL LETTER HA WITH DESCENDER */ +#define XKB_KEY_Cyrillic_CHE_descender 0x10004b6 /* U+04B6 CYRILLIC CAPITAL LETTER CHE WITH DESCENDER */ +#define XKB_KEY_Cyrillic_che_descender 0x10004b7 /* U+04B7 CYRILLIC SMALL LETTER CHE WITH DESCENDER */ +#define XKB_KEY_Cyrillic_CHE_vertstroke 0x10004b8 /* U+04B8 CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE */ +#define XKB_KEY_Cyrillic_che_vertstroke 0x10004b9 /* U+04B9 CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE */ +#define XKB_KEY_Cyrillic_SHHA 0x10004ba /* U+04BA CYRILLIC CAPITAL LETTER SHHA */ +#define XKB_KEY_Cyrillic_shha 0x10004bb /* U+04BB CYRILLIC SMALL LETTER SHHA */ + +#define XKB_KEY_Cyrillic_SCHWA 0x10004d8 /* U+04D8 CYRILLIC CAPITAL LETTER SCHWA */ +#define XKB_KEY_Cyrillic_schwa 0x10004d9 /* U+04D9 CYRILLIC SMALL LETTER SCHWA */ +#define XKB_KEY_Cyrillic_I_macron 0x10004e2 /* U+04E2 CYRILLIC CAPITAL LETTER I WITH MACRON */ +#define XKB_KEY_Cyrillic_i_macron 0x10004e3 /* U+04E3 CYRILLIC SMALL LETTER I WITH MACRON */ +#define XKB_KEY_Cyrillic_O_bar 0x10004e8 /* U+04E8 CYRILLIC CAPITAL LETTER BARRED O */ +#define XKB_KEY_Cyrillic_o_bar 0x10004e9 /* U+04E9 CYRILLIC SMALL LETTER BARRED O */ +#define XKB_KEY_Cyrillic_U_macron 0x10004ee /* U+04EE CYRILLIC CAPITAL LETTER U WITH MACRON */ +#define XKB_KEY_Cyrillic_u_macron 0x10004ef /* U+04EF CYRILLIC SMALL LETTER U WITH MACRON */ + +#define XKB_KEY_Serbian_dje 0x06a1 /* U+0452 CYRILLIC SMALL LETTER DJE */ +#define XKB_KEY_Macedonia_gje 0x06a2 /* U+0453 CYRILLIC SMALL LETTER GJE */ +#define XKB_KEY_Cyrillic_io 0x06a3 /* U+0451 CYRILLIC SMALL LETTER IO */ +#define XKB_KEY_Ukrainian_ie 0x06a4 /* U+0454 CYRILLIC SMALL LETTER UKRAINIAN IE */ +#define XKB_KEY_Ukranian_je 0x06a4 /* deprecated */ +#define XKB_KEY_Macedonia_dse 0x06a5 /* U+0455 CYRILLIC SMALL LETTER DZE */ +#define XKB_KEY_Ukrainian_i 0x06a6 /* U+0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ +#define XKB_KEY_Ukranian_i 0x06a6 /* deprecated */ +#define XKB_KEY_Ukrainian_yi 0x06a7 /* U+0457 CYRILLIC SMALL LETTER YI */ +#define XKB_KEY_Ukranian_yi 0x06a7 /* deprecated */ +#define XKB_KEY_Cyrillic_je 0x06a8 /* U+0458 CYRILLIC SMALL LETTER JE */ +#define XKB_KEY_Serbian_je 0x06a8 /* deprecated */ +#define XKB_KEY_Cyrillic_lje 0x06a9 /* U+0459 CYRILLIC SMALL LETTER LJE */ +#define XKB_KEY_Serbian_lje 0x06a9 /* deprecated */ +#define XKB_KEY_Cyrillic_nje 0x06aa /* U+045A CYRILLIC SMALL LETTER NJE */ +#define XKB_KEY_Serbian_nje 0x06aa /* deprecated */ +#define XKB_KEY_Serbian_tshe 0x06ab /* U+045B CYRILLIC SMALL LETTER TSHE */ +#define XKB_KEY_Macedonia_kje 0x06ac /* U+045C CYRILLIC SMALL LETTER KJE */ +#define XKB_KEY_Ukrainian_ghe_with_upturn 0x06ad /* U+0491 CYRILLIC SMALL LETTER GHE WITH UPTURN */ +#define XKB_KEY_Byelorussian_shortu 0x06ae /* U+045E CYRILLIC SMALL LETTER SHORT U */ +#define XKB_KEY_Cyrillic_dzhe 0x06af /* U+045F CYRILLIC SMALL LETTER DZHE */ +#define XKB_KEY_Serbian_dze 0x06af /* deprecated */ +#define XKB_KEY_numerosign 0x06b0 /* U+2116 NUMERO SIGN */ +#define XKB_KEY_Serbian_DJE 0x06b1 /* U+0402 CYRILLIC CAPITAL LETTER DJE */ +#define XKB_KEY_Macedonia_GJE 0x06b2 /* U+0403 CYRILLIC CAPITAL LETTER GJE */ +#define XKB_KEY_Cyrillic_IO 0x06b3 /* U+0401 CYRILLIC CAPITAL LETTER IO */ +#define XKB_KEY_Ukrainian_IE 0x06b4 /* U+0404 CYRILLIC CAPITAL LETTER UKRAINIAN IE */ +#define XKB_KEY_Ukranian_JE 0x06b4 /* deprecated */ +#define XKB_KEY_Macedonia_DSE 0x06b5 /* U+0405 CYRILLIC CAPITAL LETTER DZE */ +#define XKB_KEY_Ukrainian_I 0x06b6 /* U+0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ +#define XKB_KEY_Ukranian_I 0x06b6 /* deprecated */ +#define XKB_KEY_Ukrainian_YI 0x06b7 /* U+0407 CYRILLIC CAPITAL LETTER YI */ +#define XKB_KEY_Ukranian_YI 0x06b7 /* deprecated */ +#define XKB_KEY_Cyrillic_JE 0x06b8 /* U+0408 CYRILLIC CAPITAL LETTER JE */ +#define XKB_KEY_Serbian_JE 0x06b8 /* deprecated */ +#define XKB_KEY_Cyrillic_LJE 0x06b9 /* U+0409 CYRILLIC CAPITAL LETTER LJE */ +#define XKB_KEY_Serbian_LJE 0x06b9 /* deprecated */ +#define XKB_KEY_Cyrillic_NJE 0x06ba /* U+040A CYRILLIC CAPITAL LETTER NJE */ +#define XKB_KEY_Serbian_NJE 0x06ba /* deprecated */ +#define XKB_KEY_Serbian_TSHE 0x06bb /* U+040B CYRILLIC CAPITAL LETTER TSHE */ +#define XKB_KEY_Macedonia_KJE 0x06bc /* U+040C CYRILLIC CAPITAL LETTER KJE */ +#define XKB_KEY_Ukrainian_GHE_WITH_UPTURN 0x06bd /* U+0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN */ +#define XKB_KEY_Byelorussian_SHORTU 0x06be /* U+040E CYRILLIC CAPITAL LETTER SHORT U */ +#define XKB_KEY_Cyrillic_DZHE 0x06bf /* U+040F CYRILLIC CAPITAL LETTER DZHE */ +#define XKB_KEY_Serbian_DZE 0x06bf /* deprecated */ +#define XKB_KEY_Cyrillic_yu 0x06c0 /* U+044E CYRILLIC SMALL LETTER YU */ +#define XKB_KEY_Cyrillic_a 0x06c1 /* U+0430 CYRILLIC SMALL LETTER A */ +#define XKB_KEY_Cyrillic_be 0x06c2 /* U+0431 CYRILLIC SMALL LETTER BE */ +#define XKB_KEY_Cyrillic_tse 0x06c3 /* U+0446 CYRILLIC SMALL LETTER TSE */ +#define XKB_KEY_Cyrillic_de 0x06c4 /* U+0434 CYRILLIC SMALL LETTER DE */ +#define XKB_KEY_Cyrillic_ie 0x06c5 /* U+0435 CYRILLIC SMALL LETTER IE */ +#define XKB_KEY_Cyrillic_ef 0x06c6 /* U+0444 CYRILLIC SMALL LETTER EF */ +#define XKB_KEY_Cyrillic_ghe 0x06c7 /* U+0433 CYRILLIC SMALL LETTER GHE */ +#define XKB_KEY_Cyrillic_ha 0x06c8 /* U+0445 CYRILLIC SMALL LETTER HA */ +#define XKB_KEY_Cyrillic_i 0x06c9 /* U+0438 CYRILLIC SMALL LETTER I */ +#define XKB_KEY_Cyrillic_shorti 0x06ca /* U+0439 CYRILLIC SMALL LETTER SHORT I */ +#define XKB_KEY_Cyrillic_ka 0x06cb /* U+043A CYRILLIC SMALL LETTER KA */ +#define XKB_KEY_Cyrillic_el 0x06cc /* U+043B CYRILLIC SMALL LETTER EL */ +#define XKB_KEY_Cyrillic_em 0x06cd /* U+043C CYRILLIC SMALL LETTER EM */ +#define XKB_KEY_Cyrillic_en 0x06ce /* U+043D CYRILLIC SMALL LETTER EN */ +#define XKB_KEY_Cyrillic_o 0x06cf /* U+043E CYRILLIC SMALL LETTER O */ +#define XKB_KEY_Cyrillic_pe 0x06d0 /* U+043F CYRILLIC SMALL LETTER PE */ +#define XKB_KEY_Cyrillic_ya 0x06d1 /* U+044F CYRILLIC SMALL LETTER YA */ +#define XKB_KEY_Cyrillic_er 0x06d2 /* U+0440 CYRILLIC SMALL LETTER ER */ +#define XKB_KEY_Cyrillic_es 0x06d3 /* U+0441 CYRILLIC SMALL LETTER ES */ +#define XKB_KEY_Cyrillic_te 0x06d4 /* U+0442 CYRILLIC SMALL LETTER TE */ +#define XKB_KEY_Cyrillic_u 0x06d5 /* U+0443 CYRILLIC SMALL LETTER U */ +#define XKB_KEY_Cyrillic_zhe 0x06d6 /* U+0436 CYRILLIC SMALL LETTER ZHE */ +#define XKB_KEY_Cyrillic_ve 0x06d7 /* U+0432 CYRILLIC SMALL LETTER VE */ +#define XKB_KEY_Cyrillic_softsign 0x06d8 /* U+044C CYRILLIC SMALL LETTER SOFT SIGN */ +#define XKB_KEY_Cyrillic_yeru 0x06d9 /* U+044B CYRILLIC SMALL LETTER YERU */ +#define XKB_KEY_Cyrillic_ze 0x06da /* U+0437 CYRILLIC SMALL LETTER ZE */ +#define XKB_KEY_Cyrillic_sha 0x06db /* U+0448 CYRILLIC SMALL LETTER SHA */ +#define XKB_KEY_Cyrillic_e 0x06dc /* U+044D CYRILLIC SMALL LETTER E */ +#define XKB_KEY_Cyrillic_shcha 0x06dd /* U+0449 CYRILLIC SMALL LETTER SHCHA */ +#define XKB_KEY_Cyrillic_che 0x06de /* U+0447 CYRILLIC SMALL LETTER CHE */ +#define XKB_KEY_Cyrillic_hardsign 0x06df /* U+044A CYRILLIC SMALL LETTER HARD SIGN */ +#define XKB_KEY_Cyrillic_YU 0x06e0 /* U+042E CYRILLIC CAPITAL LETTER YU */ +#define XKB_KEY_Cyrillic_A 0x06e1 /* U+0410 CYRILLIC CAPITAL LETTER A */ +#define XKB_KEY_Cyrillic_BE 0x06e2 /* U+0411 CYRILLIC CAPITAL LETTER BE */ +#define XKB_KEY_Cyrillic_TSE 0x06e3 /* U+0426 CYRILLIC CAPITAL LETTER TSE */ +#define XKB_KEY_Cyrillic_DE 0x06e4 /* U+0414 CYRILLIC CAPITAL LETTER DE */ +#define XKB_KEY_Cyrillic_IE 0x06e5 /* U+0415 CYRILLIC CAPITAL LETTER IE */ +#define XKB_KEY_Cyrillic_EF 0x06e6 /* U+0424 CYRILLIC CAPITAL LETTER EF */ +#define XKB_KEY_Cyrillic_GHE 0x06e7 /* U+0413 CYRILLIC CAPITAL LETTER GHE */ +#define XKB_KEY_Cyrillic_HA 0x06e8 /* U+0425 CYRILLIC CAPITAL LETTER HA */ +#define XKB_KEY_Cyrillic_I 0x06e9 /* U+0418 CYRILLIC CAPITAL LETTER I */ +#define XKB_KEY_Cyrillic_SHORTI 0x06ea /* U+0419 CYRILLIC CAPITAL LETTER SHORT I */ +#define XKB_KEY_Cyrillic_KA 0x06eb /* U+041A CYRILLIC CAPITAL LETTER KA */ +#define XKB_KEY_Cyrillic_EL 0x06ec /* U+041B CYRILLIC CAPITAL LETTER EL */ +#define XKB_KEY_Cyrillic_EM 0x06ed /* U+041C CYRILLIC CAPITAL LETTER EM */ +#define XKB_KEY_Cyrillic_EN 0x06ee /* U+041D CYRILLIC CAPITAL LETTER EN */ +#define XKB_KEY_Cyrillic_O 0x06ef /* U+041E CYRILLIC CAPITAL LETTER O */ +#define XKB_KEY_Cyrillic_PE 0x06f0 /* U+041F CYRILLIC CAPITAL LETTER PE */ +#define XKB_KEY_Cyrillic_YA 0x06f1 /* U+042F CYRILLIC CAPITAL LETTER YA */ +#define XKB_KEY_Cyrillic_ER 0x06f2 /* U+0420 CYRILLIC CAPITAL LETTER ER */ +#define XKB_KEY_Cyrillic_ES 0x06f3 /* U+0421 CYRILLIC CAPITAL LETTER ES */ +#define XKB_KEY_Cyrillic_TE 0x06f4 /* U+0422 CYRILLIC CAPITAL LETTER TE */ +#define XKB_KEY_Cyrillic_U 0x06f5 /* U+0423 CYRILLIC CAPITAL LETTER U */ +#define XKB_KEY_Cyrillic_ZHE 0x06f6 /* U+0416 CYRILLIC CAPITAL LETTER ZHE */ +#define XKB_KEY_Cyrillic_VE 0x06f7 /* U+0412 CYRILLIC CAPITAL LETTER VE */ +#define XKB_KEY_Cyrillic_SOFTSIGN 0x06f8 /* U+042C CYRILLIC CAPITAL LETTER SOFT SIGN */ +#define XKB_KEY_Cyrillic_YERU 0x06f9 /* U+042B CYRILLIC CAPITAL LETTER YERU */ +#define XKB_KEY_Cyrillic_ZE 0x06fa /* U+0417 CYRILLIC CAPITAL LETTER ZE */ +#define XKB_KEY_Cyrillic_SHA 0x06fb /* U+0428 CYRILLIC CAPITAL LETTER SHA */ +#define XKB_KEY_Cyrillic_E 0x06fc /* U+042D CYRILLIC CAPITAL LETTER E */ +#define XKB_KEY_Cyrillic_SHCHA 0x06fd /* U+0429 CYRILLIC CAPITAL LETTER SHCHA */ +#define XKB_KEY_Cyrillic_CHE 0x06fe /* U+0427 CYRILLIC CAPITAL LETTER CHE */ +#define XKB_KEY_Cyrillic_HARDSIGN 0x06ff /* U+042A CYRILLIC CAPITAL LETTER HARD SIGN */ + +/* + * Greek + * (based on an early draft of, and not quite identical to, ISO/IEC 8859-7) + * Byte 3 = 7 + */ + +#define XKB_KEY_Greek_ALPHAaccent 0x07a1 /* U+0386 GREEK CAPITAL LETTER ALPHA WITH TONOS */ +#define XKB_KEY_Greek_EPSILONaccent 0x07a2 /* U+0388 GREEK CAPITAL LETTER EPSILON WITH TONOS */ +#define XKB_KEY_Greek_ETAaccent 0x07a3 /* U+0389 GREEK CAPITAL LETTER ETA WITH TONOS */ +#define XKB_KEY_Greek_IOTAaccent 0x07a4 /* U+038A GREEK CAPITAL LETTER IOTA WITH TONOS */ +#define XKB_KEY_Greek_IOTAdieresis 0x07a5 /* U+03AA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */ +#define XKB_KEY_Greek_IOTAdiaeresis 0x07a5 /* old typo */ +#define XKB_KEY_Greek_OMICRONaccent 0x07a7 /* U+038C GREEK CAPITAL LETTER OMICRON WITH TONOS */ +#define XKB_KEY_Greek_UPSILONaccent 0x07a8 /* U+038E GREEK CAPITAL LETTER UPSILON WITH TONOS */ +#define XKB_KEY_Greek_UPSILONdieresis 0x07a9 /* U+03AB GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */ +#define XKB_KEY_Greek_OMEGAaccent 0x07ab /* U+038F GREEK CAPITAL LETTER OMEGA WITH TONOS */ +#define XKB_KEY_Greek_accentdieresis 0x07ae /* U+0385 GREEK DIALYTIKA TONOS */ +#define XKB_KEY_Greek_horizbar 0x07af /* U+2015 HORIZONTAL BAR */ +#define XKB_KEY_Greek_alphaaccent 0x07b1 /* U+03AC GREEK SMALL LETTER ALPHA WITH TONOS */ +#define XKB_KEY_Greek_epsilonaccent 0x07b2 /* U+03AD GREEK SMALL LETTER EPSILON WITH TONOS */ +#define XKB_KEY_Greek_etaaccent 0x07b3 /* U+03AE GREEK SMALL LETTER ETA WITH TONOS */ +#define XKB_KEY_Greek_iotaaccent 0x07b4 /* U+03AF GREEK SMALL LETTER IOTA WITH TONOS */ +#define XKB_KEY_Greek_iotadieresis 0x07b5 /* U+03CA GREEK SMALL LETTER IOTA WITH DIALYTIKA */ +#define XKB_KEY_Greek_iotaaccentdieresis 0x07b6 /* U+0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */ +#define XKB_KEY_Greek_omicronaccent 0x07b7 /* U+03CC GREEK SMALL LETTER OMICRON WITH TONOS */ +#define XKB_KEY_Greek_upsilonaccent 0x07b8 /* U+03CD GREEK SMALL LETTER UPSILON WITH TONOS */ +#define XKB_KEY_Greek_upsilondieresis 0x07b9 /* U+03CB GREEK SMALL LETTER UPSILON WITH DIALYTIKA */ +#define XKB_KEY_Greek_upsilonaccentdieresis 0x07ba /* U+03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */ +#define XKB_KEY_Greek_omegaaccent 0x07bb /* U+03CE GREEK SMALL LETTER OMEGA WITH TONOS */ +#define XKB_KEY_Greek_ALPHA 0x07c1 /* U+0391 GREEK CAPITAL LETTER ALPHA */ +#define XKB_KEY_Greek_BETA 0x07c2 /* U+0392 GREEK CAPITAL LETTER BETA */ +#define XKB_KEY_Greek_GAMMA 0x07c3 /* U+0393 GREEK CAPITAL LETTER GAMMA */ +#define XKB_KEY_Greek_DELTA 0x07c4 /* U+0394 GREEK CAPITAL LETTER DELTA */ +#define XKB_KEY_Greek_EPSILON 0x07c5 /* U+0395 GREEK CAPITAL LETTER EPSILON */ +#define XKB_KEY_Greek_ZETA 0x07c6 /* U+0396 GREEK CAPITAL LETTER ZETA */ +#define XKB_KEY_Greek_ETA 0x07c7 /* U+0397 GREEK CAPITAL LETTER ETA */ +#define XKB_KEY_Greek_THETA 0x07c8 /* U+0398 GREEK CAPITAL LETTER THETA */ +#define XKB_KEY_Greek_IOTA 0x07c9 /* U+0399 GREEK CAPITAL LETTER IOTA */ +#define XKB_KEY_Greek_KAPPA 0x07ca /* U+039A GREEK CAPITAL LETTER KAPPA */ +#define XKB_KEY_Greek_LAMDA 0x07cb /* U+039B GREEK CAPITAL LETTER LAMDA */ +#define XKB_KEY_Greek_LAMBDA 0x07cb /* U+039B GREEK CAPITAL LETTER LAMDA */ +#define XKB_KEY_Greek_MU 0x07cc /* U+039C GREEK CAPITAL LETTER MU */ +#define XKB_KEY_Greek_NU 0x07cd /* U+039D GREEK CAPITAL LETTER NU */ +#define XKB_KEY_Greek_XI 0x07ce /* U+039E GREEK CAPITAL LETTER XI */ +#define XKB_KEY_Greek_OMICRON 0x07cf /* U+039F GREEK CAPITAL LETTER OMICRON */ +#define XKB_KEY_Greek_PI 0x07d0 /* U+03A0 GREEK CAPITAL LETTER PI */ +#define XKB_KEY_Greek_RHO 0x07d1 /* U+03A1 GREEK CAPITAL LETTER RHO */ +#define XKB_KEY_Greek_SIGMA 0x07d2 /* U+03A3 GREEK CAPITAL LETTER SIGMA */ +#define XKB_KEY_Greek_TAU 0x07d4 /* U+03A4 GREEK CAPITAL LETTER TAU */ +#define XKB_KEY_Greek_UPSILON 0x07d5 /* U+03A5 GREEK CAPITAL LETTER UPSILON */ +#define XKB_KEY_Greek_PHI 0x07d6 /* U+03A6 GREEK CAPITAL LETTER PHI */ +#define XKB_KEY_Greek_CHI 0x07d7 /* U+03A7 GREEK CAPITAL LETTER CHI */ +#define XKB_KEY_Greek_PSI 0x07d8 /* U+03A8 GREEK CAPITAL LETTER PSI */ +#define XKB_KEY_Greek_OMEGA 0x07d9 /* U+03A9 GREEK CAPITAL LETTER OMEGA */ +#define XKB_KEY_Greek_alpha 0x07e1 /* U+03B1 GREEK SMALL LETTER ALPHA */ +#define XKB_KEY_Greek_beta 0x07e2 /* U+03B2 GREEK SMALL LETTER BETA */ +#define XKB_KEY_Greek_gamma 0x07e3 /* U+03B3 GREEK SMALL LETTER GAMMA */ +#define XKB_KEY_Greek_delta 0x07e4 /* U+03B4 GREEK SMALL LETTER DELTA */ +#define XKB_KEY_Greek_epsilon 0x07e5 /* U+03B5 GREEK SMALL LETTER EPSILON */ +#define XKB_KEY_Greek_zeta 0x07e6 /* U+03B6 GREEK SMALL LETTER ZETA */ +#define XKB_KEY_Greek_eta 0x07e7 /* U+03B7 GREEK SMALL LETTER ETA */ +#define XKB_KEY_Greek_theta 0x07e8 /* U+03B8 GREEK SMALL LETTER THETA */ +#define XKB_KEY_Greek_iota 0x07e9 /* U+03B9 GREEK SMALL LETTER IOTA */ +#define XKB_KEY_Greek_kappa 0x07ea /* U+03BA GREEK SMALL LETTER KAPPA */ +#define XKB_KEY_Greek_lamda 0x07eb /* U+03BB GREEK SMALL LETTER LAMDA */ +#define XKB_KEY_Greek_lambda 0x07eb /* U+03BB GREEK SMALL LETTER LAMDA */ +#define XKB_KEY_Greek_mu 0x07ec /* U+03BC GREEK SMALL LETTER MU */ +#define XKB_KEY_Greek_nu 0x07ed /* U+03BD GREEK SMALL LETTER NU */ +#define XKB_KEY_Greek_xi 0x07ee /* U+03BE GREEK SMALL LETTER XI */ +#define XKB_KEY_Greek_omicron 0x07ef /* U+03BF GREEK SMALL LETTER OMICRON */ +#define XKB_KEY_Greek_pi 0x07f0 /* U+03C0 GREEK SMALL LETTER PI */ +#define XKB_KEY_Greek_rho 0x07f1 /* U+03C1 GREEK SMALL LETTER RHO */ +#define XKB_KEY_Greek_sigma 0x07f2 /* U+03C3 GREEK SMALL LETTER SIGMA */ +#define XKB_KEY_Greek_finalsmallsigma 0x07f3 /* U+03C2 GREEK SMALL LETTER FINAL SIGMA */ +#define XKB_KEY_Greek_tau 0x07f4 /* U+03C4 GREEK SMALL LETTER TAU */ +#define XKB_KEY_Greek_upsilon 0x07f5 /* U+03C5 GREEK SMALL LETTER UPSILON */ +#define XKB_KEY_Greek_phi 0x07f6 /* U+03C6 GREEK SMALL LETTER PHI */ +#define XKB_KEY_Greek_chi 0x07f7 /* U+03C7 GREEK SMALL LETTER CHI */ +#define XKB_KEY_Greek_psi 0x07f8 /* U+03C8 GREEK SMALL LETTER PSI */ +#define XKB_KEY_Greek_omega 0x07f9 /* U+03C9 GREEK SMALL LETTER OMEGA */ +#define XKB_KEY_Greek_switch 0xff7e /* Alias for mode_switch */ + +/* + * Technical + * (from the DEC VT330/VT420 Technical Character Set, http://vt100.net/charsets/technical.html) + * Byte 3 = 8 + */ + +#define XKB_KEY_leftradical 0x08a1 /* U+23B7 RADICAL SYMBOL BOTTOM */ +#define XKB_KEY_topleftradical 0x08a2 /*(U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT)*/ +#define XKB_KEY_horizconnector 0x08a3 /*(U+2500 BOX DRAWINGS LIGHT HORIZONTAL)*/ +#define XKB_KEY_topintegral 0x08a4 /* U+2320 TOP HALF INTEGRAL */ +#define XKB_KEY_botintegral 0x08a5 /* U+2321 BOTTOM HALF INTEGRAL */ +#define XKB_KEY_vertconnector 0x08a6 /*(U+2502 BOX DRAWINGS LIGHT VERTICAL)*/ +#define XKB_KEY_topleftsqbracket 0x08a7 /* U+23A1 LEFT SQUARE BRACKET UPPER CORNER */ +#define XKB_KEY_botleftsqbracket 0x08a8 /* U+23A3 LEFT SQUARE BRACKET LOWER CORNER */ +#define XKB_KEY_toprightsqbracket 0x08a9 /* U+23A4 RIGHT SQUARE BRACKET UPPER CORNER */ +#define XKB_KEY_botrightsqbracket 0x08aa /* U+23A6 RIGHT SQUARE BRACKET LOWER CORNER */ +#define XKB_KEY_topleftparens 0x08ab /* U+239B LEFT PARENTHESIS UPPER HOOK */ +#define XKB_KEY_botleftparens 0x08ac /* U+239D LEFT PARENTHESIS LOWER HOOK */ +#define XKB_KEY_toprightparens 0x08ad /* U+239E RIGHT PARENTHESIS UPPER HOOK */ +#define XKB_KEY_botrightparens 0x08ae /* U+23A0 RIGHT PARENTHESIS LOWER HOOK */ +#define XKB_KEY_leftmiddlecurlybrace 0x08af /* U+23A8 LEFT CURLY BRACKET MIDDLE PIECE */ +#define XKB_KEY_rightmiddlecurlybrace 0x08b0 /* U+23AC RIGHT CURLY BRACKET MIDDLE PIECE */ +#define XKB_KEY_topleftsummation 0x08b1 +#define XKB_KEY_botleftsummation 0x08b2 +#define XKB_KEY_topvertsummationconnector 0x08b3 +#define XKB_KEY_botvertsummationconnector 0x08b4 +#define XKB_KEY_toprightsummation 0x08b5 +#define XKB_KEY_botrightsummation 0x08b6 +#define XKB_KEY_rightmiddlesummation 0x08b7 +#define XKB_KEY_lessthanequal 0x08bc /* U+2264 LESS-THAN OR EQUAL TO */ +#define XKB_KEY_notequal 0x08bd /* U+2260 NOT EQUAL TO */ +#define XKB_KEY_greaterthanequal 0x08be /* U+2265 GREATER-THAN OR EQUAL TO */ +#define XKB_KEY_integral 0x08bf /* U+222B INTEGRAL */ +#define XKB_KEY_therefore 0x08c0 /* U+2234 THEREFORE */ +#define XKB_KEY_variation 0x08c1 /* U+221D PROPORTIONAL TO */ +#define XKB_KEY_infinity 0x08c2 /* U+221E INFINITY */ +#define XKB_KEY_nabla 0x08c5 /* U+2207 NABLA */ +#define XKB_KEY_approximate 0x08c8 /* U+223C TILDE OPERATOR */ +#define XKB_KEY_similarequal 0x08c9 /* U+2243 ASYMPTOTICALLY EQUAL TO */ +#define XKB_KEY_ifonlyif 0x08cd /* U+21D4 LEFT RIGHT DOUBLE ARROW */ +#define XKB_KEY_implies 0x08ce /* U+21D2 RIGHTWARDS DOUBLE ARROW */ +#define XKB_KEY_identical 0x08cf /* U+2261 IDENTICAL TO */ +#define XKB_KEY_radical 0x08d6 /* U+221A SQUARE ROOT */ +#define XKB_KEY_includedin 0x08da /* U+2282 SUBSET OF */ +#define XKB_KEY_includes 0x08db /* U+2283 SUPERSET OF */ +#define XKB_KEY_intersection 0x08dc /* U+2229 INTERSECTION */ +#define XKB_KEY_union 0x08dd /* U+222A UNION */ +#define XKB_KEY_logicaland 0x08de /* U+2227 LOGICAL AND */ +#define XKB_KEY_logicalor 0x08df /* U+2228 LOGICAL OR */ +#define XKB_KEY_partialderivative 0x08ef /* U+2202 PARTIAL DIFFERENTIAL */ +#define XKB_KEY_function 0x08f6 /* U+0192 LATIN SMALL LETTER F WITH HOOK */ +#define XKB_KEY_leftarrow 0x08fb /* U+2190 LEFTWARDS ARROW */ +#define XKB_KEY_uparrow 0x08fc /* U+2191 UPWARDS ARROW */ +#define XKB_KEY_rightarrow 0x08fd /* U+2192 RIGHTWARDS ARROW */ +#define XKB_KEY_downarrow 0x08fe /* U+2193 DOWNWARDS ARROW */ + +/* + * Special + * (from the DEC VT100 Special Graphics Character Set) + * Byte 3 = 9 + */ + +#define XKB_KEY_blank 0x09df +#define XKB_KEY_soliddiamond 0x09e0 /* U+25C6 BLACK DIAMOND */ +#define XKB_KEY_checkerboard 0x09e1 /* U+2592 MEDIUM SHADE */ +#define XKB_KEY_ht 0x09e2 /* U+2409 SYMBOL FOR HORIZONTAL TABULATION */ +#define XKB_KEY_ff 0x09e3 /* U+240C SYMBOL FOR FORM FEED */ +#define XKB_KEY_cr 0x09e4 /* U+240D SYMBOL FOR CARRIAGE RETURN */ +#define XKB_KEY_lf 0x09e5 /* U+240A SYMBOL FOR LINE FEED */ +#define XKB_KEY_nl 0x09e8 /* U+2424 SYMBOL FOR NEWLINE */ +#define XKB_KEY_vt 0x09e9 /* U+240B SYMBOL FOR VERTICAL TABULATION */ +#define XKB_KEY_lowrightcorner 0x09ea /* U+2518 BOX DRAWINGS LIGHT UP AND LEFT */ +#define XKB_KEY_uprightcorner 0x09eb /* U+2510 BOX DRAWINGS LIGHT DOWN AND LEFT */ +#define XKB_KEY_upleftcorner 0x09ec /* U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT */ +#define XKB_KEY_lowleftcorner 0x09ed /* U+2514 BOX DRAWINGS LIGHT UP AND RIGHT */ +#define XKB_KEY_crossinglines 0x09ee /* U+253C BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */ +#define XKB_KEY_horizlinescan1 0x09ef /* U+23BA HORIZONTAL SCAN LINE-1 */ +#define XKB_KEY_horizlinescan3 0x09f0 /* U+23BB HORIZONTAL SCAN LINE-3 */ +#define XKB_KEY_horizlinescan5 0x09f1 /* U+2500 BOX DRAWINGS LIGHT HORIZONTAL */ +#define XKB_KEY_horizlinescan7 0x09f2 /* U+23BC HORIZONTAL SCAN LINE-7 */ +#define XKB_KEY_horizlinescan9 0x09f3 /* U+23BD HORIZONTAL SCAN LINE-9 */ +#define XKB_KEY_leftt 0x09f4 /* U+251C BOX DRAWINGS LIGHT VERTICAL AND RIGHT */ +#define XKB_KEY_rightt 0x09f5 /* U+2524 BOX DRAWINGS LIGHT VERTICAL AND LEFT */ +#define XKB_KEY_bott 0x09f6 /* U+2534 BOX DRAWINGS LIGHT UP AND HORIZONTAL */ +#define XKB_KEY_topt 0x09f7 /* U+252C BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */ +#define XKB_KEY_vertbar 0x09f8 /* U+2502 BOX DRAWINGS LIGHT VERTICAL */ + +/* + * Publishing + * (these are probably from a long forgotten DEC Publishing + * font that once shipped with DECwrite) + * Byte 3 = 0x0a + */ + +#define XKB_KEY_emspace 0x0aa1 /* U+2003 EM SPACE */ +#define XKB_KEY_enspace 0x0aa2 /* U+2002 EN SPACE */ +#define XKB_KEY_em3space 0x0aa3 /* U+2004 THREE-PER-EM SPACE */ +#define XKB_KEY_em4space 0x0aa4 /* U+2005 FOUR-PER-EM SPACE */ +#define XKB_KEY_digitspace 0x0aa5 /* U+2007 FIGURE SPACE */ +#define XKB_KEY_punctspace 0x0aa6 /* U+2008 PUNCTUATION SPACE */ +#define XKB_KEY_thinspace 0x0aa7 /* U+2009 THIN SPACE */ +#define XKB_KEY_hairspace 0x0aa8 /* U+200A HAIR SPACE */ +#define XKB_KEY_emdash 0x0aa9 /* U+2014 EM DASH */ +#define XKB_KEY_endash 0x0aaa /* U+2013 EN DASH */ +#define XKB_KEY_signifblank 0x0aac /*(U+2423 OPEN BOX)*/ +#define XKB_KEY_ellipsis 0x0aae /* U+2026 HORIZONTAL ELLIPSIS */ +#define XKB_KEY_doubbaselinedot 0x0aaf /* U+2025 TWO DOT LEADER */ +#define XKB_KEY_onethird 0x0ab0 /* U+2153 VULGAR FRACTION ONE THIRD */ +#define XKB_KEY_twothirds 0x0ab1 /* U+2154 VULGAR FRACTION TWO THIRDS */ +#define XKB_KEY_onefifth 0x0ab2 /* U+2155 VULGAR FRACTION ONE FIFTH */ +#define XKB_KEY_twofifths 0x0ab3 /* U+2156 VULGAR FRACTION TWO FIFTHS */ +#define XKB_KEY_threefifths 0x0ab4 /* U+2157 VULGAR FRACTION THREE FIFTHS */ +#define XKB_KEY_fourfifths 0x0ab5 /* U+2158 VULGAR FRACTION FOUR FIFTHS */ +#define XKB_KEY_onesixth 0x0ab6 /* U+2159 VULGAR FRACTION ONE SIXTH */ +#define XKB_KEY_fivesixths 0x0ab7 /* U+215A VULGAR FRACTION FIVE SIXTHS */ +#define XKB_KEY_careof 0x0ab8 /* U+2105 CARE OF */ +#define XKB_KEY_figdash 0x0abb /* U+2012 FIGURE DASH */ +#define XKB_KEY_leftanglebracket 0x0abc /*(U+27E8 MATHEMATICAL LEFT ANGLE BRACKET)*/ +#define XKB_KEY_decimalpoint 0x0abd /*(U+002E FULL STOP)*/ +#define XKB_KEY_rightanglebracket 0x0abe /*(U+27E9 MATHEMATICAL RIGHT ANGLE BRACKET)*/ +#define XKB_KEY_marker 0x0abf +#define XKB_KEY_oneeighth 0x0ac3 /* U+215B VULGAR FRACTION ONE EIGHTH */ +#define XKB_KEY_threeeighths 0x0ac4 /* U+215C VULGAR FRACTION THREE EIGHTHS */ +#define XKB_KEY_fiveeighths 0x0ac5 /* U+215D VULGAR FRACTION FIVE EIGHTHS */ +#define XKB_KEY_seveneighths 0x0ac6 /* U+215E VULGAR FRACTION SEVEN EIGHTHS */ +#define XKB_KEY_trademark 0x0ac9 /* U+2122 TRADE MARK SIGN */ +#define XKB_KEY_signaturemark 0x0aca /*(U+2613 SALTIRE)*/ +#define XKB_KEY_trademarkincircle 0x0acb +#define XKB_KEY_leftopentriangle 0x0acc /*(U+25C1 WHITE LEFT-POINTING TRIANGLE)*/ +#define XKB_KEY_rightopentriangle 0x0acd /*(U+25B7 WHITE RIGHT-POINTING TRIANGLE)*/ +#define XKB_KEY_emopencircle 0x0ace /*(U+25CB WHITE CIRCLE)*/ +#define XKB_KEY_emopenrectangle 0x0acf /*(U+25AF WHITE VERTICAL RECTANGLE)*/ +#define XKB_KEY_leftsinglequotemark 0x0ad0 /* U+2018 LEFT SINGLE QUOTATION MARK */ +#define XKB_KEY_rightsinglequotemark 0x0ad1 /* U+2019 RIGHT SINGLE QUOTATION MARK */ +#define XKB_KEY_leftdoublequotemark 0x0ad2 /* U+201C LEFT DOUBLE QUOTATION MARK */ +#define XKB_KEY_rightdoublequotemark 0x0ad3 /* U+201D RIGHT DOUBLE QUOTATION MARK */ +#define XKB_KEY_prescription 0x0ad4 /* U+211E PRESCRIPTION TAKE */ +#define XKB_KEY_permille 0x0ad5 /* U+2030 PER MILLE SIGN */ +#define XKB_KEY_minutes 0x0ad6 /* U+2032 PRIME */ +#define XKB_KEY_seconds 0x0ad7 /* U+2033 DOUBLE PRIME */ +#define XKB_KEY_latincross 0x0ad9 /* U+271D LATIN CROSS */ +#define XKB_KEY_hexagram 0x0ada +#define XKB_KEY_filledrectbullet 0x0adb /*(U+25AC BLACK RECTANGLE)*/ +#define XKB_KEY_filledlefttribullet 0x0adc /*(U+25C0 BLACK LEFT-POINTING TRIANGLE)*/ +#define XKB_KEY_filledrighttribullet 0x0add /*(U+25B6 BLACK RIGHT-POINTING TRIANGLE)*/ +#define XKB_KEY_emfilledcircle 0x0ade /*(U+25CF BLACK CIRCLE)*/ +#define XKB_KEY_emfilledrect 0x0adf /*(U+25AE BLACK VERTICAL RECTANGLE)*/ +#define XKB_KEY_enopencircbullet 0x0ae0 /*(U+25E6 WHITE BULLET)*/ +#define XKB_KEY_enopensquarebullet 0x0ae1 /*(U+25AB WHITE SMALL SQUARE)*/ +#define XKB_KEY_openrectbullet 0x0ae2 /*(U+25AD WHITE RECTANGLE)*/ +#define XKB_KEY_opentribulletup 0x0ae3 /*(U+25B3 WHITE UP-POINTING TRIANGLE)*/ +#define XKB_KEY_opentribulletdown 0x0ae4 /*(U+25BD WHITE DOWN-POINTING TRIANGLE)*/ +#define XKB_KEY_openstar 0x0ae5 /*(U+2606 WHITE STAR)*/ +#define XKB_KEY_enfilledcircbullet 0x0ae6 /*(U+2022 BULLET)*/ +#define XKB_KEY_enfilledsqbullet 0x0ae7 /*(U+25AA BLACK SMALL SQUARE)*/ +#define XKB_KEY_filledtribulletup 0x0ae8 /*(U+25B2 BLACK UP-POINTING TRIANGLE)*/ +#define XKB_KEY_filledtribulletdown 0x0ae9 /*(U+25BC BLACK DOWN-POINTING TRIANGLE)*/ +#define XKB_KEY_leftpointer 0x0aea /*(U+261C WHITE LEFT POINTING INDEX)*/ +#define XKB_KEY_rightpointer 0x0aeb /*(U+261E WHITE RIGHT POINTING INDEX)*/ +#define XKB_KEY_club 0x0aec /* U+2663 BLACK CLUB SUIT */ +#define XKB_KEY_diamond 0x0aed /* U+2666 BLACK DIAMOND SUIT */ +#define XKB_KEY_heart 0x0aee /* U+2665 BLACK HEART SUIT */ +#define XKB_KEY_maltesecross 0x0af0 /* U+2720 MALTESE CROSS */ +#define XKB_KEY_dagger 0x0af1 /* U+2020 DAGGER */ +#define XKB_KEY_doubledagger 0x0af2 /* U+2021 DOUBLE DAGGER */ +#define XKB_KEY_checkmark 0x0af3 /* U+2713 CHECK MARK */ +#define XKB_KEY_ballotcross 0x0af4 /* U+2717 BALLOT X */ +#define XKB_KEY_musicalsharp 0x0af5 /* U+266F MUSIC SHARP SIGN */ +#define XKB_KEY_musicalflat 0x0af6 /* U+266D MUSIC FLAT SIGN */ +#define XKB_KEY_malesymbol 0x0af7 /* U+2642 MALE SIGN */ +#define XKB_KEY_femalesymbol 0x0af8 /* U+2640 FEMALE SIGN */ +#define XKB_KEY_telephone 0x0af9 /* U+260E BLACK TELEPHONE */ +#define XKB_KEY_telephonerecorder 0x0afa /* U+2315 TELEPHONE RECORDER */ +#define XKB_KEY_phonographcopyright 0x0afb /* U+2117 SOUND RECORDING COPYRIGHT */ +#define XKB_KEY_caret 0x0afc /* U+2038 CARET */ +#define XKB_KEY_singlelowquotemark 0x0afd /* U+201A SINGLE LOW-9 QUOTATION MARK */ +#define XKB_KEY_doublelowquotemark 0x0afe /* U+201E DOUBLE LOW-9 QUOTATION MARK */ +#define XKB_KEY_cursor 0x0aff + +/* + * APL + * Byte 3 = 0x0b + */ + +#define XKB_KEY_leftcaret 0x0ba3 /*(U+003C LESS-THAN SIGN)*/ +#define XKB_KEY_rightcaret 0x0ba6 /*(U+003E GREATER-THAN SIGN)*/ +#define XKB_KEY_downcaret 0x0ba8 /*(U+2228 LOGICAL OR)*/ +#define XKB_KEY_upcaret 0x0ba9 /*(U+2227 LOGICAL AND)*/ +#define XKB_KEY_overbar 0x0bc0 /*(U+00AF MACRON)*/ +#define XKB_KEY_downtack 0x0bc2 /* U+22A4 DOWN TACK */ +#define XKB_KEY_upshoe 0x0bc3 /*(U+2229 INTERSECTION)*/ +#define XKB_KEY_downstile 0x0bc4 /* U+230A LEFT FLOOR */ +#define XKB_KEY_underbar 0x0bc6 /*(U+005F LOW LINE)*/ +#define XKB_KEY_jot 0x0bca /* U+2218 RING OPERATOR */ +#define XKB_KEY_quad 0x0bcc /* U+2395 APL FUNCTIONAL SYMBOL QUAD */ +#define XKB_KEY_uptack 0x0bce /* U+22A5 UP TACK */ +#define XKB_KEY_circle 0x0bcf /* U+25CB WHITE CIRCLE */ +#define XKB_KEY_upstile 0x0bd3 /* U+2308 LEFT CEILING */ +#define XKB_KEY_downshoe 0x0bd6 /*(U+222A UNION)*/ +#define XKB_KEY_rightshoe 0x0bd8 /*(U+2283 SUPERSET OF)*/ +#define XKB_KEY_leftshoe 0x0bda /*(U+2282 SUBSET OF)*/ +#define XKB_KEY_lefttack 0x0bdc /* U+22A3 LEFT TACK */ +#define XKB_KEY_righttack 0x0bfc /* U+22A2 RIGHT TACK */ + +/* + * Hebrew + * Byte 3 = 0x0c + */ + +#define XKB_KEY_hebrew_doublelowline 0x0cdf /* U+2017 DOUBLE LOW LINE */ +#define XKB_KEY_hebrew_aleph 0x0ce0 /* U+05D0 HEBREW LETTER ALEF */ +#define XKB_KEY_hebrew_bet 0x0ce1 /* U+05D1 HEBREW LETTER BET */ +#define XKB_KEY_hebrew_beth 0x0ce1 /* deprecated */ +#define XKB_KEY_hebrew_gimel 0x0ce2 /* U+05D2 HEBREW LETTER GIMEL */ +#define XKB_KEY_hebrew_gimmel 0x0ce2 /* deprecated */ +#define XKB_KEY_hebrew_dalet 0x0ce3 /* U+05D3 HEBREW LETTER DALET */ +#define XKB_KEY_hebrew_daleth 0x0ce3 /* deprecated */ +#define XKB_KEY_hebrew_he 0x0ce4 /* U+05D4 HEBREW LETTER HE */ +#define XKB_KEY_hebrew_waw 0x0ce5 /* U+05D5 HEBREW LETTER VAV */ +#define XKB_KEY_hebrew_zain 0x0ce6 /* U+05D6 HEBREW LETTER ZAYIN */ +#define XKB_KEY_hebrew_zayin 0x0ce6 /* deprecated */ +#define XKB_KEY_hebrew_chet 0x0ce7 /* U+05D7 HEBREW LETTER HET */ +#define XKB_KEY_hebrew_het 0x0ce7 /* deprecated */ +#define XKB_KEY_hebrew_tet 0x0ce8 /* U+05D8 HEBREW LETTER TET */ +#define XKB_KEY_hebrew_teth 0x0ce8 /* deprecated */ +#define XKB_KEY_hebrew_yod 0x0ce9 /* U+05D9 HEBREW LETTER YOD */ +#define XKB_KEY_hebrew_finalkaph 0x0cea /* U+05DA HEBREW LETTER FINAL KAF */ +#define XKB_KEY_hebrew_kaph 0x0ceb /* U+05DB HEBREW LETTER KAF */ +#define XKB_KEY_hebrew_lamed 0x0cec /* U+05DC HEBREW LETTER LAMED */ +#define XKB_KEY_hebrew_finalmem 0x0ced /* U+05DD HEBREW LETTER FINAL MEM */ +#define XKB_KEY_hebrew_mem 0x0cee /* U+05DE HEBREW LETTER MEM */ +#define XKB_KEY_hebrew_finalnun 0x0cef /* U+05DF HEBREW LETTER FINAL NUN */ +#define XKB_KEY_hebrew_nun 0x0cf0 /* U+05E0 HEBREW LETTER NUN */ +#define XKB_KEY_hebrew_samech 0x0cf1 /* U+05E1 HEBREW LETTER SAMEKH */ +#define XKB_KEY_hebrew_samekh 0x0cf1 /* deprecated */ +#define XKB_KEY_hebrew_ayin 0x0cf2 /* U+05E2 HEBREW LETTER AYIN */ +#define XKB_KEY_hebrew_finalpe 0x0cf3 /* U+05E3 HEBREW LETTER FINAL PE */ +#define XKB_KEY_hebrew_pe 0x0cf4 /* U+05E4 HEBREW LETTER PE */ +#define XKB_KEY_hebrew_finalzade 0x0cf5 /* U+05E5 HEBREW LETTER FINAL TSADI */ +#define XKB_KEY_hebrew_finalzadi 0x0cf5 /* deprecated */ +#define XKB_KEY_hebrew_zade 0x0cf6 /* U+05E6 HEBREW LETTER TSADI */ +#define XKB_KEY_hebrew_zadi 0x0cf6 /* deprecated */ +#define XKB_KEY_hebrew_qoph 0x0cf7 /* U+05E7 HEBREW LETTER QOF */ +#define XKB_KEY_hebrew_kuf 0x0cf7 /* deprecated */ +#define XKB_KEY_hebrew_resh 0x0cf8 /* U+05E8 HEBREW LETTER RESH */ +#define XKB_KEY_hebrew_shin 0x0cf9 /* U+05E9 HEBREW LETTER SHIN */ +#define XKB_KEY_hebrew_taw 0x0cfa /* U+05EA HEBREW LETTER TAV */ +#define XKB_KEY_hebrew_taf 0x0cfa /* deprecated */ +#define XKB_KEY_Hebrew_switch 0xff7e /* Alias for mode_switch */ + +/* + * Thai + * Byte 3 = 0x0d + */ + +#define XKB_KEY_Thai_kokai 0x0da1 /* U+0E01 THAI CHARACTER KO KAI */ +#define XKB_KEY_Thai_khokhai 0x0da2 /* U+0E02 THAI CHARACTER KHO KHAI */ +#define XKB_KEY_Thai_khokhuat 0x0da3 /* U+0E03 THAI CHARACTER KHO KHUAT */ +#define XKB_KEY_Thai_khokhwai 0x0da4 /* U+0E04 THAI CHARACTER KHO KHWAI */ +#define XKB_KEY_Thai_khokhon 0x0da5 /* U+0E05 THAI CHARACTER KHO KHON */ +#define XKB_KEY_Thai_khorakhang 0x0da6 /* U+0E06 THAI CHARACTER KHO RAKHANG */ +#define XKB_KEY_Thai_ngongu 0x0da7 /* U+0E07 THAI CHARACTER NGO NGU */ +#define XKB_KEY_Thai_chochan 0x0da8 /* U+0E08 THAI CHARACTER CHO CHAN */ +#define XKB_KEY_Thai_choching 0x0da9 /* U+0E09 THAI CHARACTER CHO CHING */ +#define XKB_KEY_Thai_chochang 0x0daa /* U+0E0A THAI CHARACTER CHO CHANG */ +#define XKB_KEY_Thai_soso 0x0dab /* U+0E0B THAI CHARACTER SO SO */ +#define XKB_KEY_Thai_chochoe 0x0dac /* U+0E0C THAI CHARACTER CHO CHOE */ +#define XKB_KEY_Thai_yoying 0x0dad /* U+0E0D THAI CHARACTER YO YING */ +#define XKB_KEY_Thai_dochada 0x0dae /* U+0E0E THAI CHARACTER DO CHADA */ +#define XKB_KEY_Thai_topatak 0x0daf /* U+0E0F THAI CHARACTER TO PATAK */ +#define XKB_KEY_Thai_thothan 0x0db0 /* U+0E10 THAI CHARACTER THO THAN */ +#define XKB_KEY_Thai_thonangmontho 0x0db1 /* U+0E11 THAI CHARACTER THO NANGMONTHO */ +#define XKB_KEY_Thai_thophuthao 0x0db2 /* U+0E12 THAI CHARACTER THO PHUTHAO */ +#define XKB_KEY_Thai_nonen 0x0db3 /* U+0E13 THAI CHARACTER NO NEN */ +#define XKB_KEY_Thai_dodek 0x0db4 /* U+0E14 THAI CHARACTER DO DEK */ +#define XKB_KEY_Thai_totao 0x0db5 /* U+0E15 THAI CHARACTER TO TAO */ +#define XKB_KEY_Thai_thothung 0x0db6 /* U+0E16 THAI CHARACTER THO THUNG */ +#define XKB_KEY_Thai_thothahan 0x0db7 /* U+0E17 THAI CHARACTER THO THAHAN */ +#define XKB_KEY_Thai_thothong 0x0db8 /* U+0E18 THAI CHARACTER THO THONG */ +#define XKB_KEY_Thai_nonu 0x0db9 /* U+0E19 THAI CHARACTER NO NU */ +#define XKB_KEY_Thai_bobaimai 0x0dba /* U+0E1A THAI CHARACTER BO BAIMAI */ +#define XKB_KEY_Thai_popla 0x0dbb /* U+0E1B THAI CHARACTER PO PLA */ +#define XKB_KEY_Thai_phophung 0x0dbc /* U+0E1C THAI CHARACTER PHO PHUNG */ +#define XKB_KEY_Thai_fofa 0x0dbd /* U+0E1D THAI CHARACTER FO FA */ +#define XKB_KEY_Thai_phophan 0x0dbe /* U+0E1E THAI CHARACTER PHO PHAN */ +#define XKB_KEY_Thai_fofan 0x0dbf /* U+0E1F THAI CHARACTER FO FAN */ +#define XKB_KEY_Thai_phosamphao 0x0dc0 /* U+0E20 THAI CHARACTER PHO SAMPHAO */ +#define XKB_KEY_Thai_moma 0x0dc1 /* U+0E21 THAI CHARACTER MO MA */ +#define XKB_KEY_Thai_yoyak 0x0dc2 /* U+0E22 THAI CHARACTER YO YAK */ +#define XKB_KEY_Thai_rorua 0x0dc3 /* U+0E23 THAI CHARACTER RO RUA */ +#define XKB_KEY_Thai_ru 0x0dc4 /* U+0E24 THAI CHARACTER RU */ +#define XKB_KEY_Thai_loling 0x0dc5 /* U+0E25 THAI CHARACTER LO LING */ +#define XKB_KEY_Thai_lu 0x0dc6 /* U+0E26 THAI CHARACTER LU */ +#define XKB_KEY_Thai_wowaen 0x0dc7 /* U+0E27 THAI CHARACTER WO WAEN */ +#define XKB_KEY_Thai_sosala 0x0dc8 /* U+0E28 THAI CHARACTER SO SALA */ +#define XKB_KEY_Thai_sorusi 0x0dc9 /* U+0E29 THAI CHARACTER SO RUSI */ +#define XKB_KEY_Thai_sosua 0x0dca /* U+0E2A THAI CHARACTER SO SUA */ +#define XKB_KEY_Thai_hohip 0x0dcb /* U+0E2B THAI CHARACTER HO HIP */ +#define XKB_KEY_Thai_lochula 0x0dcc /* U+0E2C THAI CHARACTER LO CHULA */ +#define XKB_KEY_Thai_oang 0x0dcd /* U+0E2D THAI CHARACTER O ANG */ +#define XKB_KEY_Thai_honokhuk 0x0dce /* U+0E2E THAI CHARACTER HO NOKHUK */ +#define XKB_KEY_Thai_paiyannoi 0x0dcf /* U+0E2F THAI CHARACTER PAIYANNOI */ +#define XKB_KEY_Thai_saraa 0x0dd0 /* U+0E30 THAI CHARACTER SARA A */ +#define XKB_KEY_Thai_maihanakat 0x0dd1 /* U+0E31 THAI CHARACTER MAI HAN-AKAT */ +#define XKB_KEY_Thai_saraaa 0x0dd2 /* U+0E32 THAI CHARACTER SARA AA */ +#define XKB_KEY_Thai_saraam 0x0dd3 /* U+0E33 THAI CHARACTER SARA AM */ +#define XKB_KEY_Thai_sarai 0x0dd4 /* U+0E34 THAI CHARACTER SARA I */ +#define XKB_KEY_Thai_saraii 0x0dd5 /* U+0E35 THAI CHARACTER SARA II */ +#define XKB_KEY_Thai_saraue 0x0dd6 /* U+0E36 THAI CHARACTER SARA UE */ +#define XKB_KEY_Thai_sarauee 0x0dd7 /* U+0E37 THAI CHARACTER SARA UEE */ +#define XKB_KEY_Thai_sarau 0x0dd8 /* U+0E38 THAI CHARACTER SARA U */ +#define XKB_KEY_Thai_sarauu 0x0dd9 /* U+0E39 THAI CHARACTER SARA UU */ +#define XKB_KEY_Thai_phinthu 0x0dda /* U+0E3A THAI CHARACTER PHINTHU */ +#define XKB_KEY_Thai_maihanakat_maitho 0x0dde +#define XKB_KEY_Thai_baht 0x0ddf /* U+0E3F THAI CURRENCY SYMBOL BAHT */ +#define XKB_KEY_Thai_sarae 0x0de0 /* U+0E40 THAI CHARACTER SARA E */ +#define XKB_KEY_Thai_saraae 0x0de1 /* U+0E41 THAI CHARACTER SARA AE */ +#define XKB_KEY_Thai_sarao 0x0de2 /* U+0E42 THAI CHARACTER SARA O */ +#define XKB_KEY_Thai_saraaimaimuan 0x0de3 /* U+0E43 THAI CHARACTER SARA AI MAIMUAN */ +#define XKB_KEY_Thai_saraaimaimalai 0x0de4 /* U+0E44 THAI CHARACTER SARA AI MAIMALAI */ +#define XKB_KEY_Thai_lakkhangyao 0x0de5 /* U+0E45 THAI CHARACTER LAKKHANGYAO */ +#define XKB_KEY_Thai_maiyamok 0x0de6 /* U+0E46 THAI CHARACTER MAIYAMOK */ +#define XKB_KEY_Thai_maitaikhu 0x0de7 /* U+0E47 THAI CHARACTER MAITAIKHU */ +#define XKB_KEY_Thai_maiek 0x0de8 /* U+0E48 THAI CHARACTER MAI EK */ +#define XKB_KEY_Thai_maitho 0x0de9 /* U+0E49 THAI CHARACTER MAI THO */ +#define XKB_KEY_Thai_maitri 0x0dea /* U+0E4A THAI CHARACTER MAI TRI */ +#define XKB_KEY_Thai_maichattawa 0x0deb /* U+0E4B THAI CHARACTER MAI CHATTAWA */ +#define XKB_KEY_Thai_thanthakhat 0x0dec /* U+0E4C THAI CHARACTER THANTHAKHAT */ +#define XKB_KEY_Thai_nikhahit 0x0ded /* U+0E4D THAI CHARACTER NIKHAHIT */ +#define XKB_KEY_Thai_leksun 0x0df0 /* U+0E50 THAI DIGIT ZERO */ +#define XKB_KEY_Thai_leknung 0x0df1 /* U+0E51 THAI DIGIT ONE */ +#define XKB_KEY_Thai_leksong 0x0df2 /* U+0E52 THAI DIGIT TWO */ +#define XKB_KEY_Thai_leksam 0x0df3 /* U+0E53 THAI DIGIT THREE */ +#define XKB_KEY_Thai_leksi 0x0df4 /* U+0E54 THAI DIGIT FOUR */ +#define XKB_KEY_Thai_lekha 0x0df5 /* U+0E55 THAI DIGIT FIVE */ +#define XKB_KEY_Thai_lekhok 0x0df6 /* U+0E56 THAI DIGIT SIX */ +#define XKB_KEY_Thai_lekchet 0x0df7 /* U+0E57 THAI DIGIT SEVEN */ +#define XKB_KEY_Thai_lekpaet 0x0df8 /* U+0E58 THAI DIGIT EIGHT */ +#define XKB_KEY_Thai_lekkao 0x0df9 /* U+0E59 THAI DIGIT NINE */ + +/* + * Korean + * Byte 3 = 0x0e + */ + + +#define XKB_KEY_Hangul 0xff31 /* Hangul start/stop(toggle) */ +#define XKB_KEY_Hangul_Start 0xff32 /* Hangul start */ +#define XKB_KEY_Hangul_End 0xff33 /* Hangul end, English start */ +#define XKB_KEY_Hangul_Hanja 0xff34 /* Start Hangul->Hanja Conversion */ +#define XKB_KEY_Hangul_Jamo 0xff35 /* Hangul Jamo mode */ +#define XKB_KEY_Hangul_Romaja 0xff36 /* Hangul Romaja mode */ +#define XKB_KEY_Hangul_Codeinput 0xff37 /* Hangul code input mode */ +#define XKB_KEY_Hangul_Jeonja 0xff38 /* Jeonja mode */ +#define XKB_KEY_Hangul_Banja 0xff39 /* Banja mode */ +#define XKB_KEY_Hangul_PreHanja 0xff3a /* Pre Hanja conversion */ +#define XKB_KEY_Hangul_PostHanja 0xff3b /* Post Hanja conversion */ +#define XKB_KEY_Hangul_SingleCandidate 0xff3c /* Single candidate */ +#define XKB_KEY_Hangul_MultipleCandidate 0xff3d /* Multiple candidate */ +#define XKB_KEY_Hangul_PreviousCandidate 0xff3e /* Previous candidate */ +#define XKB_KEY_Hangul_Special 0xff3f /* Special symbols */ +#define XKB_KEY_Hangul_switch 0xff7e /* Alias for mode_switch */ + +/* Hangul Consonant Characters */ +#define XKB_KEY_Hangul_Kiyeog 0x0ea1 +#define XKB_KEY_Hangul_SsangKiyeog 0x0ea2 +#define XKB_KEY_Hangul_KiyeogSios 0x0ea3 +#define XKB_KEY_Hangul_Nieun 0x0ea4 +#define XKB_KEY_Hangul_NieunJieuj 0x0ea5 +#define XKB_KEY_Hangul_NieunHieuh 0x0ea6 +#define XKB_KEY_Hangul_Dikeud 0x0ea7 +#define XKB_KEY_Hangul_SsangDikeud 0x0ea8 +#define XKB_KEY_Hangul_Rieul 0x0ea9 +#define XKB_KEY_Hangul_RieulKiyeog 0x0eaa +#define XKB_KEY_Hangul_RieulMieum 0x0eab +#define XKB_KEY_Hangul_RieulPieub 0x0eac +#define XKB_KEY_Hangul_RieulSios 0x0ead +#define XKB_KEY_Hangul_RieulTieut 0x0eae +#define XKB_KEY_Hangul_RieulPhieuf 0x0eaf +#define XKB_KEY_Hangul_RieulHieuh 0x0eb0 +#define XKB_KEY_Hangul_Mieum 0x0eb1 +#define XKB_KEY_Hangul_Pieub 0x0eb2 +#define XKB_KEY_Hangul_SsangPieub 0x0eb3 +#define XKB_KEY_Hangul_PieubSios 0x0eb4 +#define XKB_KEY_Hangul_Sios 0x0eb5 +#define XKB_KEY_Hangul_SsangSios 0x0eb6 +#define XKB_KEY_Hangul_Ieung 0x0eb7 +#define XKB_KEY_Hangul_Jieuj 0x0eb8 +#define XKB_KEY_Hangul_SsangJieuj 0x0eb9 +#define XKB_KEY_Hangul_Cieuc 0x0eba +#define XKB_KEY_Hangul_Khieuq 0x0ebb +#define XKB_KEY_Hangul_Tieut 0x0ebc +#define XKB_KEY_Hangul_Phieuf 0x0ebd +#define XKB_KEY_Hangul_Hieuh 0x0ebe + +/* Hangul Vowel Characters */ +#define XKB_KEY_Hangul_A 0x0ebf +#define XKB_KEY_Hangul_AE 0x0ec0 +#define XKB_KEY_Hangul_YA 0x0ec1 +#define XKB_KEY_Hangul_YAE 0x0ec2 +#define XKB_KEY_Hangul_EO 0x0ec3 +#define XKB_KEY_Hangul_E 0x0ec4 +#define XKB_KEY_Hangul_YEO 0x0ec5 +#define XKB_KEY_Hangul_YE 0x0ec6 +#define XKB_KEY_Hangul_O 0x0ec7 +#define XKB_KEY_Hangul_WA 0x0ec8 +#define XKB_KEY_Hangul_WAE 0x0ec9 +#define XKB_KEY_Hangul_OE 0x0eca +#define XKB_KEY_Hangul_YO 0x0ecb +#define XKB_KEY_Hangul_U 0x0ecc +#define XKB_KEY_Hangul_WEO 0x0ecd +#define XKB_KEY_Hangul_WE 0x0ece +#define XKB_KEY_Hangul_WI 0x0ecf +#define XKB_KEY_Hangul_YU 0x0ed0 +#define XKB_KEY_Hangul_EU 0x0ed1 +#define XKB_KEY_Hangul_YI 0x0ed2 +#define XKB_KEY_Hangul_I 0x0ed3 + +/* Hangul syllable-final (JongSeong) Characters */ +#define XKB_KEY_Hangul_J_Kiyeog 0x0ed4 +#define XKB_KEY_Hangul_J_SsangKiyeog 0x0ed5 +#define XKB_KEY_Hangul_J_KiyeogSios 0x0ed6 +#define XKB_KEY_Hangul_J_Nieun 0x0ed7 +#define XKB_KEY_Hangul_J_NieunJieuj 0x0ed8 +#define XKB_KEY_Hangul_J_NieunHieuh 0x0ed9 +#define XKB_KEY_Hangul_J_Dikeud 0x0eda +#define XKB_KEY_Hangul_J_Rieul 0x0edb +#define XKB_KEY_Hangul_J_RieulKiyeog 0x0edc +#define XKB_KEY_Hangul_J_RieulMieum 0x0edd +#define XKB_KEY_Hangul_J_RieulPieub 0x0ede +#define XKB_KEY_Hangul_J_RieulSios 0x0edf +#define XKB_KEY_Hangul_J_RieulTieut 0x0ee0 +#define XKB_KEY_Hangul_J_RieulPhieuf 0x0ee1 +#define XKB_KEY_Hangul_J_RieulHieuh 0x0ee2 +#define XKB_KEY_Hangul_J_Mieum 0x0ee3 +#define XKB_KEY_Hangul_J_Pieub 0x0ee4 +#define XKB_KEY_Hangul_J_PieubSios 0x0ee5 +#define XKB_KEY_Hangul_J_Sios 0x0ee6 +#define XKB_KEY_Hangul_J_SsangSios 0x0ee7 +#define XKB_KEY_Hangul_J_Ieung 0x0ee8 +#define XKB_KEY_Hangul_J_Jieuj 0x0ee9 +#define XKB_KEY_Hangul_J_Cieuc 0x0eea +#define XKB_KEY_Hangul_J_Khieuq 0x0eeb +#define XKB_KEY_Hangul_J_Tieut 0x0eec +#define XKB_KEY_Hangul_J_Phieuf 0x0eed +#define XKB_KEY_Hangul_J_Hieuh 0x0eee + +/* Ancient Hangul Consonant Characters */ +#define XKB_KEY_Hangul_RieulYeorinHieuh 0x0eef +#define XKB_KEY_Hangul_SunkyeongeumMieum 0x0ef0 +#define XKB_KEY_Hangul_SunkyeongeumPieub 0x0ef1 +#define XKB_KEY_Hangul_PanSios 0x0ef2 +#define XKB_KEY_Hangul_KkogjiDalrinIeung 0x0ef3 +#define XKB_KEY_Hangul_SunkyeongeumPhieuf 0x0ef4 +#define XKB_KEY_Hangul_YeorinHieuh 0x0ef5 + +/* Ancient Hangul Vowel Characters */ +#define XKB_KEY_Hangul_AraeA 0x0ef6 +#define XKB_KEY_Hangul_AraeAE 0x0ef7 + +/* Ancient Hangul syllable-final (JongSeong) Characters */ +#define XKB_KEY_Hangul_J_PanSios 0x0ef8 +#define XKB_KEY_Hangul_J_KkogjiDalrinIeung 0x0ef9 +#define XKB_KEY_Hangul_J_YeorinHieuh 0x0efa + +/* Korean currency symbol */ +#define XKB_KEY_Korean_Won 0x0eff /*(U+20A9 WON SIGN)*/ + + +/* + * Armenian + */ + +#define XKB_KEY_Armenian_ligature_ew 0x1000587 /* U+0587 ARMENIAN SMALL LIGATURE ECH YIWN */ +#define XKB_KEY_Armenian_full_stop 0x1000589 /* U+0589 ARMENIAN FULL STOP */ +#define XKB_KEY_Armenian_verjaket 0x1000589 /* U+0589 ARMENIAN FULL STOP */ +#define XKB_KEY_Armenian_separation_mark 0x100055d /* U+055D ARMENIAN COMMA */ +#define XKB_KEY_Armenian_but 0x100055d /* U+055D ARMENIAN COMMA */ +#define XKB_KEY_Armenian_hyphen 0x100058a /* U+058A ARMENIAN HYPHEN */ +#define XKB_KEY_Armenian_yentamna 0x100058a /* U+058A ARMENIAN HYPHEN */ +#define XKB_KEY_Armenian_exclam 0x100055c /* U+055C ARMENIAN EXCLAMATION MARK */ +#define XKB_KEY_Armenian_amanak 0x100055c /* U+055C ARMENIAN EXCLAMATION MARK */ +#define XKB_KEY_Armenian_accent 0x100055b /* U+055B ARMENIAN EMPHASIS MARK */ +#define XKB_KEY_Armenian_shesht 0x100055b /* U+055B ARMENIAN EMPHASIS MARK */ +#define XKB_KEY_Armenian_question 0x100055e /* U+055E ARMENIAN QUESTION MARK */ +#define XKB_KEY_Armenian_paruyk 0x100055e /* U+055E ARMENIAN QUESTION MARK */ +#define XKB_KEY_Armenian_AYB 0x1000531 /* U+0531 ARMENIAN CAPITAL LETTER AYB */ +#define XKB_KEY_Armenian_ayb 0x1000561 /* U+0561 ARMENIAN SMALL LETTER AYB */ +#define XKB_KEY_Armenian_BEN 0x1000532 /* U+0532 ARMENIAN CAPITAL LETTER BEN */ +#define XKB_KEY_Armenian_ben 0x1000562 /* U+0562 ARMENIAN SMALL LETTER BEN */ +#define XKB_KEY_Armenian_GIM 0x1000533 /* U+0533 ARMENIAN CAPITAL LETTER GIM */ +#define XKB_KEY_Armenian_gim 0x1000563 /* U+0563 ARMENIAN SMALL LETTER GIM */ +#define XKB_KEY_Armenian_DA 0x1000534 /* U+0534 ARMENIAN CAPITAL LETTER DA */ +#define XKB_KEY_Armenian_da 0x1000564 /* U+0564 ARMENIAN SMALL LETTER DA */ +#define XKB_KEY_Armenian_YECH 0x1000535 /* U+0535 ARMENIAN CAPITAL LETTER ECH */ +#define XKB_KEY_Armenian_yech 0x1000565 /* U+0565 ARMENIAN SMALL LETTER ECH */ +#define XKB_KEY_Armenian_ZA 0x1000536 /* U+0536 ARMENIAN CAPITAL LETTER ZA */ +#define XKB_KEY_Armenian_za 0x1000566 /* U+0566 ARMENIAN SMALL LETTER ZA */ +#define XKB_KEY_Armenian_E 0x1000537 /* U+0537 ARMENIAN CAPITAL LETTER EH */ +#define XKB_KEY_Armenian_e 0x1000567 /* U+0567 ARMENIAN SMALL LETTER EH */ +#define XKB_KEY_Armenian_AT 0x1000538 /* U+0538 ARMENIAN CAPITAL LETTER ET */ +#define XKB_KEY_Armenian_at 0x1000568 /* U+0568 ARMENIAN SMALL LETTER ET */ +#define XKB_KEY_Armenian_TO 0x1000539 /* U+0539 ARMENIAN CAPITAL LETTER TO */ +#define XKB_KEY_Armenian_to 0x1000569 /* U+0569 ARMENIAN SMALL LETTER TO */ +#define XKB_KEY_Armenian_ZHE 0x100053a /* U+053A ARMENIAN CAPITAL LETTER ZHE */ +#define XKB_KEY_Armenian_zhe 0x100056a /* U+056A ARMENIAN SMALL LETTER ZHE */ +#define XKB_KEY_Armenian_INI 0x100053b /* U+053B ARMENIAN CAPITAL LETTER INI */ +#define XKB_KEY_Armenian_ini 0x100056b /* U+056B ARMENIAN SMALL LETTER INI */ +#define XKB_KEY_Armenian_LYUN 0x100053c /* U+053C ARMENIAN CAPITAL LETTER LIWN */ +#define XKB_KEY_Armenian_lyun 0x100056c /* U+056C ARMENIAN SMALL LETTER LIWN */ +#define XKB_KEY_Armenian_KHE 0x100053d /* U+053D ARMENIAN CAPITAL LETTER XEH */ +#define XKB_KEY_Armenian_khe 0x100056d /* U+056D ARMENIAN SMALL LETTER XEH */ +#define XKB_KEY_Armenian_TSA 0x100053e /* U+053E ARMENIAN CAPITAL LETTER CA */ +#define XKB_KEY_Armenian_tsa 0x100056e /* U+056E ARMENIAN SMALL LETTER CA */ +#define XKB_KEY_Armenian_KEN 0x100053f /* U+053F ARMENIAN CAPITAL LETTER KEN */ +#define XKB_KEY_Armenian_ken 0x100056f /* U+056F ARMENIAN SMALL LETTER KEN */ +#define XKB_KEY_Armenian_HO 0x1000540 /* U+0540 ARMENIAN CAPITAL LETTER HO */ +#define XKB_KEY_Armenian_ho 0x1000570 /* U+0570 ARMENIAN SMALL LETTER HO */ +#define XKB_KEY_Armenian_DZA 0x1000541 /* U+0541 ARMENIAN CAPITAL LETTER JA */ +#define XKB_KEY_Armenian_dza 0x1000571 /* U+0571 ARMENIAN SMALL LETTER JA */ +#define XKB_KEY_Armenian_GHAT 0x1000542 /* U+0542 ARMENIAN CAPITAL LETTER GHAD */ +#define XKB_KEY_Armenian_ghat 0x1000572 /* U+0572 ARMENIAN SMALL LETTER GHAD */ +#define XKB_KEY_Armenian_TCHE 0x1000543 /* U+0543 ARMENIAN CAPITAL LETTER CHEH */ +#define XKB_KEY_Armenian_tche 0x1000573 /* U+0573 ARMENIAN SMALL LETTER CHEH */ +#define XKB_KEY_Armenian_MEN 0x1000544 /* U+0544 ARMENIAN CAPITAL LETTER MEN */ +#define XKB_KEY_Armenian_men 0x1000574 /* U+0574 ARMENIAN SMALL LETTER MEN */ +#define XKB_KEY_Armenian_HI 0x1000545 /* U+0545 ARMENIAN CAPITAL LETTER YI */ +#define XKB_KEY_Armenian_hi 0x1000575 /* U+0575 ARMENIAN SMALL LETTER YI */ +#define XKB_KEY_Armenian_NU 0x1000546 /* U+0546 ARMENIAN CAPITAL LETTER NOW */ +#define XKB_KEY_Armenian_nu 0x1000576 /* U+0576 ARMENIAN SMALL LETTER NOW */ +#define XKB_KEY_Armenian_SHA 0x1000547 /* U+0547 ARMENIAN CAPITAL LETTER SHA */ +#define XKB_KEY_Armenian_sha 0x1000577 /* U+0577 ARMENIAN SMALL LETTER SHA */ +#define XKB_KEY_Armenian_VO 0x1000548 /* U+0548 ARMENIAN CAPITAL LETTER VO */ +#define XKB_KEY_Armenian_vo 0x1000578 /* U+0578 ARMENIAN SMALL LETTER VO */ +#define XKB_KEY_Armenian_CHA 0x1000549 /* U+0549 ARMENIAN CAPITAL LETTER CHA */ +#define XKB_KEY_Armenian_cha 0x1000579 /* U+0579 ARMENIAN SMALL LETTER CHA */ +#define XKB_KEY_Armenian_PE 0x100054a /* U+054A ARMENIAN CAPITAL LETTER PEH */ +#define XKB_KEY_Armenian_pe 0x100057a /* U+057A ARMENIAN SMALL LETTER PEH */ +#define XKB_KEY_Armenian_JE 0x100054b /* U+054B ARMENIAN CAPITAL LETTER JHEH */ +#define XKB_KEY_Armenian_je 0x100057b /* U+057B ARMENIAN SMALL LETTER JHEH */ +#define XKB_KEY_Armenian_RA 0x100054c /* U+054C ARMENIAN CAPITAL LETTER RA */ +#define XKB_KEY_Armenian_ra 0x100057c /* U+057C ARMENIAN SMALL LETTER RA */ +#define XKB_KEY_Armenian_SE 0x100054d /* U+054D ARMENIAN CAPITAL LETTER SEH */ +#define XKB_KEY_Armenian_se 0x100057d /* U+057D ARMENIAN SMALL LETTER SEH */ +#define XKB_KEY_Armenian_VEV 0x100054e /* U+054E ARMENIAN CAPITAL LETTER VEW */ +#define XKB_KEY_Armenian_vev 0x100057e /* U+057E ARMENIAN SMALL LETTER VEW */ +#define XKB_KEY_Armenian_TYUN 0x100054f /* U+054F ARMENIAN CAPITAL LETTER TIWN */ +#define XKB_KEY_Armenian_tyun 0x100057f /* U+057F ARMENIAN SMALL LETTER TIWN */ +#define XKB_KEY_Armenian_RE 0x1000550 /* U+0550 ARMENIAN CAPITAL LETTER REH */ +#define XKB_KEY_Armenian_re 0x1000580 /* U+0580 ARMENIAN SMALL LETTER REH */ +#define XKB_KEY_Armenian_TSO 0x1000551 /* U+0551 ARMENIAN CAPITAL LETTER CO */ +#define XKB_KEY_Armenian_tso 0x1000581 /* U+0581 ARMENIAN SMALL LETTER CO */ +#define XKB_KEY_Armenian_VYUN 0x1000552 /* U+0552 ARMENIAN CAPITAL LETTER YIWN */ +#define XKB_KEY_Armenian_vyun 0x1000582 /* U+0582 ARMENIAN SMALL LETTER YIWN */ +#define XKB_KEY_Armenian_PYUR 0x1000553 /* U+0553 ARMENIAN CAPITAL LETTER PIWR */ +#define XKB_KEY_Armenian_pyur 0x1000583 /* U+0583 ARMENIAN SMALL LETTER PIWR */ +#define XKB_KEY_Armenian_KE 0x1000554 /* U+0554 ARMENIAN CAPITAL LETTER KEH */ +#define XKB_KEY_Armenian_ke 0x1000584 /* U+0584 ARMENIAN SMALL LETTER KEH */ +#define XKB_KEY_Armenian_O 0x1000555 /* U+0555 ARMENIAN CAPITAL LETTER OH */ +#define XKB_KEY_Armenian_o 0x1000585 /* U+0585 ARMENIAN SMALL LETTER OH */ +#define XKB_KEY_Armenian_FE 0x1000556 /* U+0556 ARMENIAN CAPITAL LETTER FEH */ +#define XKB_KEY_Armenian_fe 0x1000586 /* U+0586 ARMENIAN SMALL LETTER FEH */ +#define XKB_KEY_Armenian_apostrophe 0x100055a /* U+055A ARMENIAN APOSTROPHE */ + +/* + * Georgian + */ + +#define XKB_KEY_Georgian_an 0x10010d0 /* U+10D0 GEORGIAN LETTER AN */ +#define XKB_KEY_Georgian_ban 0x10010d1 /* U+10D1 GEORGIAN LETTER BAN */ +#define XKB_KEY_Georgian_gan 0x10010d2 /* U+10D2 GEORGIAN LETTER GAN */ +#define XKB_KEY_Georgian_don 0x10010d3 /* U+10D3 GEORGIAN LETTER DON */ +#define XKB_KEY_Georgian_en 0x10010d4 /* U+10D4 GEORGIAN LETTER EN */ +#define XKB_KEY_Georgian_vin 0x10010d5 /* U+10D5 GEORGIAN LETTER VIN */ +#define XKB_KEY_Georgian_zen 0x10010d6 /* U+10D6 GEORGIAN LETTER ZEN */ +#define XKB_KEY_Georgian_tan 0x10010d7 /* U+10D7 GEORGIAN LETTER TAN */ +#define XKB_KEY_Georgian_in 0x10010d8 /* U+10D8 GEORGIAN LETTER IN */ +#define XKB_KEY_Georgian_kan 0x10010d9 /* U+10D9 GEORGIAN LETTER KAN */ +#define XKB_KEY_Georgian_las 0x10010da /* U+10DA GEORGIAN LETTER LAS */ +#define XKB_KEY_Georgian_man 0x10010db /* U+10DB GEORGIAN LETTER MAN */ +#define XKB_KEY_Georgian_nar 0x10010dc /* U+10DC GEORGIAN LETTER NAR */ +#define XKB_KEY_Georgian_on 0x10010dd /* U+10DD GEORGIAN LETTER ON */ +#define XKB_KEY_Georgian_par 0x10010de /* U+10DE GEORGIAN LETTER PAR */ +#define XKB_KEY_Georgian_zhar 0x10010df /* U+10DF GEORGIAN LETTER ZHAR */ +#define XKB_KEY_Georgian_rae 0x10010e0 /* U+10E0 GEORGIAN LETTER RAE */ +#define XKB_KEY_Georgian_san 0x10010e1 /* U+10E1 GEORGIAN LETTER SAN */ +#define XKB_KEY_Georgian_tar 0x10010e2 /* U+10E2 GEORGIAN LETTER TAR */ +#define XKB_KEY_Georgian_un 0x10010e3 /* U+10E3 GEORGIAN LETTER UN */ +#define XKB_KEY_Georgian_phar 0x10010e4 /* U+10E4 GEORGIAN LETTER PHAR */ +#define XKB_KEY_Georgian_khar 0x10010e5 /* U+10E5 GEORGIAN LETTER KHAR */ +#define XKB_KEY_Georgian_ghan 0x10010e6 /* U+10E6 GEORGIAN LETTER GHAN */ +#define XKB_KEY_Georgian_qar 0x10010e7 /* U+10E7 GEORGIAN LETTER QAR */ +#define XKB_KEY_Georgian_shin 0x10010e8 /* U+10E8 GEORGIAN LETTER SHIN */ +#define XKB_KEY_Georgian_chin 0x10010e9 /* U+10E9 GEORGIAN LETTER CHIN */ +#define XKB_KEY_Georgian_can 0x10010ea /* U+10EA GEORGIAN LETTER CAN */ +#define XKB_KEY_Georgian_jil 0x10010eb /* U+10EB GEORGIAN LETTER JIL */ +#define XKB_KEY_Georgian_cil 0x10010ec /* U+10EC GEORGIAN LETTER CIL */ +#define XKB_KEY_Georgian_char 0x10010ed /* U+10ED GEORGIAN LETTER CHAR */ +#define XKB_KEY_Georgian_xan 0x10010ee /* U+10EE GEORGIAN LETTER XAN */ +#define XKB_KEY_Georgian_jhan 0x10010ef /* U+10EF GEORGIAN LETTER JHAN */ +#define XKB_KEY_Georgian_hae 0x10010f0 /* U+10F0 GEORGIAN LETTER HAE */ +#define XKB_KEY_Georgian_he 0x10010f1 /* U+10F1 GEORGIAN LETTER HE */ +#define XKB_KEY_Georgian_hie 0x10010f2 /* U+10F2 GEORGIAN LETTER HIE */ +#define XKB_KEY_Georgian_we 0x10010f3 /* U+10F3 GEORGIAN LETTER WE */ +#define XKB_KEY_Georgian_har 0x10010f4 /* U+10F4 GEORGIAN LETTER HAR */ +#define XKB_KEY_Georgian_hoe 0x10010f5 /* U+10F5 GEORGIAN LETTER HOE */ +#define XKB_KEY_Georgian_fi 0x10010f6 /* U+10F6 GEORGIAN LETTER FI */ + +/* + * Azeri (and other Turkic or Caucasian languages) + */ + +/* latin */ +#define XKB_KEY_Xabovedot 0x1001e8a /* U+1E8A LATIN CAPITAL LETTER X WITH DOT ABOVE */ +#define XKB_KEY_Ibreve 0x100012c /* U+012C LATIN CAPITAL LETTER I WITH BREVE */ +#define XKB_KEY_Zstroke 0x10001b5 /* U+01B5 LATIN CAPITAL LETTER Z WITH STROKE */ +#define XKB_KEY_Gcaron 0x10001e6 /* U+01E6 LATIN CAPITAL LETTER G WITH CARON */ +#define XKB_KEY_Ocaron 0x10001d1 /* U+01D2 LATIN CAPITAL LETTER O WITH CARON */ +#define XKB_KEY_Obarred 0x100019f /* U+019F LATIN CAPITAL LETTER O WITH MIDDLE TILDE */ +#define XKB_KEY_xabovedot 0x1001e8b /* U+1E8B LATIN SMALL LETTER X WITH DOT ABOVE */ +#define XKB_KEY_ibreve 0x100012d /* U+012D LATIN SMALL LETTER I WITH BREVE */ +#define XKB_KEY_zstroke 0x10001b6 /* U+01B6 LATIN SMALL LETTER Z WITH STROKE */ +#define XKB_KEY_gcaron 0x10001e7 /* U+01E7 LATIN SMALL LETTER G WITH CARON */ +#define XKB_KEY_ocaron 0x10001d2 /* U+01D2 LATIN SMALL LETTER O WITH CARON */ +#define XKB_KEY_obarred 0x1000275 /* U+0275 LATIN SMALL LETTER BARRED O */ +#define XKB_KEY_SCHWA 0x100018f /* U+018F LATIN CAPITAL LETTER SCHWA */ +#define XKB_KEY_schwa 0x1000259 /* U+0259 LATIN SMALL LETTER SCHWA */ +#define XKB_KEY_EZH 0x10001b7 /* U+01B7 LATIN CAPITAL LETTER EZH */ +#define XKB_KEY_ezh 0x1000292 /* U+0292 LATIN SMALL LETTER EZH */ +/* those are not really Caucasus */ +/* For Inupiak */ +#define XKB_KEY_Lbelowdot 0x1001e36 /* U+1E36 LATIN CAPITAL LETTER L WITH DOT BELOW */ +#define XKB_KEY_lbelowdot 0x1001e37 /* U+1E37 LATIN SMALL LETTER L WITH DOT BELOW */ + +/* + * Vietnamese + */ + +#define XKB_KEY_Abelowdot 0x1001ea0 /* U+1EA0 LATIN CAPITAL LETTER A WITH DOT BELOW */ +#define XKB_KEY_abelowdot 0x1001ea1 /* U+1EA1 LATIN SMALL LETTER A WITH DOT BELOW */ +#define XKB_KEY_Ahook 0x1001ea2 /* U+1EA2 LATIN CAPITAL LETTER A WITH HOOK ABOVE */ +#define XKB_KEY_ahook 0x1001ea3 /* U+1EA3 LATIN SMALL LETTER A WITH HOOK ABOVE */ +#define XKB_KEY_Acircumflexacute 0x1001ea4 /* U+1EA4 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE */ +#define XKB_KEY_acircumflexacute 0x1001ea5 /* U+1EA5 LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE */ +#define XKB_KEY_Acircumflexgrave 0x1001ea6 /* U+1EA6 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE */ +#define XKB_KEY_acircumflexgrave 0x1001ea7 /* U+1EA7 LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE */ +#define XKB_KEY_Acircumflexhook 0x1001ea8 /* U+1EA8 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE */ +#define XKB_KEY_acircumflexhook 0x1001ea9 /* U+1EA9 LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE */ +#define XKB_KEY_Acircumflextilde 0x1001eaa /* U+1EAA LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE */ +#define XKB_KEY_acircumflextilde 0x1001eab /* U+1EAB LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE */ +#define XKB_KEY_Acircumflexbelowdot 0x1001eac /* U+1EAC LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW */ +#define XKB_KEY_acircumflexbelowdot 0x1001ead /* U+1EAD LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW */ +#define XKB_KEY_Abreveacute 0x1001eae /* U+1EAE LATIN CAPITAL LETTER A WITH BREVE AND ACUTE */ +#define XKB_KEY_abreveacute 0x1001eaf /* U+1EAF LATIN SMALL LETTER A WITH BREVE AND ACUTE */ +#define XKB_KEY_Abrevegrave 0x1001eb0 /* U+1EB0 LATIN CAPITAL LETTER A WITH BREVE AND GRAVE */ +#define XKB_KEY_abrevegrave 0x1001eb1 /* U+1EB1 LATIN SMALL LETTER A WITH BREVE AND GRAVE */ +#define XKB_KEY_Abrevehook 0x1001eb2 /* U+1EB2 LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE */ +#define XKB_KEY_abrevehook 0x1001eb3 /* U+1EB3 LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE */ +#define XKB_KEY_Abrevetilde 0x1001eb4 /* U+1EB4 LATIN CAPITAL LETTER A WITH BREVE AND TILDE */ +#define XKB_KEY_abrevetilde 0x1001eb5 /* U+1EB5 LATIN SMALL LETTER A WITH BREVE AND TILDE */ +#define XKB_KEY_Abrevebelowdot 0x1001eb6 /* U+1EB6 LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW */ +#define XKB_KEY_abrevebelowdot 0x1001eb7 /* U+1EB7 LATIN SMALL LETTER A WITH BREVE AND DOT BELOW */ +#define XKB_KEY_Ebelowdot 0x1001eb8 /* U+1EB8 LATIN CAPITAL LETTER E WITH DOT BELOW */ +#define XKB_KEY_ebelowdot 0x1001eb9 /* U+1EB9 LATIN SMALL LETTER E WITH DOT BELOW */ +#define XKB_KEY_Ehook 0x1001eba /* U+1EBA LATIN CAPITAL LETTER E WITH HOOK ABOVE */ +#define XKB_KEY_ehook 0x1001ebb /* U+1EBB LATIN SMALL LETTER E WITH HOOK ABOVE */ +#define XKB_KEY_Etilde 0x1001ebc /* U+1EBC LATIN CAPITAL LETTER E WITH TILDE */ +#define XKB_KEY_etilde 0x1001ebd /* U+1EBD LATIN SMALL LETTER E WITH TILDE */ +#define XKB_KEY_Ecircumflexacute 0x1001ebe /* U+1EBE LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE */ +#define XKB_KEY_ecircumflexacute 0x1001ebf /* U+1EBF LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE */ +#define XKB_KEY_Ecircumflexgrave 0x1001ec0 /* U+1EC0 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE */ +#define XKB_KEY_ecircumflexgrave 0x1001ec1 /* U+1EC1 LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE */ +#define XKB_KEY_Ecircumflexhook 0x1001ec2 /* U+1EC2 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE */ +#define XKB_KEY_ecircumflexhook 0x1001ec3 /* U+1EC3 LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE */ +#define XKB_KEY_Ecircumflextilde 0x1001ec4 /* U+1EC4 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE */ +#define XKB_KEY_ecircumflextilde 0x1001ec5 /* U+1EC5 LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE */ +#define XKB_KEY_Ecircumflexbelowdot 0x1001ec6 /* U+1EC6 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW */ +#define XKB_KEY_ecircumflexbelowdot 0x1001ec7 /* U+1EC7 LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW */ +#define XKB_KEY_Ihook 0x1001ec8 /* U+1EC8 LATIN CAPITAL LETTER I WITH HOOK ABOVE */ +#define XKB_KEY_ihook 0x1001ec9 /* U+1EC9 LATIN SMALL LETTER I WITH HOOK ABOVE */ +#define XKB_KEY_Ibelowdot 0x1001eca /* U+1ECA LATIN CAPITAL LETTER I WITH DOT BELOW */ +#define XKB_KEY_ibelowdot 0x1001ecb /* U+1ECB LATIN SMALL LETTER I WITH DOT BELOW */ +#define XKB_KEY_Obelowdot 0x1001ecc /* U+1ECC LATIN CAPITAL LETTER O WITH DOT BELOW */ +#define XKB_KEY_obelowdot 0x1001ecd /* U+1ECD LATIN SMALL LETTER O WITH DOT BELOW */ +#define XKB_KEY_Ohook 0x1001ece /* U+1ECE LATIN CAPITAL LETTER O WITH HOOK ABOVE */ +#define XKB_KEY_ohook 0x1001ecf /* U+1ECF LATIN SMALL LETTER O WITH HOOK ABOVE */ +#define XKB_KEY_Ocircumflexacute 0x1001ed0 /* U+1ED0 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE */ +#define XKB_KEY_ocircumflexacute 0x1001ed1 /* U+1ED1 LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE */ +#define XKB_KEY_Ocircumflexgrave 0x1001ed2 /* U+1ED2 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE */ +#define XKB_KEY_ocircumflexgrave 0x1001ed3 /* U+1ED3 LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE */ +#define XKB_KEY_Ocircumflexhook 0x1001ed4 /* U+1ED4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE */ +#define XKB_KEY_ocircumflexhook 0x1001ed5 /* U+1ED5 LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE */ +#define XKB_KEY_Ocircumflextilde 0x1001ed6 /* U+1ED6 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE */ +#define XKB_KEY_ocircumflextilde 0x1001ed7 /* U+1ED7 LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE */ +#define XKB_KEY_Ocircumflexbelowdot 0x1001ed8 /* U+1ED8 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW */ +#define XKB_KEY_ocircumflexbelowdot 0x1001ed9 /* U+1ED9 LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW */ +#define XKB_KEY_Ohornacute 0x1001eda /* U+1EDA LATIN CAPITAL LETTER O WITH HORN AND ACUTE */ +#define XKB_KEY_ohornacute 0x1001edb /* U+1EDB LATIN SMALL LETTER O WITH HORN AND ACUTE */ +#define XKB_KEY_Ohorngrave 0x1001edc /* U+1EDC LATIN CAPITAL LETTER O WITH HORN AND GRAVE */ +#define XKB_KEY_ohorngrave 0x1001edd /* U+1EDD LATIN SMALL LETTER O WITH HORN AND GRAVE */ +#define XKB_KEY_Ohornhook 0x1001ede /* U+1EDE LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE */ +#define XKB_KEY_ohornhook 0x1001edf /* U+1EDF LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE */ +#define XKB_KEY_Ohorntilde 0x1001ee0 /* U+1EE0 LATIN CAPITAL LETTER O WITH HORN AND TILDE */ +#define XKB_KEY_ohorntilde 0x1001ee1 /* U+1EE1 LATIN SMALL LETTER O WITH HORN AND TILDE */ +#define XKB_KEY_Ohornbelowdot 0x1001ee2 /* U+1EE2 LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW */ +#define XKB_KEY_ohornbelowdot 0x1001ee3 /* U+1EE3 LATIN SMALL LETTER O WITH HORN AND DOT BELOW */ +#define XKB_KEY_Ubelowdot 0x1001ee4 /* U+1EE4 LATIN CAPITAL LETTER U WITH DOT BELOW */ +#define XKB_KEY_ubelowdot 0x1001ee5 /* U+1EE5 LATIN SMALL LETTER U WITH DOT BELOW */ +#define XKB_KEY_Uhook 0x1001ee6 /* U+1EE6 LATIN CAPITAL LETTER U WITH HOOK ABOVE */ +#define XKB_KEY_uhook 0x1001ee7 /* U+1EE7 LATIN SMALL LETTER U WITH HOOK ABOVE */ +#define XKB_KEY_Uhornacute 0x1001ee8 /* U+1EE8 LATIN CAPITAL LETTER U WITH HORN AND ACUTE */ +#define XKB_KEY_uhornacute 0x1001ee9 /* U+1EE9 LATIN SMALL LETTER U WITH HORN AND ACUTE */ +#define XKB_KEY_Uhorngrave 0x1001eea /* U+1EEA LATIN CAPITAL LETTER U WITH HORN AND GRAVE */ +#define XKB_KEY_uhorngrave 0x1001eeb /* U+1EEB LATIN SMALL LETTER U WITH HORN AND GRAVE */ +#define XKB_KEY_Uhornhook 0x1001eec /* U+1EEC LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE */ +#define XKB_KEY_uhornhook 0x1001eed /* U+1EED LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE */ +#define XKB_KEY_Uhorntilde 0x1001eee /* U+1EEE LATIN CAPITAL LETTER U WITH HORN AND TILDE */ +#define XKB_KEY_uhorntilde 0x1001eef /* U+1EEF LATIN SMALL LETTER U WITH HORN AND TILDE */ +#define XKB_KEY_Uhornbelowdot 0x1001ef0 /* U+1EF0 LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW */ +#define XKB_KEY_uhornbelowdot 0x1001ef1 /* U+1EF1 LATIN SMALL LETTER U WITH HORN AND DOT BELOW */ +#define XKB_KEY_Ybelowdot 0x1001ef4 /* U+1EF4 LATIN CAPITAL LETTER Y WITH DOT BELOW */ +#define XKB_KEY_ybelowdot 0x1001ef5 /* U+1EF5 LATIN SMALL LETTER Y WITH DOT BELOW */ +#define XKB_KEY_Yhook 0x1001ef6 /* U+1EF6 LATIN CAPITAL LETTER Y WITH HOOK ABOVE */ +#define XKB_KEY_yhook 0x1001ef7 /* U+1EF7 LATIN SMALL LETTER Y WITH HOOK ABOVE */ +#define XKB_KEY_Ytilde 0x1001ef8 /* U+1EF8 LATIN CAPITAL LETTER Y WITH TILDE */ +#define XKB_KEY_ytilde 0x1001ef9 /* U+1EF9 LATIN SMALL LETTER Y WITH TILDE */ +#define XKB_KEY_Ohorn 0x10001a0 /* U+01A0 LATIN CAPITAL LETTER O WITH HORN */ +#define XKB_KEY_ohorn 0x10001a1 /* U+01A1 LATIN SMALL LETTER O WITH HORN */ +#define XKB_KEY_Uhorn 0x10001af /* U+01AF LATIN CAPITAL LETTER U WITH HORN */ +#define XKB_KEY_uhorn 0x10001b0 /* U+01B0 LATIN SMALL LETTER U WITH HORN */ + + +#define XKB_KEY_EcuSign 0x10020a0 /* U+20A0 EURO-CURRENCY SIGN */ +#define XKB_KEY_ColonSign 0x10020a1 /* U+20A1 COLON SIGN */ +#define XKB_KEY_CruzeiroSign 0x10020a2 /* U+20A2 CRUZEIRO SIGN */ +#define XKB_KEY_FFrancSign 0x10020a3 /* U+20A3 FRENCH FRANC SIGN */ +#define XKB_KEY_LiraSign 0x10020a4 /* U+20A4 LIRA SIGN */ +#define XKB_KEY_MillSign 0x10020a5 /* U+20A5 MILL SIGN */ +#define XKB_KEY_NairaSign 0x10020a6 /* U+20A6 NAIRA SIGN */ +#define XKB_KEY_PesetaSign 0x10020a7 /* U+20A7 PESETA SIGN */ +#define XKB_KEY_RupeeSign 0x10020a8 /* U+20A8 RUPEE SIGN */ +#define XKB_KEY_WonSign 0x10020a9 /* U+20A9 WON SIGN */ +#define XKB_KEY_NewSheqelSign 0x10020aa /* U+20AA NEW SHEQEL SIGN */ +#define XKB_KEY_DongSign 0x10020ab /* U+20AB DONG SIGN */ +#define XKB_KEY_EuroSign 0x20ac /* U+20AC EURO SIGN */ + +/* one, two and three are defined above. */ +#define XKB_KEY_zerosuperior 0x1002070 /* U+2070 SUPERSCRIPT ZERO */ +#define XKB_KEY_foursuperior 0x1002074 /* U+2074 SUPERSCRIPT FOUR */ +#define XKB_KEY_fivesuperior 0x1002075 /* U+2075 SUPERSCRIPT FIVE */ +#define XKB_KEY_sixsuperior 0x1002076 /* U+2076 SUPERSCRIPT SIX */ +#define XKB_KEY_sevensuperior 0x1002077 /* U+2077 SUPERSCRIPT SEVEN */ +#define XKB_KEY_eightsuperior 0x1002078 /* U+2078 SUPERSCRIPT EIGHT */ +#define XKB_KEY_ninesuperior 0x1002079 /* U+2079 SUPERSCRIPT NINE */ +#define XKB_KEY_zerosubscript 0x1002080 /* U+2080 SUBSCRIPT ZERO */ +#define XKB_KEY_onesubscript 0x1002081 /* U+2081 SUBSCRIPT ONE */ +#define XKB_KEY_twosubscript 0x1002082 /* U+2082 SUBSCRIPT TWO */ +#define XKB_KEY_threesubscript 0x1002083 /* U+2083 SUBSCRIPT THREE */ +#define XKB_KEY_foursubscript 0x1002084 /* U+2084 SUBSCRIPT FOUR */ +#define XKB_KEY_fivesubscript 0x1002085 /* U+2085 SUBSCRIPT FIVE */ +#define XKB_KEY_sixsubscript 0x1002086 /* U+2086 SUBSCRIPT SIX */ +#define XKB_KEY_sevensubscript 0x1002087 /* U+2087 SUBSCRIPT SEVEN */ +#define XKB_KEY_eightsubscript 0x1002088 /* U+2088 SUBSCRIPT EIGHT */ +#define XKB_KEY_ninesubscript 0x1002089 /* U+2089 SUBSCRIPT NINE */ +#define XKB_KEY_partdifferential 0x1002202 /* U+2202 PARTIAL DIFFERENTIAL */ +#define XKB_KEY_emptyset 0x1002205 /* U+2205 NULL SET */ +#define XKB_KEY_elementof 0x1002208 /* U+2208 ELEMENT OF */ +#define XKB_KEY_notelementof 0x1002209 /* U+2209 NOT AN ELEMENT OF */ +#define XKB_KEY_containsas 0x100220B /* U+220B CONTAINS AS MEMBER */ +#define XKB_KEY_squareroot 0x100221A /* U+221A SQUARE ROOT */ +#define XKB_KEY_cuberoot 0x100221B /* U+221B CUBE ROOT */ +#define XKB_KEY_fourthroot 0x100221C /* U+221C FOURTH ROOT */ +#define XKB_KEY_dintegral 0x100222C /* U+222C DOUBLE INTEGRAL */ +#define XKB_KEY_tintegral 0x100222D /* U+222D TRIPLE INTEGRAL */ +#define XKB_KEY_because 0x1002235 /* U+2235 BECAUSE */ +#define XKB_KEY_approxeq 0x1002248 /* U+2245 ALMOST EQUAL TO */ +#define XKB_KEY_notapproxeq 0x1002247 /* U+2247 NOT ALMOST EQUAL TO */ +#define XKB_KEY_notidentical 0x1002262 /* U+2262 NOT IDENTICAL TO */ +#define XKB_KEY_stricteq 0x1002263 /* U+2263 STRICTLY EQUIVALENT TO */ + +#define XKB_KEY_braille_dot_1 0xfff1 +#define XKB_KEY_braille_dot_2 0xfff2 +#define XKB_KEY_braille_dot_3 0xfff3 +#define XKB_KEY_braille_dot_4 0xfff4 +#define XKB_KEY_braille_dot_5 0xfff5 +#define XKB_KEY_braille_dot_6 0xfff6 +#define XKB_KEY_braille_dot_7 0xfff7 +#define XKB_KEY_braille_dot_8 0xfff8 +#define XKB_KEY_braille_dot_9 0xfff9 +#define XKB_KEY_braille_dot_10 0xfffa +#define XKB_KEY_braille_blank 0x1002800 /* U+2800 BRAILLE PATTERN BLANK */ +#define XKB_KEY_braille_dots_1 0x1002801 /* U+2801 BRAILLE PATTERN DOTS-1 */ +#define XKB_KEY_braille_dots_2 0x1002802 /* U+2802 BRAILLE PATTERN DOTS-2 */ +#define XKB_KEY_braille_dots_12 0x1002803 /* U+2803 BRAILLE PATTERN DOTS-12 */ +#define XKB_KEY_braille_dots_3 0x1002804 /* U+2804 BRAILLE PATTERN DOTS-3 */ +#define XKB_KEY_braille_dots_13 0x1002805 /* U+2805 BRAILLE PATTERN DOTS-13 */ +#define XKB_KEY_braille_dots_23 0x1002806 /* U+2806 BRAILLE PATTERN DOTS-23 */ +#define XKB_KEY_braille_dots_123 0x1002807 /* U+2807 BRAILLE PATTERN DOTS-123 */ +#define XKB_KEY_braille_dots_4 0x1002808 /* U+2808 BRAILLE PATTERN DOTS-4 */ +#define XKB_KEY_braille_dots_14 0x1002809 /* U+2809 BRAILLE PATTERN DOTS-14 */ +#define XKB_KEY_braille_dots_24 0x100280a /* U+280a BRAILLE PATTERN DOTS-24 */ +#define XKB_KEY_braille_dots_124 0x100280b /* U+280b BRAILLE PATTERN DOTS-124 */ +#define XKB_KEY_braille_dots_34 0x100280c /* U+280c BRAILLE PATTERN DOTS-34 */ +#define XKB_KEY_braille_dots_134 0x100280d /* U+280d BRAILLE PATTERN DOTS-134 */ +#define XKB_KEY_braille_dots_234 0x100280e /* U+280e BRAILLE PATTERN DOTS-234 */ +#define XKB_KEY_braille_dots_1234 0x100280f /* U+280f BRAILLE PATTERN DOTS-1234 */ +#define XKB_KEY_braille_dots_5 0x1002810 /* U+2810 BRAILLE PATTERN DOTS-5 */ +#define XKB_KEY_braille_dots_15 0x1002811 /* U+2811 BRAILLE PATTERN DOTS-15 */ +#define XKB_KEY_braille_dots_25 0x1002812 /* U+2812 BRAILLE PATTERN DOTS-25 */ +#define XKB_KEY_braille_dots_125 0x1002813 /* U+2813 BRAILLE PATTERN DOTS-125 */ +#define XKB_KEY_braille_dots_35 0x1002814 /* U+2814 BRAILLE PATTERN DOTS-35 */ +#define XKB_KEY_braille_dots_135 0x1002815 /* U+2815 BRAILLE PATTERN DOTS-135 */ +#define XKB_KEY_braille_dots_235 0x1002816 /* U+2816 BRAILLE PATTERN DOTS-235 */ +#define XKB_KEY_braille_dots_1235 0x1002817 /* U+2817 BRAILLE PATTERN DOTS-1235 */ +#define XKB_KEY_braille_dots_45 0x1002818 /* U+2818 BRAILLE PATTERN DOTS-45 */ +#define XKB_KEY_braille_dots_145 0x1002819 /* U+2819 BRAILLE PATTERN DOTS-145 */ +#define XKB_KEY_braille_dots_245 0x100281a /* U+281a BRAILLE PATTERN DOTS-245 */ +#define XKB_KEY_braille_dots_1245 0x100281b /* U+281b BRAILLE PATTERN DOTS-1245 */ +#define XKB_KEY_braille_dots_345 0x100281c /* U+281c BRAILLE PATTERN DOTS-345 */ +#define XKB_KEY_braille_dots_1345 0x100281d /* U+281d BRAILLE PATTERN DOTS-1345 */ +#define XKB_KEY_braille_dots_2345 0x100281e /* U+281e BRAILLE PATTERN DOTS-2345 */ +#define XKB_KEY_braille_dots_12345 0x100281f /* U+281f BRAILLE PATTERN DOTS-12345 */ +#define XKB_KEY_braille_dots_6 0x1002820 /* U+2820 BRAILLE PATTERN DOTS-6 */ +#define XKB_KEY_braille_dots_16 0x1002821 /* U+2821 BRAILLE PATTERN DOTS-16 */ +#define XKB_KEY_braille_dots_26 0x1002822 /* U+2822 BRAILLE PATTERN DOTS-26 */ +#define XKB_KEY_braille_dots_126 0x1002823 /* U+2823 BRAILLE PATTERN DOTS-126 */ +#define XKB_KEY_braille_dots_36 0x1002824 /* U+2824 BRAILLE PATTERN DOTS-36 */ +#define XKB_KEY_braille_dots_136 0x1002825 /* U+2825 BRAILLE PATTERN DOTS-136 */ +#define XKB_KEY_braille_dots_236 0x1002826 /* U+2826 BRAILLE PATTERN DOTS-236 */ +#define XKB_KEY_braille_dots_1236 0x1002827 /* U+2827 BRAILLE PATTERN DOTS-1236 */ +#define XKB_KEY_braille_dots_46 0x1002828 /* U+2828 BRAILLE PATTERN DOTS-46 */ +#define XKB_KEY_braille_dots_146 0x1002829 /* U+2829 BRAILLE PATTERN DOTS-146 */ +#define XKB_KEY_braille_dots_246 0x100282a /* U+282a BRAILLE PATTERN DOTS-246 */ +#define XKB_KEY_braille_dots_1246 0x100282b /* U+282b BRAILLE PATTERN DOTS-1246 */ +#define XKB_KEY_braille_dots_346 0x100282c /* U+282c BRAILLE PATTERN DOTS-346 */ +#define XKB_KEY_braille_dots_1346 0x100282d /* U+282d BRAILLE PATTERN DOTS-1346 */ +#define XKB_KEY_braille_dots_2346 0x100282e /* U+282e BRAILLE PATTERN DOTS-2346 */ +#define XKB_KEY_braille_dots_12346 0x100282f /* U+282f BRAILLE PATTERN DOTS-12346 */ +#define XKB_KEY_braille_dots_56 0x1002830 /* U+2830 BRAILLE PATTERN DOTS-56 */ +#define XKB_KEY_braille_dots_156 0x1002831 /* U+2831 BRAILLE PATTERN DOTS-156 */ +#define XKB_KEY_braille_dots_256 0x1002832 /* U+2832 BRAILLE PATTERN DOTS-256 */ +#define XKB_KEY_braille_dots_1256 0x1002833 /* U+2833 BRAILLE PATTERN DOTS-1256 */ +#define XKB_KEY_braille_dots_356 0x1002834 /* U+2834 BRAILLE PATTERN DOTS-356 */ +#define XKB_KEY_braille_dots_1356 0x1002835 /* U+2835 BRAILLE PATTERN DOTS-1356 */ +#define XKB_KEY_braille_dots_2356 0x1002836 /* U+2836 BRAILLE PATTERN DOTS-2356 */ +#define XKB_KEY_braille_dots_12356 0x1002837 /* U+2837 BRAILLE PATTERN DOTS-12356 */ +#define XKB_KEY_braille_dots_456 0x1002838 /* U+2838 BRAILLE PATTERN DOTS-456 */ +#define XKB_KEY_braille_dots_1456 0x1002839 /* U+2839 BRAILLE PATTERN DOTS-1456 */ +#define XKB_KEY_braille_dots_2456 0x100283a /* U+283a BRAILLE PATTERN DOTS-2456 */ +#define XKB_KEY_braille_dots_12456 0x100283b /* U+283b BRAILLE PATTERN DOTS-12456 */ +#define XKB_KEY_braille_dots_3456 0x100283c /* U+283c BRAILLE PATTERN DOTS-3456 */ +#define XKB_KEY_braille_dots_13456 0x100283d /* U+283d BRAILLE PATTERN DOTS-13456 */ +#define XKB_KEY_braille_dots_23456 0x100283e /* U+283e BRAILLE PATTERN DOTS-23456 */ +#define XKB_KEY_braille_dots_123456 0x100283f /* U+283f BRAILLE PATTERN DOTS-123456 */ +#define XKB_KEY_braille_dots_7 0x1002840 /* U+2840 BRAILLE PATTERN DOTS-7 */ +#define XKB_KEY_braille_dots_17 0x1002841 /* U+2841 BRAILLE PATTERN DOTS-17 */ +#define XKB_KEY_braille_dots_27 0x1002842 /* U+2842 BRAILLE PATTERN DOTS-27 */ +#define XKB_KEY_braille_dots_127 0x1002843 /* U+2843 BRAILLE PATTERN DOTS-127 */ +#define XKB_KEY_braille_dots_37 0x1002844 /* U+2844 BRAILLE PATTERN DOTS-37 */ +#define XKB_KEY_braille_dots_137 0x1002845 /* U+2845 BRAILLE PATTERN DOTS-137 */ +#define XKB_KEY_braille_dots_237 0x1002846 /* U+2846 BRAILLE PATTERN DOTS-237 */ +#define XKB_KEY_braille_dots_1237 0x1002847 /* U+2847 BRAILLE PATTERN DOTS-1237 */ +#define XKB_KEY_braille_dots_47 0x1002848 /* U+2848 BRAILLE PATTERN DOTS-47 */ +#define XKB_KEY_braille_dots_147 0x1002849 /* U+2849 BRAILLE PATTERN DOTS-147 */ +#define XKB_KEY_braille_dots_247 0x100284a /* U+284a BRAILLE PATTERN DOTS-247 */ +#define XKB_KEY_braille_dots_1247 0x100284b /* U+284b BRAILLE PATTERN DOTS-1247 */ +#define XKB_KEY_braille_dots_347 0x100284c /* U+284c BRAILLE PATTERN DOTS-347 */ +#define XKB_KEY_braille_dots_1347 0x100284d /* U+284d BRAILLE PATTERN DOTS-1347 */ +#define XKB_KEY_braille_dots_2347 0x100284e /* U+284e BRAILLE PATTERN DOTS-2347 */ +#define XKB_KEY_braille_dots_12347 0x100284f /* U+284f BRAILLE PATTERN DOTS-12347 */ +#define XKB_KEY_braille_dots_57 0x1002850 /* U+2850 BRAILLE PATTERN DOTS-57 */ +#define XKB_KEY_braille_dots_157 0x1002851 /* U+2851 BRAILLE PATTERN DOTS-157 */ +#define XKB_KEY_braille_dots_257 0x1002852 /* U+2852 BRAILLE PATTERN DOTS-257 */ +#define XKB_KEY_braille_dots_1257 0x1002853 /* U+2853 BRAILLE PATTERN DOTS-1257 */ +#define XKB_KEY_braille_dots_357 0x1002854 /* U+2854 BRAILLE PATTERN DOTS-357 */ +#define XKB_KEY_braille_dots_1357 0x1002855 /* U+2855 BRAILLE PATTERN DOTS-1357 */ +#define XKB_KEY_braille_dots_2357 0x1002856 /* U+2856 BRAILLE PATTERN DOTS-2357 */ +#define XKB_KEY_braille_dots_12357 0x1002857 /* U+2857 BRAILLE PATTERN DOTS-12357 */ +#define XKB_KEY_braille_dots_457 0x1002858 /* U+2858 BRAILLE PATTERN DOTS-457 */ +#define XKB_KEY_braille_dots_1457 0x1002859 /* U+2859 BRAILLE PATTERN DOTS-1457 */ +#define XKB_KEY_braille_dots_2457 0x100285a /* U+285a BRAILLE PATTERN DOTS-2457 */ +#define XKB_KEY_braille_dots_12457 0x100285b /* U+285b BRAILLE PATTERN DOTS-12457 */ +#define XKB_KEY_braille_dots_3457 0x100285c /* U+285c BRAILLE PATTERN DOTS-3457 */ +#define XKB_KEY_braille_dots_13457 0x100285d /* U+285d BRAILLE PATTERN DOTS-13457 */ +#define XKB_KEY_braille_dots_23457 0x100285e /* U+285e BRAILLE PATTERN DOTS-23457 */ +#define XKB_KEY_braille_dots_123457 0x100285f /* U+285f BRAILLE PATTERN DOTS-123457 */ +#define XKB_KEY_braille_dots_67 0x1002860 /* U+2860 BRAILLE PATTERN DOTS-67 */ +#define XKB_KEY_braille_dots_167 0x1002861 /* U+2861 BRAILLE PATTERN DOTS-167 */ +#define XKB_KEY_braille_dots_267 0x1002862 /* U+2862 BRAILLE PATTERN DOTS-267 */ +#define XKB_KEY_braille_dots_1267 0x1002863 /* U+2863 BRAILLE PATTERN DOTS-1267 */ +#define XKB_KEY_braille_dots_367 0x1002864 /* U+2864 BRAILLE PATTERN DOTS-367 */ +#define XKB_KEY_braille_dots_1367 0x1002865 /* U+2865 BRAILLE PATTERN DOTS-1367 */ +#define XKB_KEY_braille_dots_2367 0x1002866 /* U+2866 BRAILLE PATTERN DOTS-2367 */ +#define XKB_KEY_braille_dots_12367 0x1002867 /* U+2867 BRAILLE PATTERN DOTS-12367 */ +#define XKB_KEY_braille_dots_467 0x1002868 /* U+2868 BRAILLE PATTERN DOTS-467 */ +#define XKB_KEY_braille_dots_1467 0x1002869 /* U+2869 BRAILLE PATTERN DOTS-1467 */ +#define XKB_KEY_braille_dots_2467 0x100286a /* U+286a BRAILLE PATTERN DOTS-2467 */ +#define XKB_KEY_braille_dots_12467 0x100286b /* U+286b BRAILLE PATTERN DOTS-12467 */ +#define XKB_KEY_braille_dots_3467 0x100286c /* U+286c BRAILLE PATTERN DOTS-3467 */ +#define XKB_KEY_braille_dots_13467 0x100286d /* U+286d BRAILLE PATTERN DOTS-13467 */ +#define XKB_KEY_braille_dots_23467 0x100286e /* U+286e BRAILLE PATTERN DOTS-23467 */ +#define XKB_KEY_braille_dots_123467 0x100286f /* U+286f BRAILLE PATTERN DOTS-123467 */ +#define XKB_KEY_braille_dots_567 0x1002870 /* U+2870 BRAILLE PATTERN DOTS-567 */ +#define XKB_KEY_braille_dots_1567 0x1002871 /* U+2871 BRAILLE PATTERN DOTS-1567 */ +#define XKB_KEY_braille_dots_2567 0x1002872 /* U+2872 BRAILLE PATTERN DOTS-2567 */ +#define XKB_KEY_braille_dots_12567 0x1002873 /* U+2873 BRAILLE PATTERN DOTS-12567 */ +#define XKB_KEY_braille_dots_3567 0x1002874 /* U+2874 BRAILLE PATTERN DOTS-3567 */ +#define XKB_KEY_braille_dots_13567 0x1002875 /* U+2875 BRAILLE PATTERN DOTS-13567 */ +#define XKB_KEY_braille_dots_23567 0x1002876 /* U+2876 BRAILLE PATTERN DOTS-23567 */ +#define XKB_KEY_braille_dots_123567 0x1002877 /* U+2877 BRAILLE PATTERN DOTS-123567 */ +#define XKB_KEY_braille_dots_4567 0x1002878 /* U+2878 BRAILLE PATTERN DOTS-4567 */ +#define XKB_KEY_braille_dots_14567 0x1002879 /* U+2879 BRAILLE PATTERN DOTS-14567 */ +#define XKB_KEY_braille_dots_24567 0x100287a /* U+287a BRAILLE PATTERN DOTS-24567 */ +#define XKB_KEY_braille_dots_124567 0x100287b /* U+287b BRAILLE PATTERN DOTS-124567 */ +#define XKB_KEY_braille_dots_34567 0x100287c /* U+287c BRAILLE PATTERN DOTS-34567 */ +#define XKB_KEY_braille_dots_134567 0x100287d /* U+287d BRAILLE PATTERN DOTS-134567 */ +#define XKB_KEY_braille_dots_234567 0x100287e /* U+287e BRAILLE PATTERN DOTS-234567 */ +#define XKB_KEY_braille_dots_1234567 0x100287f /* U+287f BRAILLE PATTERN DOTS-1234567 */ +#define XKB_KEY_braille_dots_8 0x1002880 /* U+2880 BRAILLE PATTERN DOTS-8 */ +#define XKB_KEY_braille_dots_18 0x1002881 /* U+2881 BRAILLE PATTERN DOTS-18 */ +#define XKB_KEY_braille_dots_28 0x1002882 /* U+2882 BRAILLE PATTERN DOTS-28 */ +#define XKB_KEY_braille_dots_128 0x1002883 /* U+2883 BRAILLE PATTERN DOTS-128 */ +#define XKB_KEY_braille_dots_38 0x1002884 /* U+2884 BRAILLE PATTERN DOTS-38 */ +#define XKB_KEY_braille_dots_138 0x1002885 /* U+2885 BRAILLE PATTERN DOTS-138 */ +#define XKB_KEY_braille_dots_238 0x1002886 /* U+2886 BRAILLE PATTERN DOTS-238 */ +#define XKB_KEY_braille_dots_1238 0x1002887 /* U+2887 BRAILLE PATTERN DOTS-1238 */ +#define XKB_KEY_braille_dots_48 0x1002888 /* U+2888 BRAILLE PATTERN DOTS-48 */ +#define XKB_KEY_braille_dots_148 0x1002889 /* U+2889 BRAILLE PATTERN DOTS-148 */ +#define XKB_KEY_braille_dots_248 0x100288a /* U+288a BRAILLE PATTERN DOTS-248 */ +#define XKB_KEY_braille_dots_1248 0x100288b /* U+288b BRAILLE PATTERN DOTS-1248 */ +#define XKB_KEY_braille_dots_348 0x100288c /* U+288c BRAILLE PATTERN DOTS-348 */ +#define XKB_KEY_braille_dots_1348 0x100288d /* U+288d BRAILLE PATTERN DOTS-1348 */ +#define XKB_KEY_braille_dots_2348 0x100288e /* U+288e BRAILLE PATTERN DOTS-2348 */ +#define XKB_KEY_braille_dots_12348 0x100288f /* U+288f BRAILLE PATTERN DOTS-12348 */ +#define XKB_KEY_braille_dots_58 0x1002890 /* U+2890 BRAILLE PATTERN DOTS-58 */ +#define XKB_KEY_braille_dots_158 0x1002891 /* U+2891 BRAILLE PATTERN DOTS-158 */ +#define XKB_KEY_braille_dots_258 0x1002892 /* U+2892 BRAILLE PATTERN DOTS-258 */ +#define XKB_KEY_braille_dots_1258 0x1002893 /* U+2893 BRAILLE PATTERN DOTS-1258 */ +#define XKB_KEY_braille_dots_358 0x1002894 /* U+2894 BRAILLE PATTERN DOTS-358 */ +#define XKB_KEY_braille_dots_1358 0x1002895 /* U+2895 BRAILLE PATTERN DOTS-1358 */ +#define XKB_KEY_braille_dots_2358 0x1002896 /* U+2896 BRAILLE PATTERN DOTS-2358 */ +#define XKB_KEY_braille_dots_12358 0x1002897 /* U+2897 BRAILLE PATTERN DOTS-12358 */ +#define XKB_KEY_braille_dots_458 0x1002898 /* U+2898 BRAILLE PATTERN DOTS-458 */ +#define XKB_KEY_braille_dots_1458 0x1002899 /* U+2899 BRAILLE PATTERN DOTS-1458 */ +#define XKB_KEY_braille_dots_2458 0x100289a /* U+289a BRAILLE PATTERN DOTS-2458 */ +#define XKB_KEY_braille_dots_12458 0x100289b /* U+289b BRAILLE PATTERN DOTS-12458 */ +#define XKB_KEY_braille_dots_3458 0x100289c /* U+289c BRAILLE PATTERN DOTS-3458 */ +#define XKB_KEY_braille_dots_13458 0x100289d /* U+289d BRAILLE PATTERN DOTS-13458 */ +#define XKB_KEY_braille_dots_23458 0x100289e /* U+289e BRAILLE PATTERN DOTS-23458 */ +#define XKB_KEY_braille_dots_123458 0x100289f /* U+289f BRAILLE PATTERN DOTS-123458 */ +#define XKB_KEY_braille_dots_68 0x10028a0 /* U+28a0 BRAILLE PATTERN DOTS-68 */ +#define XKB_KEY_braille_dots_168 0x10028a1 /* U+28a1 BRAILLE PATTERN DOTS-168 */ +#define XKB_KEY_braille_dots_268 0x10028a2 /* U+28a2 BRAILLE PATTERN DOTS-268 */ +#define XKB_KEY_braille_dots_1268 0x10028a3 /* U+28a3 BRAILLE PATTERN DOTS-1268 */ +#define XKB_KEY_braille_dots_368 0x10028a4 /* U+28a4 BRAILLE PATTERN DOTS-368 */ +#define XKB_KEY_braille_dots_1368 0x10028a5 /* U+28a5 BRAILLE PATTERN DOTS-1368 */ +#define XKB_KEY_braille_dots_2368 0x10028a6 /* U+28a6 BRAILLE PATTERN DOTS-2368 */ +#define XKB_KEY_braille_dots_12368 0x10028a7 /* U+28a7 BRAILLE PATTERN DOTS-12368 */ +#define XKB_KEY_braille_dots_468 0x10028a8 /* U+28a8 BRAILLE PATTERN DOTS-468 */ +#define XKB_KEY_braille_dots_1468 0x10028a9 /* U+28a9 BRAILLE PATTERN DOTS-1468 */ +#define XKB_KEY_braille_dots_2468 0x10028aa /* U+28aa BRAILLE PATTERN DOTS-2468 */ +#define XKB_KEY_braille_dots_12468 0x10028ab /* U+28ab BRAILLE PATTERN DOTS-12468 */ +#define XKB_KEY_braille_dots_3468 0x10028ac /* U+28ac BRAILLE PATTERN DOTS-3468 */ +#define XKB_KEY_braille_dots_13468 0x10028ad /* U+28ad BRAILLE PATTERN DOTS-13468 */ +#define XKB_KEY_braille_dots_23468 0x10028ae /* U+28ae BRAILLE PATTERN DOTS-23468 */ +#define XKB_KEY_braille_dots_123468 0x10028af /* U+28af BRAILLE PATTERN DOTS-123468 */ +#define XKB_KEY_braille_dots_568 0x10028b0 /* U+28b0 BRAILLE PATTERN DOTS-568 */ +#define XKB_KEY_braille_dots_1568 0x10028b1 /* U+28b1 BRAILLE PATTERN DOTS-1568 */ +#define XKB_KEY_braille_dots_2568 0x10028b2 /* U+28b2 BRAILLE PATTERN DOTS-2568 */ +#define XKB_KEY_braille_dots_12568 0x10028b3 /* U+28b3 BRAILLE PATTERN DOTS-12568 */ +#define XKB_KEY_braille_dots_3568 0x10028b4 /* U+28b4 BRAILLE PATTERN DOTS-3568 */ +#define XKB_KEY_braille_dots_13568 0x10028b5 /* U+28b5 BRAILLE PATTERN DOTS-13568 */ +#define XKB_KEY_braille_dots_23568 0x10028b6 /* U+28b6 BRAILLE PATTERN DOTS-23568 */ +#define XKB_KEY_braille_dots_123568 0x10028b7 /* U+28b7 BRAILLE PATTERN DOTS-123568 */ +#define XKB_KEY_braille_dots_4568 0x10028b8 /* U+28b8 BRAILLE PATTERN DOTS-4568 */ +#define XKB_KEY_braille_dots_14568 0x10028b9 /* U+28b9 BRAILLE PATTERN DOTS-14568 */ +#define XKB_KEY_braille_dots_24568 0x10028ba /* U+28ba BRAILLE PATTERN DOTS-24568 */ +#define XKB_KEY_braille_dots_124568 0x10028bb /* U+28bb BRAILLE PATTERN DOTS-124568 */ +#define XKB_KEY_braille_dots_34568 0x10028bc /* U+28bc BRAILLE PATTERN DOTS-34568 */ +#define XKB_KEY_braille_dots_134568 0x10028bd /* U+28bd BRAILLE PATTERN DOTS-134568 */ +#define XKB_KEY_braille_dots_234568 0x10028be /* U+28be BRAILLE PATTERN DOTS-234568 */ +#define XKB_KEY_braille_dots_1234568 0x10028bf /* U+28bf BRAILLE PATTERN DOTS-1234568 */ +#define XKB_KEY_braille_dots_78 0x10028c0 /* U+28c0 BRAILLE PATTERN DOTS-78 */ +#define XKB_KEY_braille_dots_178 0x10028c1 /* U+28c1 BRAILLE PATTERN DOTS-178 */ +#define XKB_KEY_braille_dots_278 0x10028c2 /* U+28c2 BRAILLE PATTERN DOTS-278 */ +#define XKB_KEY_braille_dots_1278 0x10028c3 /* U+28c3 BRAILLE PATTERN DOTS-1278 */ +#define XKB_KEY_braille_dots_378 0x10028c4 /* U+28c4 BRAILLE PATTERN DOTS-378 */ +#define XKB_KEY_braille_dots_1378 0x10028c5 /* U+28c5 BRAILLE PATTERN DOTS-1378 */ +#define XKB_KEY_braille_dots_2378 0x10028c6 /* U+28c6 BRAILLE PATTERN DOTS-2378 */ +#define XKB_KEY_braille_dots_12378 0x10028c7 /* U+28c7 BRAILLE PATTERN DOTS-12378 */ +#define XKB_KEY_braille_dots_478 0x10028c8 /* U+28c8 BRAILLE PATTERN DOTS-478 */ +#define XKB_KEY_braille_dots_1478 0x10028c9 /* U+28c9 BRAILLE PATTERN DOTS-1478 */ +#define XKB_KEY_braille_dots_2478 0x10028ca /* U+28ca BRAILLE PATTERN DOTS-2478 */ +#define XKB_KEY_braille_dots_12478 0x10028cb /* U+28cb BRAILLE PATTERN DOTS-12478 */ +#define XKB_KEY_braille_dots_3478 0x10028cc /* U+28cc BRAILLE PATTERN DOTS-3478 */ +#define XKB_KEY_braille_dots_13478 0x10028cd /* U+28cd BRAILLE PATTERN DOTS-13478 */ +#define XKB_KEY_braille_dots_23478 0x10028ce /* U+28ce BRAILLE PATTERN DOTS-23478 */ +#define XKB_KEY_braille_dots_123478 0x10028cf /* U+28cf BRAILLE PATTERN DOTS-123478 */ +#define XKB_KEY_braille_dots_578 0x10028d0 /* U+28d0 BRAILLE PATTERN DOTS-578 */ +#define XKB_KEY_braille_dots_1578 0x10028d1 /* U+28d1 BRAILLE PATTERN DOTS-1578 */ +#define XKB_KEY_braille_dots_2578 0x10028d2 /* U+28d2 BRAILLE PATTERN DOTS-2578 */ +#define XKB_KEY_braille_dots_12578 0x10028d3 /* U+28d3 BRAILLE PATTERN DOTS-12578 */ +#define XKB_KEY_braille_dots_3578 0x10028d4 /* U+28d4 BRAILLE PATTERN DOTS-3578 */ +#define XKB_KEY_braille_dots_13578 0x10028d5 /* U+28d5 BRAILLE PATTERN DOTS-13578 */ +#define XKB_KEY_braille_dots_23578 0x10028d6 /* U+28d6 BRAILLE PATTERN DOTS-23578 */ +#define XKB_KEY_braille_dots_123578 0x10028d7 /* U+28d7 BRAILLE PATTERN DOTS-123578 */ +#define XKB_KEY_braille_dots_4578 0x10028d8 /* U+28d8 BRAILLE PATTERN DOTS-4578 */ +#define XKB_KEY_braille_dots_14578 0x10028d9 /* U+28d9 BRAILLE PATTERN DOTS-14578 */ +#define XKB_KEY_braille_dots_24578 0x10028da /* U+28da BRAILLE PATTERN DOTS-24578 */ +#define XKB_KEY_braille_dots_124578 0x10028db /* U+28db BRAILLE PATTERN DOTS-124578 */ +#define XKB_KEY_braille_dots_34578 0x10028dc /* U+28dc BRAILLE PATTERN DOTS-34578 */ +#define XKB_KEY_braille_dots_134578 0x10028dd /* U+28dd BRAILLE PATTERN DOTS-134578 */ +#define XKB_KEY_braille_dots_234578 0x10028de /* U+28de BRAILLE PATTERN DOTS-234578 */ +#define XKB_KEY_braille_dots_1234578 0x10028df /* U+28df BRAILLE PATTERN DOTS-1234578 */ +#define XKB_KEY_braille_dots_678 0x10028e0 /* U+28e0 BRAILLE PATTERN DOTS-678 */ +#define XKB_KEY_braille_dots_1678 0x10028e1 /* U+28e1 BRAILLE PATTERN DOTS-1678 */ +#define XKB_KEY_braille_dots_2678 0x10028e2 /* U+28e2 BRAILLE PATTERN DOTS-2678 */ +#define XKB_KEY_braille_dots_12678 0x10028e3 /* U+28e3 BRAILLE PATTERN DOTS-12678 */ +#define XKB_KEY_braille_dots_3678 0x10028e4 /* U+28e4 BRAILLE PATTERN DOTS-3678 */ +#define XKB_KEY_braille_dots_13678 0x10028e5 /* U+28e5 BRAILLE PATTERN DOTS-13678 */ +#define XKB_KEY_braille_dots_23678 0x10028e6 /* U+28e6 BRAILLE PATTERN DOTS-23678 */ +#define XKB_KEY_braille_dots_123678 0x10028e7 /* U+28e7 BRAILLE PATTERN DOTS-123678 */ +#define XKB_KEY_braille_dots_4678 0x10028e8 /* U+28e8 BRAILLE PATTERN DOTS-4678 */ +#define XKB_KEY_braille_dots_14678 0x10028e9 /* U+28e9 BRAILLE PATTERN DOTS-14678 */ +#define XKB_KEY_braille_dots_24678 0x10028ea /* U+28ea BRAILLE PATTERN DOTS-24678 */ +#define XKB_KEY_braille_dots_124678 0x10028eb /* U+28eb BRAILLE PATTERN DOTS-124678 */ +#define XKB_KEY_braille_dots_34678 0x10028ec /* U+28ec BRAILLE PATTERN DOTS-34678 */ +#define XKB_KEY_braille_dots_134678 0x10028ed /* U+28ed BRAILLE PATTERN DOTS-134678 */ +#define XKB_KEY_braille_dots_234678 0x10028ee /* U+28ee BRAILLE PATTERN DOTS-234678 */ +#define XKB_KEY_braille_dots_1234678 0x10028ef /* U+28ef BRAILLE PATTERN DOTS-1234678 */ +#define XKB_KEY_braille_dots_5678 0x10028f0 /* U+28f0 BRAILLE PATTERN DOTS-5678 */ +#define XKB_KEY_braille_dots_15678 0x10028f1 /* U+28f1 BRAILLE PATTERN DOTS-15678 */ +#define XKB_KEY_braille_dots_25678 0x10028f2 /* U+28f2 BRAILLE PATTERN DOTS-25678 */ +#define XKB_KEY_braille_dots_125678 0x10028f3 /* U+28f3 BRAILLE PATTERN DOTS-125678 */ +#define XKB_KEY_braille_dots_35678 0x10028f4 /* U+28f4 BRAILLE PATTERN DOTS-35678 */ +#define XKB_KEY_braille_dots_135678 0x10028f5 /* U+28f5 BRAILLE PATTERN DOTS-135678 */ +#define XKB_KEY_braille_dots_235678 0x10028f6 /* U+28f6 BRAILLE PATTERN DOTS-235678 */ +#define XKB_KEY_braille_dots_1235678 0x10028f7 /* U+28f7 BRAILLE PATTERN DOTS-1235678 */ +#define XKB_KEY_braille_dots_45678 0x10028f8 /* U+28f8 BRAILLE PATTERN DOTS-45678 */ +#define XKB_KEY_braille_dots_145678 0x10028f9 /* U+28f9 BRAILLE PATTERN DOTS-145678 */ +#define XKB_KEY_braille_dots_245678 0x10028fa /* U+28fa BRAILLE PATTERN DOTS-245678 */ +#define XKB_KEY_braille_dots_1245678 0x10028fb /* U+28fb BRAILLE PATTERN DOTS-1245678 */ +#define XKB_KEY_braille_dots_345678 0x10028fc /* U+28fc BRAILLE PATTERN DOTS-345678 */ +#define XKB_KEY_braille_dots_1345678 0x10028fd /* U+28fd BRAILLE PATTERN DOTS-1345678 */ +#define XKB_KEY_braille_dots_2345678 0x10028fe /* U+28fe BRAILLE PATTERN DOTS-2345678 */ +#define XKB_KEY_braille_dots_12345678 0x10028ff /* U+28ff BRAILLE PATTERN DOTS-12345678 */ + +/* + * Sinhala (http://unicode.org/charts/PDF/U0D80.pdf) + * http://www.nongnu.org/sinhala/doc/transliteration/sinhala-transliteration_6.html + */ + +#define XKB_KEY_Sinh_ng 0x1000d82 /* U+0D82 SINHALA ANUSVARAYA */ +#define XKB_KEY_Sinh_h2 0x1000d83 /* U+0D83 SINHALA VISARGAYA */ +#define XKB_KEY_Sinh_a 0x1000d85 /* U+0D85 SINHALA AYANNA */ +#define XKB_KEY_Sinh_aa 0x1000d86 /* U+0D86 SINHALA AAYANNA */ +#define XKB_KEY_Sinh_ae 0x1000d87 /* U+0D87 SINHALA AEYANNA */ +#define XKB_KEY_Sinh_aee 0x1000d88 /* U+0D88 SINHALA AEEYANNA */ +#define XKB_KEY_Sinh_i 0x1000d89 /* U+0D89 SINHALA IYANNA */ +#define XKB_KEY_Sinh_ii 0x1000d8a /* U+0D8A SINHALA IIYANNA */ +#define XKB_KEY_Sinh_u 0x1000d8b /* U+0D8B SINHALA UYANNA */ +#define XKB_KEY_Sinh_uu 0x1000d8c /* U+0D8C SINHALA UUYANNA */ +#define XKB_KEY_Sinh_ri 0x1000d8d /* U+0D8D SINHALA IRUYANNA */ +#define XKB_KEY_Sinh_rii 0x1000d8e /* U+0D8E SINHALA IRUUYANNA */ +#define XKB_KEY_Sinh_lu 0x1000d8f /* U+0D8F SINHALA ILUYANNA */ +#define XKB_KEY_Sinh_luu 0x1000d90 /* U+0D90 SINHALA ILUUYANNA */ +#define XKB_KEY_Sinh_e 0x1000d91 /* U+0D91 SINHALA EYANNA */ +#define XKB_KEY_Sinh_ee 0x1000d92 /* U+0D92 SINHALA EEYANNA */ +#define XKB_KEY_Sinh_ai 0x1000d93 /* U+0D93 SINHALA AIYANNA */ +#define XKB_KEY_Sinh_o 0x1000d94 /* U+0D94 SINHALA OYANNA */ +#define XKB_KEY_Sinh_oo 0x1000d95 /* U+0D95 SINHALA OOYANNA */ +#define XKB_KEY_Sinh_au 0x1000d96 /* U+0D96 SINHALA AUYANNA */ +#define XKB_KEY_Sinh_ka 0x1000d9a /* U+0D9A SINHALA KAYANNA */ +#define XKB_KEY_Sinh_kha 0x1000d9b /* U+0D9B SINHALA MAHA. KAYANNA */ +#define XKB_KEY_Sinh_ga 0x1000d9c /* U+0D9C SINHALA GAYANNA */ +#define XKB_KEY_Sinh_gha 0x1000d9d /* U+0D9D SINHALA MAHA. GAYANNA */ +#define XKB_KEY_Sinh_ng2 0x1000d9e /* U+0D9E SINHALA KANTAJA NAASIKYAYA */ +#define XKB_KEY_Sinh_nga 0x1000d9f /* U+0D9F SINHALA SANYAKA GAYANNA */ +#define XKB_KEY_Sinh_ca 0x1000da0 /* U+0DA0 SINHALA CAYANNA */ +#define XKB_KEY_Sinh_cha 0x1000da1 /* U+0DA1 SINHALA MAHA. CAYANNA */ +#define XKB_KEY_Sinh_ja 0x1000da2 /* U+0DA2 SINHALA JAYANNA */ +#define XKB_KEY_Sinh_jha 0x1000da3 /* U+0DA3 SINHALA MAHA. JAYANNA */ +#define XKB_KEY_Sinh_nya 0x1000da4 /* U+0DA4 SINHALA TAALUJA NAASIKYAYA */ +#define XKB_KEY_Sinh_jnya 0x1000da5 /* U+0DA5 SINHALA TAALUJA SANYOOGA NAASIKYAYA */ +#define XKB_KEY_Sinh_nja 0x1000da6 /* U+0DA6 SINHALA SANYAKA JAYANNA */ +#define XKB_KEY_Sinh_tta 0x1000da7 /* U+0DA7 SINHALA TTAYANNA */ +#define XKB_KEY_Sinh_ttha 0x1000da8 /* U+0DA8 SINHALA MAHA. TTAYANNA */ +#define XKB_KEY_Sinh_dda 0x1000da9 /* U+0DA9 SINHALA DDAYANNA */ +#define XKB_KEY_Sinh_ddha 0x1000daa /* U+0DAA SINHALA MAHA. DDAYANNA */ +#define XKB_KEY_Sinh_nna 0x1000dab /* U+0DAB SINHALA MUURDHAJA NAYANNA */ +#define XKB_KEY_Sinh_ndda 0x1000dac /* U+0DAC SINHALA SANYAKA DDAYANNA */ +#define XKB_KEY_Sinh_tha 0x1000dad /* U+0DAD SINHALA TAYANNA */ +#define XKB_KEY_Sinh_thha 0x1000dae /* U+0DAE SINHALA MAHA. TAYANNA */ +#define XKB_KEY_Sinh_dha 0x1000daf /* U+0DAF SINHALA DAYANNA */ +#define XKB_KEY_Sinh_dhha 0x1000db0 /* U+0DB0 SINHALA MAHA. DAYANNA */ +#define XKB_KEY_Sinh_na 0x1000db1 /* U+0DB1 SINHALA DANTAJA NAYANNA */ +#define XKB_KEY_Sinh_ndha 0x1000db3 /* U+0DB3 SINHALA SANYAKA DAYANNA */ +#define XKB_KEY_Sinh_pa 0x1000db4 /* U+0DB4 SINHALA PAYANNA */ +#define XKB_KEY_Sinh_pha 0x1000db5 /* U+0DB5 SINHALA MAHA. PAYANNA */ +#define XKB_KEY_Sinh_ba 0x1000db6 /* U+0DB6 SINHALA BAYANNA */ +#define XKB_KEY_Sinh_bha 0x1000db7 /* U+0DB7 SINHALA MAHA. BAYANNA */ +#define XKB_KEY_Sinh_ma 0x1000db8 /* U+0DB8 SINHALA MAYANNA */ +#define XKB_KEY_Sinh_mba 0x1000db9 /* U+0DB9 SINHALA AMBA BAYANNA */ +#define XKB_KEY_Sinh_ya 0x1000dba /* U+0DBA SINHALA YAYANNA */ +#define XKB_KEY_Sinh_ra 0x1000dbb /* U+0DBB SINHALA RAYANNA */ +#define XKB_KEY_Sinh_la 0x1000dbd /* U+0DBD SINHALA DANTAJA LAYANNA */ +#define XKB_KEY_Sinh_va 0x1000dc0 /* U+0DC0 SINHALA VAYANNA */ +#define XKB_KEY_Sinh_sha 0x1000dc1 /* U+0DC1 SINHALA TAALUJA SAYANNA */ +#define XKB_KEY_Sinh_ssha 0x1000dc2 /* U+0DC2 SINHALA MUURDHAJA SAYANNA */ +#define XKB_KEY_Sinh_sa 0x1000dc3 /* U+0DC3 SINHALA DANTAJA SAYANNA */ +#define XKB_KEY_Sinh_ha 0x1000dc4 /* U+0DC4 SINHALA HAYANNA */ +#define XKB_KEY_Sinh_lla 0x1000dc5 /* U+0DC5 SINHALA MUURDHAJA LAYANNA */ +#define XKB_KEY_Sinh_fa 0x1000dc6 /* U+0DC6 SINHALA FAYANNA */ +#define XKB_KEY_Sinh_al 0x1000dca /* U+0DCA SINHALA AL-LAKUNA */ +#define XKB_KEY_Sinh_aa2 0x1000dcf /* U+0DCF SINHALA AELA-PILLA */ +#define XKB_KEY_Sinh_ae2 0x1000dd0 /* U+0DD0 SINHALA AEDA-PILLA */ +#define XKB_KEY_Sinh_aee2 0x1000dd1 /* U+0DD1 SINHALA DIGA AEDA-PILLA */ +#define XKB_KEY_Sinh_i2 0x1000dd2 /* U+0DD2 SINHALA IS-PILLA */ +#define XKB_KEY_Sinh_ii2 0x1000dd3 /* U+0DD3 SINHALA DIGA IS-PILLA */ +#define XKB_KEY_Sinh_u2 0x1000dd4 /* U+0DD4 SINHALA PAA-PILLA */ +#define XKB_KEY_Sinh_uu2 0x1000dd6 /* U+0DD6 SINHALA DIGA PAA-PILLA */ +#define XKB_KEY_Sinh_ru2 0x1000dd8 /* U+0DD8 SINHALA GAETTA-PILLA */ +#define XKB_KEY_Sinh_e2 0x1000dd9 /* U+0DD9 SINHALA KOMBUVA */ +#define XKB_KEY_Sinh_ee2 0x1000dda /* U+0DDA SINHALA DIGA KOMBUVA */ +#define XKB_KEY_Sinh_ai2 0x1000ddb /* U+0DDB SINHALA KOMBU DEKA */ +#define XKB_KEY_Sinh_o2 0x1000ddc /* U+0DDC SINHALA KOMBUVA HAA AELA-PILLA*/ +#define XKB_KEY_Sinh_oo2 0x1000ddd /* U+0DDD SINHALA KOMBUVA HAA DIGA AELA-PILLA*/ +#define XKB_KEY_Sinh_au2 0x1000dde /* U+0DDE SINHALA KOMBUVA HAA GAYANUKITTA */ +#define XKB_KEY_Sinh_lu2 0x1000ddf /* U+0DDF SINHALA GAYANUKITTA */ +#define XKB_KEY_Sinh_ruu2 0x1000df2 /* U+0DF2 SINHALA DIGA GAETTA-PILLA */ +#define XKB_KEY_Sinh_luu2 0x1000df3 /* U+0DF3 SINHALA DIGA GAYANUKITTA */ +#define XKB_KEY_Sinh_kunddaliya 0x1000df4 /* U+0DF4 SINHALA KUNDDALIYA */ +/* + * XFree86 vendor specific keysyms. + * + * The XFree86 keysym range is 0x10080001 - 0x1008FFFF. + * + * When adding new entries, the xc/lib/XKeysymDB file should also be + * updated to make the new entries visible to Xlib. + */ + +/* + * ModeLock + * + * This one is old, and not really used any more since XKB offers this + * functionality. + */ + +#define XKB_KEY_XF86ModeLock 0x1008FF01 /* Mode Switch Lock */ + +/* + * Note, 0x1008FF07 - 0x1008FF0F are free and should be used for misc new + * keysyms that don't fit into any of the groups below. + * + * 0x1008FF64, 0x1008FF6F, 0x1008FF71, 0x1008FF83 are no longer used, + * and should be used first for new keysyms. + * + * Check in keysymdef.h for generic symbols before adding new XFree86-specific + * symbols here. + * + * X.Org will not be adding to the XF86 set of keysyms, though they have + * been adopted and are considered a "standard" part of X keysym definitions. + * XFree86 never properly commented these keysyms, so we have done our + * best to explain the semantic meaning of these keys. + * + * XFree86 has removed their mail archives of the period, that might have + * shed more light on some of these definitions. Until/unless we resurrect + * these archives, these are from memory and usage. + */ + + +/* Backlight controls. */ +#define XKB_KEY_XF86MonBrightnessUp 0x1008FF02 /* Monitor/panel brightness */ +#define XKB_KEY_XF86MonBrightnessDown 0x1008FF03 /* Monitor/panel brightness */ +#define XKB_KEY_XF86KbdLightOnOff 0x1008FF04 /* Keyboards may be lit */ +#define XKB_KEY_XF86KbdBrightnessUp 0x1008FF05 /* Keyboards may be lit */ +#define XKB_KEY_XF86KbdBrightnessDown 0x1008FF06 /* Keyboards may be lit */ + +/* + * Keys found on some "Internet" keyboards. + */ +#define XKB_KEY_XF86Standby 0x1008FF10 /* System into standby mode */ +#define XKB_KEY_XF86AudioLowerVolume 0x1008FF11 /* Volume control down */ +#define XKB_KEY_XF86AudioMute 0x1008FF12 /* Mute sound from the system */ +#define XKB_KEY_XF86AudioRaiseVolume 0x1008FF13 /* Volume control up */ +#define XKB_KEY_XF86AudioPlay 0x1008FF14 /* Start playing of audio > */ +#define XKB_KEY_XF86AudioStop 0x1008FF15 /* Stop playing audio */ +#define XKB_KEY_XF86AudioPrev 0x1008FF16 /* Previous track */ +#define XKB_KEY_XF86AudioNext 0x1008FF17 /* Next track */ +#define XKB_KEY_XF86HomePage 0x1008FF18 /* Display user's home page */ +#define XKB_KEY_XF86Mail 0x1008FF19 /* Invoke user's mail program */ +#define XKB_KEY_XF86Start 0x1008FF1A /* Start application */ +#define XKB_KEY_XF86Search 0x1008FF1B /* Search */ +#define XKB_KEY_XF86AudioRecord 0x1008FF1C /* Record audio application */ + +/* These are sometimes found on PDA's (e.g. Palm, PocketPC or elsewhere) */ +#define XKB_KEY_XF86Calculator 0x1008FF1D /* Invoke calculator program */ +#define XKB_KEY_XF86Memo 0x1008FF1E /* Invoke Memo taking program */ +#define XKB_KEY_XF86ToDoList 0x1008FF1F /* Invoke To Do List program */ +#define XKB_KEY_XF86Calendar 0x1008FF20 /* Invoke Calendar program */ +#define XKB_KEY_XF86PowerDown 0x1008FF21 /* Deep sleep the system */ +#define XKB_KEY_XF86ContrastAdjust 0x1008FF22 /* Adjust screen contrast */ +#define XKB_KEY_XF86RockerUp 0x1008FF23 /* Rocker switches exist up */ +#define XKB_KEY_XF86RockerDown 0x1008FF24 /* and down */ +#define XKB_KEY_XF86RockerEnter 0x1008FF25 /* and let you press them */ + +/* Some more "Internet" keyboard symbols */ +#define XKB_KEY_XF86Back 0x1008FF26 /* Like back on a browser */ +#define XKB_KEY_XF86Forward 0x1008FF27 /* Like forward on a browser */ +#define XKB_KEY_XF86Stop 0x1008FF28 /* Stop current operation */ +#define XKB_KEY_XF86Refresh 0x1008FF29 /* Refresh the page */ +#define XKB_KEY_XF86PowerOff 0x1008FF2A /* Power off system entirely */ +#define XKB_KEY_XF86WakeUp 0x1008FF2B /* Wake up system from sleep */ +#define XKB_KEY_XF86Eject 0x1008FF2C /* Eject device (e.g. DVD) */ +#define XKB_KEY_XF86ScreenSaver 0x1008FF2D /* Invoke screensaver */ +#define XKB_KEY_XF86WWW 0x1008FF2E /* Invoke web browser */ +#define XKB_KEY_XF86Sleep 0x1008FF2F /* Put system to sleep */ +#define XKB_KEY_XF86Favorites 0x1008FF30 /* Show favorite locations */ +#define XKB_KEY_XF86AudioPause 0x1008FF31 /* Pause audio playing */ +#define XKB_KEY_XF86AudioMedia 0x1008FF32 /* Launch media collection app */ +#define XKB_KEY_XF86MyComputer 0x1008FF33 /* Display "My Computer" window */ +#define XKB_KEY_XF86VendorHome 0x1008FF34 /* Display vendor home web site */ +#define XKB_KEY_XF86LightBulb 0x1008FF35 /* Light bulb keys exist */ +#define XKB_KEY_XF86Shop 0x1008FF36 /* Display shopping web site */ +#define XKB_KEY_XF86History 0x1008FF37 /* Show history of web surfing */ +#define XKB_KEY_XF86OpenURL 0x1008FF38 /* Open selected URL */ +#define XKB_KEY_XF86AddFavorite 0x1008FF39 /* Add URL to favorites list */ +#define XKB_KEY_XF86HotLinks 0x1008FF3A /* Show "hot" links */ +#define XKB_KEY_XF86BrightnessAdjust 0x1008FF3B /* Invoke brightness adj. UI */ +#define XKB_KEY_XF86Finance 0x1008FF3C /* Display financial site */ +#define XKB_KEY_XF86Community 0x1008FF3D /* Display user's community */ +#define XKB_KEY_XF86AudioRewind 0x1008FF3E /* "rewind" audio track */ +#define XKB_KEY_XF86BackForward 0x1008FF3F /* ??? */ +#define XKB_KEY_XF86Launch0 0x1008FF40 /* Launch Application */ +#define XKB_KEY_XF86Launch1 0x1008FF41 /* Launch Application */ +#define XKB_KEY_XF86Launch2 0x1008FF42 /* Launch Application */ +#define XKB_KEY_XF86Launch3 0x1008FF43 /* Launch Application */ +#define XKB_KEY_XF86Launch4 0x1008FF44 /* Launch Application */ +#define XKB_KEY_XF86Launch5 0x1008FF45 /* Launch Application */ +#define XKB_KEY_XF86Launch6 0x1008FF46 /* Launch Application */ +#define XKB_KEY_XF86Launch7 0x1008FF47 /* Launch Application */ +#define XKB_KEY_XF86Launch8 0x1008FF48 /* Launch Application */ +#define XKB_KEY_XF86Launch9 0x1008FF49 /* Launch Application */ +#define XKB_KEY_XF86LaunchA 0x1008FF4A /* Launch Application */ +#define XKB_KEY_XF86LaunchB 0x1008FF4B /* Launch Application */ +#define XKB_KEY_XF86LaunchC 0x1008FF4C /* Launch Application */ +#define XKB_KEY_XF86LaunchD 0x1008FF4D /* Launch Application */ +#define XKB_KEY_XF86LaunchE 0x1008FF4E /* Launch Application */ +#define XKB_KEY_XF86LaunchF 0x1008FF4F /* Launch Application */ + +#define XKB_KEY_XF86ApplicationLeft 0x1008FF50 /* switch to application, left */ +#define XKB_KEY_XF86ApplicationRight 0x1008FF51 /* switch to application, right*/ +#define XKB_KEY_XF86Book 0x1008FF52 /* Launch bookreader */ +#define XKB_KEY_XF86CD 0x1008FF53 /* Launch CD/DVD player */ +#define XKB_KEY_XF86Calculater 0x1008FF54 /* Launch Calculater */ +#define XKB_KEY_XF86Clear 0x1008FF55 /* Clear window, screen */ +#define XKB_KEY_XF86Close 0x1008FF56 /* Close window */ +#define XKB_KEY_XF86Copy 0x1008FF57 /* Copy selection */ +#define XKB_KEY_XF86Cut 0x1008FF58 /* Cut selection */ +#define XKB_KEY_XF86Display 0x1008FF59 /* Output switch key */ +#define XKB_KEY_XF86DOS 0x1008FF5A /* Launch DOS (emulation) */ +#define XKB_KEY_XF86Documents 0x1008FF5B /* Open documents window */ +#define XKB_KEY_XF86Excel 0x1008FF5C /* Launch spread sheet */ +#define XKB_KEY_XF86Explorer 0x1008FF5D /* Launch file explorer */ +#define XKB_KEY_XF86Game 0x1008FF5E /* Launch game */ +#define XKB_KEY_XF86Go 0x1008FF5F /* Go to URL */ +#define XKB_KEY_XF86iTouch 0x1008FF60 /* Logitch iTouch- don't use */ +#define XKB_KEY_XF86LogOff 0x1008FF61 /* Log off system */ +#define XKB_KEY_XF86Market 0x1008FF62 /* ?? */ +#define XKB_KEY_XF86Meeting 0x1008FF63 /* enter meeting in calendar */ +#define XKB_KEY_XF86MenuKB 0x1008FF65 /* distingush keyboard from PB */ +#define XKB_KEY_XF86MenuPB 0x1008FF66 /* distinuish PB from keyboard */ +#define XKB_KEY_XF86MySites 0x1008FF67 /* Favourites */ +#define XKB_KEY_XF86New 0x1008FF68 /* New (folder, document... */ +#define XKB_KEY_XF86News 0x1008FF69 /* News */ +#define XKB_KEY_XF86OfficeHome 0x1008FF6A /* Office home (old Staroffice)*/ +#define XKB_KEY_XF86Open 0x1008FF6B /* Open */ +#define XKB_KEY_XF86Option 0x1008FF6C /* ?? */ +#define XKB_KEY_XF86Paste 0x1008FF6D /* Paste */ +#define XKB_KEY_XF86Phone 0x1008FF6E /* Launch phone; dial number */ +#define XKB_KEY_XF86Q 0x1008FF70 /* Compaq's Q - don't use */ +#define XKB_KEY_XF86Reply 0x1008FF72 /* Reply e.g., mail */ +#define XKB_KEY_XF86Reload 0x1008FF73 /* Reload web page, file, etc. */ +#define XKB_KEY_XF86RotateWindows 0x1008FF74 /* Rotate windows e.g. xrandr */ +#define XKB_KEY_XF86RotationPB 0x1008FF75 /* don't use */ +#define XKB_KEY_XF86RotationKB 0x1008FF76 /* don't use */ +#define XKB_KEY_XF86Save 0x1008FF77 /* Save (file, document, state */ +#define XKB_KEY_XF86ScrollUp 0x1008FF78 /* Scroll window/contents up */ +#define XKB_KEY_XF86ScrollDown 0x1008FF79 /* Scrool window/contentd down */ +#define XKB_KEY_XF86ScrollClick 0x1008FF7A /* Use XKB mousekeys instead */ +#define XKB_KEY_XF86Send 0x1008FF7B /* Send mail, file, object */ +#define XKB_KEY_XF86Spell 0x1008FF7C /* Spell checker */ +#define XKB_KEY_XF86SplitScreen 0x1008FF7D /* Split window or screen */ +#define XKB_KEY_XF86Support 0x1008FF7E /* Get support (??) */ +#define XKB_KEY_XF86TaskPane 0x1008FF7F /* Show tasks */ +#define XKB_KEY_XF86Terminal 0x1008FF80 /* Launch terminal emulator */ +#define XKB_KEY_XF86Tools 0x1008FF81 /* toolbox of desktop/app. */ +#define XKB_KEY_XF86Travel 0x1008FF82 /* ?? */ +#define XKB_KEY_XF86UserPB 0x1008FF84 /* ?? */ +#define XKB_KEY_XF86User1KB 0x1008FF85 /* ?? */ +#define XKB_KEY_XF86User2KB 0x1008FF86 /* ?? */ +#define XKB_KEY_XF86Video 0x1008FF87 /* Launch video player */ +#define XKB_KEY_XF86WheelButton 0x1008FF88 /* button from a mouse wheel */ +#define XKB_KEY_XF86Word 0x1008FF89 /* Launch word processor */ +#define XKB_KEY_XF86Xfer 0x1008FF8A +#define XKB_KEY_XF86ZoomIn 0x1008FF8B /* zoom in view, map, etc. */ +#define XKB_KEY_XF86ZoomOut 0x1008FF8C /* zoom out view, map, etc. */ + +#define XKB_KEY_XF86Away 0x1008FF8D /* mark yourself as away */ +#define XKB_KEY_XF86Messenger 0x1008FF8E /* as in instant messaging */ +#define XKB_KEY_XF86WebCam 0x1008FF8F /* Launch web camera app. */ +#define XKB_KEY_XF86MailForward 0x1008FF90 /* Forward in mail */ +#define XKB_KEY_XF86Pictures 0x1008FF91 /* Show pictures */ +#define XKB_KEY_XF86Music 0x1008FF92 /* Launch music application */ + +#define XKB_KEY_XF86Battery 0x1008FF93 /* Display battery information */ +#define XKB_KEY_XF86Bluetooth 0x1008FF94 /* Enable/disable Bluetooth */ +#define XKB_KEY_XF86WLAN 0x1008FF95 /* Enable/disable WLAN */ +#define XKB_KEY_XF86UWB 0x1008FF96 /* Enable/disable UWB */ + +#define XKB_KEY_XF86AudioForward 0x1008FF97 /* fast-forward audio track */ +#define XKB_KEY_XF86AudioRepeat 0x1008FF98 /* toggle repeat mode */ +#define XKB_KEY_XF86AudioRandomPlay 0x1008FF99 /* toggle shuffle mode */ +#define XKB_KEY_XF86Subtitle 0x1008FF9A /* cycle through subtitle */ +#define XKB_KEY_XF86AudioCycleTrack 0x1008FF9B /* cycle through audio tracks */ +#define XKB_KEY_XF86CycleAngle 0x1008FF9C /* cycle through angles */ +#define XKB_KEY_XF86FrameBack 0x1008FF9D /* video: go one frame back */ +#define XKB_KEY_XF86FrameForward 0x1008FF9E /* video: go one frame forward */ +#define XKB_KEY_XF86Time 0x1008FF9F /* display, or shows an entry for time seeking */ +#define XKB_KEY_XF86Select 0x1008FFA0 /* Select button on joypads and remotes */ +#define XKB_KEY_XF86View 0x1008FFA1 /* Show a view options/properties */ +#define XKB_KEY_XF86TopMenu 0x1008FFA2 /* Go to a top-level menu in a video */ + +#define XKB_KEY_XF86Red 0x1008FFA3 /* Red button */ +#define XKB_KEY_XF86Green 0x1008FFA4 /* Green button */ +#define XKB_KEY_XF86Yellow 0x1008FFA5 /* Yellow button */ +#define XKB_KEY_XF86Blue 0x1008FFA6 /* Blue button */ + +#define XKB_KEY_XF86Suspend 0x1008FFA7 /* Sleep to RAM */ +#define XKB_KEY_XF86Hibernate 0x1008FFA8 /* Sleep to disk */ +#define XKB_KEY_XF86TouchpadToggle 0x1008FFA9 /* Toggle between touchpad/trackstick */ +#define XKB_KEY_XF86TouchpadOn 0x1008FFB0 /* The touchpad got switched on */ +#define XKB_KEY_XF86TouchpadOff 0x1008FFB1 /* The touchpad got switched off */ + +#define XKB_KEY_XF86AudioMicMute 0x1008FFB2 /* Mute the Mic from the system */ + +/* Keys for special action keys (hot keys) */ +/* Virtual terminals on some operating systems */ +#define XKB_KEY_XF86Switch_VT_1 0x1008FE01 +#define XKB_KEY_XF86Switch_VT_2 0x1008FE02 +#define XKB_KEY_XF86Switch_VT_3 0x1008FE03 +#define XKB_KEY_XF86Switch_VT_4 0x1008FE04 +#define XKB_KEY_XF86Switch_VT_5 0x1008FE05 +#define XKB_KEY_XF86Switch_VT_6 0x1008FE06 +#define XKB_KEY_XF86Switch_VT_7 0x1008FE07 +#define XKB_KEY_XF86Switch_VT_8 0x1008FE08 +#define XKB_KEY_XF86Switch_VT_9 0x1008FE09 +#define XKB_KEY_XF86Switch_VT_10 0x1008FE0A +#define XKB_KEY_XF86Switch_VT_11 0x1008FE0B +#define XKB_KEY_XF86Switch_VT_12 0x1008FE0C + +#define XKB_KEY_XF86Ungrab 0x1008FE20 /* force ungrab */ +#define XKB_KEY_XF86ClearGrab 0x1008FE21 /* kill application with grab */ +#define XKB_KEY_XF86Next_VMode 0x1008FE22 /* next video mode available */ +#define XKB_KEY_XF86Prev_VMode 0x1008FE23 /* prev. video mode available */ +#define XKB_KEY_XF86LogWindowTree 0x1008FE24 /* print window tree to log */ +#define XKB_KEY_XF86LogGrabInfo 0x1008FE25 /* print all active grabs to log */ +/* + * Copyright (c) 1991, Oracle and/or its affiliates. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +/************************************************************ + +Copyright 1991, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + +***********************************************************/ + +/* + * Floating Accent + */ + +#define XKB_KEY_SunFA_Grave 0x1005FF00 +#define XKB_KEY_SunFA_Circum 0x1005FF01 +#define XKB_KEY_SunFA_Tilde 0x1005FF02 +#define XKB_KEY_SunFA_Acute 0x1005FF03 +#define XKB_KEY_SunFA_Diaeresis 0x1005FF04 +#define XKB_KEY_SunFA_Cedilla 0x1005FF05 + +/* + * Miscellaneous Functions + */ + +#define XKB_KEY_SunF36 0x1005FF10 /* Labeled F11 */ +#define XKB_KEY_SunF37 0x1005FF11 /* Labeled F12 */ + +#define XKB_KEY_SunSys_Req 0x1005FF60 +#define XKB_KEY_SunPrint_Screen 0x0000FF61 /* Same as XK_Print */ + +/* + * International & Multi-Key Character Composition + */ + +#define XKB_KEY_SunCompose 0x0000FF20 /* Same as XK_Multi_key */ +#define XKB_KEY_SunAltGraph 0x0000FF7E /* Same as XK_Mode_switch */ + +/* + * Cursor Control + */ + +#define XKB_KEY_SunPageUp 0x0000FF55 /* Same as XK_Prior */ +#define XKB_KEY_SunPageDown 0x0000FF56 /* Same as XK_Next */ + +/* + * Open Look Functions + */ + +#define XKB_KEY_SunUndo 0x0000FF65 /* Same as XK_Undo */ +#define XKB_KEY_SunAgain 0x0000FF66 /* Same as XK_Redo */ +#define XKB_KEY_SunFind 0x0000FF68 /* Same as XK_Find */ +#define XKB_KEY_SunStop 0x0000FF69 /* Same as XK_Cancel */ +#define XKB_KEY_SunProps 0x1005FF70 +#define XKB_KEY_SunFront 0x1005FF71 +#define XKB_KEY_SunCopy 0x1005FF72 +#define XKB_KEY_SunOpen 0x1005FF73 +#define XKB_KEY_SunPaste 0x1005FF74 +#define XKB_KEY_SunCut 0x1005FF75 + +#define XKB_KEY_SunPowerSwitch 0x1005FF76 +#define XKB_KEY_SunAudioLowerVolume 0x1005FF77 +#define XKB_KEY_SunAudioMute 0x1005FF78 +#define XKB_KEY_SunAudioRaiseVolume 0x1005FF79 +#define XKB_KEY_SunVideoDegauss 0x1005FF7A +#define XKB_KEY_SunVideoLowerBrightness 0x1005FF7B +#define XKB_KEY_SunVideoRaiseBrightness 0x1005FF7C +#define XKB_KEY_SunPowerSwitchShift 0x1005FF7D +/*********************************************************** + +Copyright 1988, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1988 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ + +/* + * DEC private keysyms + * (29th bit set) + */ + +/* two-key compose sequence initiators, chosen to map to Latin1 characters */ + +#define XKB_KEY_Dring_accent 0x1000FEB0 +#define XKB_KEY_Dcircumflex_accent 0x1000FE5E +#define XKB_KEY_Dcedilla_accent 0x1000FE2C +#define XKB_KEY_Dacute_accent 0x1000FE27 +#define XKB_KEY_Dgrave_accent 0x1000FE60 +#define XKB_KEY_Dtilde 0x1000FE7E +#define XKB_KEY_Ddiaeresis 0x1000FE22 + +/* special keysym for LK2** "Remove" key on editing keypad */ + +#define XKB_KEY_DRemove 0x1000FF00 /* Remove */ +/* + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall +not be used in advertising or otherwise to promote the sale, use or +other dealings in this Software without prior written authorization +from The Open Group. + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts, + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the names of Hewlett Packard +or Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +HEWLETT-PACKARD MAKES NO WARRANTY OF ANY KIND WITH REGARD +TO THIS SOFWARE, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. Hewlett-Packard shall not be liable for errors +contained herein or direct, indirect, special, incidental or +consequential damages in connection with the furnishing, +performance, or use of this material. + +*/ + + + +#define XKB_KEY_hpClearLine 0x1000FF6F +#define XKB_KEY_hpInsertLine 0x1000FF70 +#define XKB_KEY_hpDeleteLine 0x1000FF71 +#define XKB_KEY_hpInsertChar 0x1000FF72 +#define XKB_KEY_hpDeleteChar 0x1000FF73 +#define XKB_KEY_hpBackTab 0x1000FF74 +#define XKB_KEY_hpKP_BackTab 0x1000FF75 +#define XKB_KEY_hpModelock1 0x1000FF48 +#define XKB_KEY_hpModelock2 0x1000FF49 +#define XKB_KEY_hpReset 0x1000FF6C +#define XKB_KEY_hpSystem 0x1000FF6D +#define XKB_KEY_hpUser 0x1000FF6E +#define XKB_KEY_hpmute_acute 0x100000A8 +#define XKB_KEY_hpmute_grave 0x100000A9 +#define XKB_KEY_hpmute_asciicircum 0x100000AA +#define XKB_KEY_hpmute_diaeresis 0x100000AB +#define XKB_KEY_hpmute_asciitilde 0x100000AC +#define XKB_KEY_hplira 0x100000AF +#define XKB_KEY_hpguilder 0x100000BE +#define XKB_KEY_hpYdiaeresis 0x100000EE +#define XKB_KEY_hpIO 0x100000EE +#define XKB_KEY_hplongminus 0x100000F6 +#define XKB_KEY_hpblock 0x100000FC + + + +#define XKB_KEY_osfCopy 0x1004FF02 +#define XKB_KEY_osfCut 0x1004FF03 +#define XKB_KEY_osfPaste 0x1004FF04 +#define XKB_KEY_osfBackTab 0x1004FF07 +#define XKB_KEY_osfBackSpace 0x1004FF08 +#define XKB_KEY_osfClear 0x1004FF0B +#define XKB_KEY_osfEscape 0x1004FF1B +#define XKB_KEY_osfAddMode 0x1004FF31 +#define XKB_KEY_osfPrimaryPaste 0x1004FF32 +#define XKB_KEY_osfQuickPaste 0x1004FF33 +#define XKB_KEY_osfPageLeft 0x1004FF40 +#define XKB_KEY_osfPageUp 0x1004FF41 +#define XKB_KEY_osfPageDown 0x1004FF42 +#define XKB_KEY_osfPageRight 0x1004FF43 +#define XKB_KEY_osfActivate 0x1004FF44 +#define XKB_KEY_osfMenuBar 0x1004FF45 +#define XKB_KEY_osfLeft 0x1004FF51 +#define XKB_KEY_osfUp 0x1004FF52 +#define XKB_KEY_osfRight 0x1004FF53 +#define XKB_KEY_osfDown 0x1004FF54 +#define XKB_KEY_osfEndLine 0x1004FF57 +#define XKB_KEY_osfBeginLine 0x1004FF58 +#define XKB_KEY_osfEndData 0x1004FF59 +#define XKB_KEY_osfBeginData 0x1004FF5A +#define XKB_KEY_osfPrevMenu 0x1004FF5B +#define XKB_KEY_osfNextMenu 0x1004FF5C +#define XKB_KEY_osfPrevField 0x1004FF5D +#define XKB_KEY_osfNextField 0x1004FF5E +#define XKB_KEY_osfSelect 0x1004FF60 +#define XKB_KEY_osfInsert 0x1004FF63 +#define XKB_KEY_osfUndo 0x1004FF65 +#define XKB_KEY_osfMenu 0x1004FF67 +#define XKB_KEY_osfCancel 0x1004FF69 +#define XKB_KEY_osfHelp 0x1004FF6A +#define XKB_KEY_osfSelectAll 0x1004FF71 +#define XKB_KEY_osfDeselectAll 0x1004FF72 +#define XKB_KEY_osfReselect 0x1004FF73 +#define XKB_KEY_osfExtend 0x1004FF74 +#define XKB_KEY_osfRestore 0x1004FF78 +#define XKB_KEY_osfDelete 0x1004FFFF + + + +/************************************************************** + * The use of the following macros is deprecated. + * They are listed below only for backwards compatibility. + */ +#define XKB_KEY_Reset 0x1000FF6C +#define XKB_KEY_System 0x1000FF6D +#define XKB_KEY_User 0x1000FF6E +#define XKB_KEY_ClearLine 0x1000FF6F +#define XKB_KEY_InsertLine 0x1000FF70 +#define XKB_KEY_DeleteLine 0x1000FF71 +#define XKB_KEY_InsertChar 0x1000FF72 +#define XKB_KEY_DeleteChar 0x1000FF73 +#define XKB_KEY_BackTab 0x1000FF74 +#define XKB_KEY_KP_BackTab 0x1000FF75 +#define XKB_KEY_Ext16bit_L 0x1000FF76 +#define XKB_KEY_Ext16bit_R 0x1000FF77 +#define XKB_KEY_mute_acute 0x100000a8 +#define XKB_KEY_mute_grave 0x100000a9 +#define XKB_KEY_mute_asciicircum 0x100000aa +#define XKB_KEY_mute_diaeresis 0x100000ab +#define XKB_KEY_mute_asciitilde 0x100000ac +#define XKB_KEY_lira 0x100000af +#define XKB_KEY_guilder 0x100000be +#define XKB_KEY_IO 0x100000ee +#define XKB_KEY_longminus 0x100000f6 +#define XKB_KEY_block 0x100000fc + + + +#endif diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon-names.h b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon-names.h new file mode 100644 index 0000000..ecb551f --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon-names.h @@ -0,0 +1,45 @@ +/* + * Copyright © 2012 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Daniel Stone + */ + +#ifndef _XKBCOMMON_NAMES_H +#define _XKBCOMMON_NAMES_H + +/** + * @file + * @brief Predefined names for common modifiers and LEDs. + */ + +#define XKB_MOD_NAME_SHIFT "Shift" +#define XKB_MOD_NAME_CAPS "Lock" +#define XKB_MOD_NAME_CTRL "Control" +#define XKB_MOD_NAME_ALT "Mod1" +#define XKB_MOD_NAME_NUM "Mod2" +#define XKB_MOD_NAME_LOGO "Mod4" + +#define XKB_LED_NAME_CAPS "Caps Lock" +#define XKB_LED_NAME_NUM "Num Lock" +#define XKB_LED_NAME_SCROLL "Scroll Lock" + +#endif diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon-x11.h b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon-x11.h new file mode 100644 index 0000000..0158315 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon-x11.h @@ -0,0 +1,244 @@ +/* + * Copyright © 2013 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef _XKBCOMMON_X11_H +#define _XKBCOMMON_X11_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @file + * libxkbcommon-x11 API - Additional X11 support for xkbcommon. + */ + +/** + * @defgroup x11 X11 support + * Additional X11 support for xkbcommon. + * @since 0.4.0 + * + * @{ + */ + +/** + * @page x11-overview Overview + * @parblock + * + * The xkbcommon-x11 module provides a means for creating an xkb_keymap + * corresponding to the currently active keymap on the X server. To do + * so, it queries the XKB X11 extension using the xcb-xkb library. It + * can be used as a replacement for Xlib's keyboard handling. + * + * Following is an example workflow using xkbcommon-x11. A complete + * example may be found in the test/interactive-x11.c file in the + * xkbcommon source repository. On startup: + * + * 1. Connect to the X server using xcb_connect(). + * 2. Setup the XKB X11 extension. You can do this either by using the + * xcb_xkb_use_extension() request directly, or by using the + * xkb_x11_setup_xkb_extension() helper function. + * + * The XKB extension supports using separate keymaps and states for + * different keyboard devices. The devices are identified by an integer + * device ID and are managed by another X11 extension, XInput (or its + * successor, XInput2). The original X11 protocol only had one keyboard + * device, called the "core keyboard", which is still supported as a + * "virtual device". + * + * 3. We will use the core keyboard as an example. To get its device ID, + * use either the xcb_xkb_get_device_info() request directly, or the + * xkb_x11_get_core_keyboard_device_id() helper function. + * 4. Create an initial xkb_keymap for this device, using the + * xkb_x11_keymap_new_from_device() function. + * 5. Create an initial xkb_state for this device, using the + * xkb_x11_state_new_from_device() function. + * + * @note At this point, you may consider setting various XKB controls and + * XKB per-client flags. For example, enabling detectable autorepeat: \n + * http://www.x.org/releases/current/doc/kbproto/xkbproto.html#Detectable_Autorepeat + * + * Next, you need to react to state changes (e.g. a modifier was pressed, + * the layout was changed) and to keymap changes (e.g. a tool like xkbcomp, + * setxkbmap or xmodmap was used): + * + * 6. Select to listen to at least the following XKB events: + * NewKeyboardNotify, MapNotify, StateNotify; using the + * xcb_xkb_select_events_aux() request. + * 7. When NewKeyboardNotify or MapNotify are received, recreate the + * xkb_keymap and xkb_state as described above. + * 8. When StateNotify is received, update the xkb_state accordingly + * using the xkb_state_update_mask() function. + * + * @note It is also possible to use the KeyPress/KeyRelease @p state + * field to find the effective modifier and layout state, instead of + * using XkbStateNotify: \n + * http://www.x.org/releases/current/doc/kbproto/xkbproto.html#Computing_A_State_Field_from_an_XKB_State + * \n However, XkbStateNotify is more accurate. + * + * @note There is no need to call xkb_state_update_key(); the state is + * already synchronized. + * + * Finally, when a key event is received, you can use ordinary xkbcommon + * functions, like xkb_state_key_get_one_sym() and xkb_state_key_get_utf8(), + * as you normally would. + * + * @endparblock + */ + +/** + * The minimal compatible major version of the XKB X11 extension which + * this library can use. + */ +#define XKB_X11_MIN_MAJOR_XKB_VERSION 1 +/** + * The minimal compatible minor version of the XKB X11 extension which + * this library can use (for the minimal major version). + */ +#define XKB_X11_MIN_MINOR_XKB_VERSION 0 + +/** Flags for the xkb_x11_setup_xkb_extension() function. */ +enum xkb_x11_setup_xkb_extension_flags { + /** Do not apply any flags. */ + XKB_X11_SETUP_XKB_EXTENSION_NO_FLAGS = 0 +}; + +/** + * Setup the XKB X11 extension for this X client. + * + * The xkbcommon-x11 library uses various XKB requests. Before doing so, + * an X client must notify the server that it will be using the extension. + * This function (or an XCB equivalent) must be called before any other + * function in this library is used. + * + * Some X servers may not support or disable the XKB extension. If you + * want to support such servers, you need to use a different fallback. + * + * You may call this function several times; it is idempotent. + * + * @param connection + * An XCB connection to the X server. + * @param major_xkb_version + * See @p minor_xkb_version. + * @param minor_xkb_version + * The XKB extension version to request. To operate correctly, you + * must have (major_xkb_version, minor_xkb_version) >= + * (XKB_X11_MIN_MAJOR_XKB_VERSION, XKB_X11_MIN_MINOR_XKB_VERSION), + * though this is not enforced. + * @param flags + * Optional flags, or 0. + * @param[out] major_xkb_version_out + * See @p minor_xkb_version_out. + * @param[out] minor_xkb_version_out + * Backfilled with the compatible XKB extension version numbers picked + * by the server. Can be NULL. + * @param[out] base_event_out + * Backfilled with the XKB base (also known as first) event code, needed + * to distinguish XKB events. Can be NULL. + * @param[out] base_error_out + * Backfilled with the XKB base (also known as first) error code, needed + * to distinguish XKB errors. Can be NULL. + * + * @returns 1 on success, or 0 on failure. + */ +int +xkb_x11_setup_xkb_extension(xcb_connection_t *connection, + uint16_t major_xkb_version, + uint16_t minor_xkb_version, + enum xkb_x11_setup_xkb_extension_flags flags, + uint16_t *major_xkb_version_out, + uint16_t *minor_xkb_version_out, + uint8_t *base_event_out, + uint8_t *base_error_out); + +/** + * Get the keyboard device ID of the core X11 keyboard. + * + * @param connection An XCB connection to the X server. + * + * @returns A device ID which may be used with other xkb_x11_* functions, + * or -1 on failure. + */ +int32_t +xkb_x11_get_core_keyboard_device_id(xcb_connection_t *connection); + +/** + * Create a keymap from an X11 keyboard device. + * + * This function queries the X server with various requests, fetches the + * details of the active keymap on a keyboard device, and creates an + * xkb_keymap from these details. + * + * @param context + * The context in which to create the keymap. + * @param connection + * An XCB connection to the X server. + * @param device_id + * An XInput 1 device ID (in the range 0-255) with input class KEY. + * Passing values outside of this range is an error. + * @param flags + * Optional flags for the keymap, or 0. + * + * @returns A keymap retrieved from the X server, or NULL on failure. + * + * @memberof xkb_keymap + */ +struct xkb_keymap * +xkb_x11_keymap_new_from_device(struct xkb_context *context, + xcb_connection_t *connection, + int32_t device_id, + enum xkb_keymap_compile_flags flags); + +/** + * Create a new keyboard state object from an X11 keyboard device. + * + * This function is the same as xkb_state_new(), only pre-initialized + * with the state of the device at the time this function is called. + * + * @param keymap + * The keymap for which to create the state. + * @param connection + * An XCB connection to the X server. + * @param device_id + * An XInput 1 device ID (in the range 0-255) with input class KEY. + * Passing values outside of this range is an error. + * + * @returns A new keyboard state object, or NULL on failure. + * + * @memberof xkb_state + */ +struct xkb_state * +xkb_x11_state_new_from_device(struct xkb_keymap *keymap, + xcb_connection_t *connection, + int32_t device_id); + +/** @} */ + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* _XKBCOMMON_X11_H */ diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon.h b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon.h new file mode 100644 index 0000000..f0c9202 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/xkbcommon/xkbcommon.h @@ -0,0 +1,1723 @@ +/* + * Copyright 1985, 1987, 1990, 1998 The Open Group + * Copyright 2008 Dan Nicholson + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the names of the authors or their + * institutions shall not be used in advertising or otherwise to promote the + * sale, use or other dealings in this Software without prior written + * authorization from the authors. + */ + +/************************************************************ + * Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of Silicon Graphics not be + * used in advertising or publicity pertaining to distribution + * of the software without specific prior written permission. + * Silicon Graphics makes no representation about the suitability + * of this software for any purpose. It is provided "as is" + * without any express or implied warranty. + * + * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + * THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + ********************************************************/ + +/* + * Copyright © 2009-2012 Daniel Stone + * Copyright © 2012 Intel Corporation + * Copyright © 2012 Ran Benita + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Daniel Stone + */ + +#ifndef _XKBCOMMON_H_ +#define _XKBCOMMON_H_ + +#include +#include +#include + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @file + * Main libxkbcommon API. + */ + +/** + * @struct xkb_context + * Opaque top level library context object. + * + * The context contains various general library data and state, like + * logging level and include paths. + * + * Objects are created in a specific context, and multiple contexts may + * coexist simultaneously. Objects from different contexts are completely + * separated and do not share any memory or state. + */ +struct xkb_context; + +/** + * @struct xkb_keymap + * Opaque compiled keymap object. + * + * The keymap object holds all of the static keyboard information obtained + * from compiling XKB files. + * + * A keymap is immutable after it is created (besides reference counts, etc.); + * if you need to change it, you must create a new one. + */ +struct xkb_keymap; + +/** + * @struct xkb_state + * Opaque keyboard state object. + * + * State objects contain the active state of a keyboard (or keyboards), such + * as the currently effective layout and the active modifiers. It acts as a + * simple state machine, wherein key presses and releases are the input, and + * key symbols (keysyms) are the output. + */ +struct xkb_state; + +/** + * A number used to represent a physical key on a keyboard. + * + * A standard PC-compatible keyboard might have 102 keys. An appropriate + * keymap would assign each of them a keycode, by which the user should + * refer to the key throughout the library. + * + * Historically, the X11 protocol, and consequentially the XKB protocol, + * assign only 8 bits for keycodes. This limits the number of different + * keys that can be used simultaneously in a single keymap to 256 + * (disregarding other limitations). This library does not share this limit; + * keycodes beyond 255 ('extended keycodes') are not treated specially. + * Keymaps and applications which are compatible with X11 should not use + * these keycodes. + * + * The values of specific keycodes are determined by the keymap and the + * underlying input system. For example, with an X11-compatible keymap + * and Linux evdev scan codes (see linux/input.h), a fixed offset is used: + * + * @code + * xkb_keycode_t keycode_A = KEY_A + 8; + * @endcode + * + * @sa xkb_keycode_is_legal_ext() xkb_keycode_is_legal_x11() + */ +typedef uint32_t xkb_keycode_t; + +/** + * A number used to represent the symbols generated from a key on a keyboard. + * + * A key, represented by a keycode, may generate different symbols according + * to keyboard state. For example, on a QWERTY keyboard, pressing the key + * labled \ generates the symbol 'a'. If the Shift key is held, it + * generates the symbol 'A'. If a different layout is used, say Greek, + * it generates the symbol 'α'. And so on. + * + * Each such symbol is represented by a keysym. Note that keysyms are + * somewhat more general, in that they can also represent some "function", + * such as "Left" or "Right" for the arrow keys. For more information, + * see: + * http://www.x.org/releases/X11R7.7/doc/xproto/x11protocol.html#keysym_encoding + * + * Specifically named keysyms can be found in the + * xkbcommon/xkbcommon-keysyms.h header file. Their name does not include + * the XKB_KEY_ prefix. + * + * Besides those, any Unicode/ISO 10646 character in the range U0100 to + * U10FFFF can be represented by a keysym value in the range 0x01000100 to + * 0x0110FFFF. The name of Unicode keysyms is "U", e.g. "UA1B2". + * + * The name of other unnamed keysyms is the hexadecimal representation of + * their value, e.g. "0xabcd1234". + * + * Keysym names are case-sensitive. + */ +typedef uint32_t xkb_keysym_t; + +/** + * Index of a keyboard layout. + * + * The layout index is a state component which detemines which keyboard + * layout is active. These may be different alphabets, different key + * arrangements, etc. + * + * Layout indices are consecutive. The first layout has index 0. + * + * Each layout is not required to have a name, and the names are not + * guaranteed to be unique (though they are usually provided and unique). + * Therefore, it is not safe to use the name as a unique identifier for a + * layout. Layout names are case-sensitive. + * + * Layouts are also called "groups" by XKB. + * + * @sa xkb_keymap_num_layouts() xkb_keymap_num_layouts_for_key() + */ +typedef uint32_t xkb_layout_index_t; +/** A mask of layout indices. */ +typedef uint32_t xkb_layout_mask_t; + +/** + * Index of a shift level. + * + * Any key, in any layout, can have several shift levels. Each + * shift level can assign different keysyms to the key. The shift level + * to use is chosen according to the current keyboard state; for example, + * if no keys are pressed, the first level may be used; if the Left Shift + * key is pressed, the second; if Num Lock is pressed, the third; and + * many such combinations are possible (see xkb_mod_index_t). + * + * Level indices are consecutive. The first level has index 0. + */ +typedef uint32_t xkb_level_index_t; + +/** + * Index of a modifier. + * + * A @e modifier is a state component which changes the way keys are + * interpreted. A keymap defines a set of modifiers, such as Alt, Shift, + * Num Lock or Meta, and specifies which keys may @e activate which + * modifiers (in a many-to-many relationship, i.e. a key can activate + * several modifiers, and a modifier may be activated by several keys. + * Different keymaps do this differently). + * + * When retrieving the keysyms for a key, the active modifier set is + * consulted; this detemines the correct shift level to use within the + * currently active layout (see xkb_level_index_t). + * + * Modifier indices are consecutive. The first modifier has index 0. + * + * Each modifier must have a name, and the names are unique. Therefore, it + * is safe to use the name as a unique identifier for a modifier. The names + * of some common modifiers are provided in the xkbcommon/xkbcommon-names.h + * header file. Modifier names are case-sensitive. + * + * @sa xkb_keymap_num_mods() + */ +typedef uint32_t xkb_mod_index_t; +/** A mask of modifier indices. */ +typedef uint32_t xkb_mod_mask_t; + +/** + * Index of a keyboard LED. + * + * LEDs are logical objects which may be @e active or @e inactive. They + * typically correspond to the lights on the keyboard. Their state is + * determined by the current keyboard state. + * + * LED indices are non-consecutive. The first LED has index 0. + * + * Each LED must have a name, and the names are unique. Therefore, + * it is safe to use the name as a unique identifier for a LED. The names + * of some common LEDs are provided in the xkbcommon/xkbcommon-names.h + * header file. LED names are case-sensitive. + * + * @warning A given keymap may specify an exact index for a given LED. + * Therefore, LED indexing is not necessarily sequential, as opposed to + * modifiers and layouts. This means that when iterating over the LEDs + * in a keymap using e.g. xkb_keymap_num_leds(), some indices might be + * invalid. Given such an index, functions like xkb_keymap_led_get_name() + * will return NULL, and xkb_state_led_index_is_active() will return -1. + * + * LEDs are also called "indicators" by XKB. + * + * @sa xkb_keymap_num_leds() + */ +typedef uint32_t xkb_led_index_t; +/** A mask of LED indices. */ +typedef uint32_t xkb_led_mask_t; + +#define XKB_KEYCODE_INVALID (0xffffffff) +#define XKB_LAYOUT_INVALID (0xffffffff) +#define XKB_LEVEL_INVALID (0xffffffff) +#define XKB_MOD_INVALID (0xffffffff) +#define XKB_LED_INVALID (0xffffffff) + +#define XKB_KEYCODE_MAX (0xffffffff - 1) + +/** + * Test whether a value is a valid extended keycode. + * @sa xkb_keycode_t + **/ +#define xkb_keycode_is_legal_ext(key) (key <= XKB_KEYCODE_MAX) + +/** + * Test whether a value is a valid X11 keycode. + * @sa xkb_keycode_t + */ +#define xkb_keycode_is_legal_x11(key) (key >= 8 && key <= 255) + +/** + * Names to compile a keymap with, also known as RMLVO. + * + * The names are the common configuration values by which a user picks + * a keymap. + * + * If the entire struct is NULL, then each field is taken to be NULL. + * You should prefer passing NULL instead of choosing your own defaults. + */ +struct xkb_rule_names { + /** + * The rules file to use. The rules file describes how to interpret + * the values of the model, layout, variant and options fields. + * + * If NULL or the empty string "", a default value is used. + * If the XKB_DEFAULT_RULES environment variable is set, it is used + * as the default. Otherwise the system default is used. + */ + const char *rules; + /** + * The keyboard model by which to interpret keycodes and LEDs. + * + * If NULL or the empty string "", a default value is used. + * If the XKB_DEFAULT_MODEL environment variable is set, it is used + * as the default. Otherwise the system default is used. + */ + const char *model; + /** + * A comma separated list of layouts (languages) to include in the + * keymap. + * + * If NULL or the empty string "", a default value is used. + * If the XKB_DEFAULT_LAYOUT environment variable is set, it is used + * as the default. Otherwise the system default is used. + */ + const char *layout; + /** + * A comma separated list of variants, one per layout, which may + * modify or augment the respective layout in various ways. + * + * If NULL or the empty string "", and a default value is also used + * for the layout, a default value is used. Otherwise no variant is + * used. + * If the XKB_DEFAULT_VARIANT environment variable is set, it is used + * as the default. Otherwise the system default is used. + */ + const char *variant; + /** + * A comma separated list of options, through which the user specifies + * non-layout related preferences, like which key combinations are used + * for switching layouts, or which key is the Compose key. + * + * If NULL, a default value is used. If the empty string "", no + * options are used. + * If the XKB_DEFAULT_OPTIONS environment variable is set, it is used + * as the default. Otherwise the system default is used. + */ + const char *options; +}; + +/** + * @defgroup keysyms Keysyms + * Utility functions related to keysyms. + * + * @{ + */ + +/** + * @page keysym-transformations Keysym Transformations + * + * Keysym translation is subject to several "keysym transformations", + * as described in the XKB specification. These are: + * + * - Capitalization transformation. If the Caps Lock modifier is + * active and was not consumed by the translation process, a single + * keysym is transformed to its upper-case form (if applicable). + * Similarly, the UTF-8/UTF-32 string produced is capitalized. + * + * This is described in: + * http://www.x.org/releases/current/doc/kbproto/xkbproto.html#Interpreting_the_Lock_Modifier + * + * - Control transformation. If the Control modifier is active and + * was not consumed by the translation process, the string produced + * is transformed to its matching ASCII control character (if + * applicable). Keysyms are not affected. + * + * This is described in: + * http://www.x.org/releases/current/doc/kbproto/xkbproto.html#Interpreting_the_Control_Modifier + * + * Each relevant function discusses which transformations it performs. + * + * These transformations are not applicable when a key produces multiple + * keysyms. + */ + + +/** + * Get the name of a keysym. + * + * For a description of how keysyms are named, see @ref xkb_keysym_t. + * + * @param[in] keysym The keysym. + * @param[out] buffer A string buffer to write the name into. + * @param[in] size Size of the buffer. + * + * @warning If the buffer passed is too small, the string is truncated + * (though still NUL-terminated); a size of at least 64 bytes is recommended. + * + * @returns The number of bytes in the name, excluding the NUL byte. If + * the keysym is invalid, returns -1. + * + * You may check if truncation has occurred by comparing the return value + * with the length of buffer, similarly to the snprintf(3) function. + * + * @sa xkb_keysym_t + */ +int +xkb_keysym_get_name(xkb_keysym_t keysym, char *buffer, size_t size); + +/** Flags for xkb_keysym_from_name(). */ +enum xkb_keysym_flags { + /** Do not apply any flags. */ + XKB_KEYSYM_NO_FLAGS = 0, + /** Find keysym by case-insensitive search. */ + XKB_KEYSYM_CASE_INSENSITIVE = (1 << 0) +}; + +/** + * Get a keysym from its name. + * + * @param name The name of a keysym. See remarks in xkb_keysym_get_name(); + * this function will accept any name returned by that function. + * @param flags A set of flags controlling how the search is done. If + * invalid flags are passed, this will fail with XKB_KEY_NoSymbol. + * + * If you use the XKB_KEYSYM_CASE_INSENSITIVE flag and two keysym names + * differ only by case, then the lower-case keysym is returned. For + * instance, for KEY_a and KEY_A, this function would return KEY_a for the + * case-insensitive search. If this functionality is needed, it is + * recommended to first call this function without this flag; and if that + * fails, only then to try with this flag, while possibly warning the user + * he had misspelled the name, and might get wrong results. + * + * @returns The keysym. If the name is invalid, returns XKB_KEY_NoSymbol. + * + * @sa xkb_keysym_t + */ +xkb_keysym_t +xkb_keysym_from_name(const char *name, enum xkb_keysym_flags flags); + +/** + * Get the Unicode/UTF-8 representation of a keysym. + * + * @param[in] keysym The keysym. + * @param[out] buffer A buffer to write the UTF-8 string into. + * @param[in] size The size of buffer. Must be at least 7. + * + * @returns The number of bytes written to the buffer (including the + * terminating byte). If the keysym does not have a Unicode + * representation, returns 0. If the buffer is too small, returns -1. + * + * This function does not perform any @ref keysym-transformations. + * Therefore, prefer to use xkb_state_key_get_utf8() if possible. + * + * @sa xkb_state_key_get_utf8() + */ +int +xkb_keysym_to_utf8(xkb_keysym_t keysym, char *buffer, size_t size); + +/** + * Get the Unicode/UTF-32 representation of a keysym. + * + * @returns The Unicode/UTF-32 representation of keysym, which is also + * compatible with UCS-4. If the keysym does not have a Unicode + * representation, returns 0. + * + * This function does not perform any @ref keysym-transformations. + * Therefore, prefer to use xkb_state_key_get_utf32() if possible. + * + * @sa xkb_state_key_get_utf32() + */ +uint32_t +xkb_keysym_to_utf32(xkb_keysym_t keysym); + +/** @} */ + +/** + * @defgroup context Library Context + * Creating, destroying and using library contexts. + * + * Every keymap compilation request must have a context associated with + * it. The context keeps around state such as the include path. + * + * @{ + */ + +/** Flags for context creation. */ +enum xkb_context_flags { + /** Do not apply any context flags. */ + XKB_CONTEXT_NO_FLAGS = 0, + /** Create this context with an empty include path. */ + XKB_CONTEXT_NO_DEFAULT_INCLUDES = (1 << 0), + /** + * Don't take RMLVO names from the environment. + * @since 0.3.0 + */ + XKB_CONTEXT_NO_ENVIRONMENT_NAMES = (1 << 1) +}; + +/** + * Create a new context. + * + * @param flags Optional flags for the context, or 0. + * + * @returns A new context, or NULL on failure. + * + * The user may set some environment variables to affect default values in + * the context. See e.g. xkb_context_set_log_level() and + * xkb_context_set_log_verbosity(). + * + * @memberof xkb_context + */ +struct xkb_context * +xkb_context_new(enum xkb_context_flags flags); + +/** + * Take a new reference on a context. + * + * @returns The passed in context. + * + * @memberof xkb_context + */ +struct xkb_context * +xkb_context_ref(struct xkb_context *context); + +/** + * Release a reference on a context, and possibly free it. + * + * @param context The context. If it is NULL, this function does nothing. + * + * @memberof xkb_context + */ +void +xkb_context_unref(struct xkb_context *context); + +/** + * Store custom user data in the context. + * + * This may be useful in conjunction with xkb_context_set_log_fn() or other + * callbacks. + * + * @memberof xkb_context + */ +void +xkb_context_set_user_data(struct xkb_context *context, void *user_data); + +/** + * Retrieves stored user data from the context. + * + * @returns The stored user data. If the user data wasn't set, or the + * passed in context is NULL, returns NULL. + * + * This may be useful to access private user data from callbacks like a + * custom logging function. + * + * @memberof xkb_context + **/ +void * +xkb_context_get_user_data(struct xkb_context *context); + +/** @} */ + +/** + * @defgroup include-path Include Paths + * Manipulating the include paths in a context. + * + * The include paths are the file-system paths that are searched when an + * include statement is encountered during keymap compilation. + * In most cases, the default include paths are sufficient. + * + * @{ + */ + +/** + * Append a new entry to the context's include path. + * + * @returns 1 on success, or 0 if the include path could not be added or is + * inaccessible. + * + * @memberof xkb_context + */ +int +xkb_context_include_path_append(struct xkb_context *context, const char *path); + +/** + * Append the default include paths to the context's include path. + * + * @returns 1 on success, or 0 if the primary include path could not be added. + * + * @memberof xkb_context + */ +int +xkb_context_include_path_append_default(struct xkb_context *context); + +/** + * Reset the context's include path to the default. + * + * Removes all entries from the context's include path, and inserts the + * default paths. + * + * @returns 1 on success, or 0 if the primary include path could not be added. + * + * @memberof xkb_context + */ +int +xkb_context_include_path_reset_defaults(struct xkb_context *context); + +/** + * Remove all entries from the context's include path. + * + * @memberof xkb_context + */ +void +xkb_context_include_path_clear(struct xkb_context *context); + +/** + * Get the number of paths in the context's include path. + * + * @memberof xkb_context + */ +unsigned int +xkb_context_num_include_paths(struct xkb_context *context); + +/** + * Get a specific include path from the context's include path. + * + * @returns The include path at the specified index. If the index is + * invalid, returns NULL. + * + * @memberof xkb_context + */ +const char * +xkb_context_include_path_get(struct xkb_context *context, unsigned int index); + +/** @} */ + +/** + * @defgroup logging Logging Handling + * Manipulating how logging from this library is handled. + * + * @{ + */ + +/** Specifies a logging level. */ +enum xkb_log_level { + XKB_LOG_LEVEL_CRITICAL = 10, /**< Log critical internal errors only. */ + XKB_LOG_LEVEL_ERROR = 20, /**< Log all errors. */ + XKB_LOG_LEVEL_WARNING = 30, /**< Log warnings and errors. */ + XKB_LOG_LEVEL_INFO = 40, /**< Log information, warnings, and errors. */ + XKB_LOG_LEVEL_DEBUG = 50 /**< Log everything. */ +}; + +/** + * Set the current logging level. + * + * @param context The context in which to set the logging level. + * @param level The logging level to use. Only messages from this level + * and below will be logged. + * + * The default level is XKB_LOG_LEVEL_ERROR. The environment variable + * XKB_LOG_LEVEL, if set in the time the context was created, overrides the + * default value. It may be specified as a level number or name. + * + * @memberof xkb_context + */ +void +xkb_context_set_log_level(struct xkb_context *context, + enum xkb_log_level level); + +/** + * Get the current logging level. + * + * @memberof xkb_context + */ +enum xkb_log_level +xkb_context_get_log_level(struct xkb_context *context); + +/** + * Sets the current logging verbosity. + * + * The library can generate a number of warnings which are not helpful to + * ordinary users of the library. The verbosity may be increased if more + * information is desired (e.g. when developing a new keymap). + * + * The default verbosity is 0. The environment variable XKB_LOG_VERBOSITY, + * if set in the time the context was created, overrides the default value. + * + * @param context The context in which to use the set verbosity. + * @param verbosity The verbosity to use. Currently used values are + * 1 to 10, higher values being more verbose. 0 would result in no verbose + * messages being logged. + * + * Most verbose messages are of level XKB_LOG_LEVEL_WARNING or lower. + * + * @memberof xkb_context + */ +void +xkb_context_set_log_verbosity(struct xkb_context *context, int verbosity); + +/** + * Get the current logging verbosity of the context. + * + * @memberof xkb_context + */ +int +xkb_context_get_log_verbosity(struct xkb_context *context); + +/** + * Set a custom function to handle logging messages. + * + * @param context The context in which to use the set logging function. + * @param log_fn The function that will be called for logging messages. + * Passing NULL restores the default function, which logs to stderr. + * + * By default, log messages from this library are printed to stderr. This + * function allows you to replace the default behavior with a custom + * handler. The handler is only called with messages which match the + * current logging level and verbosity settings for the context. + * level is the logging level of the message. @a format and @a args are + * the same as in the vprintf(3) function. + * + * You may use xkb_context_set_user_data() on the context, and then call + * xkb_context_get_user_data() from within the logging function to provide + * it with additional private context. + * + * @memberof xkb_context + */ +void +xkb_context_set_log_fn(struct xkb_context *context, + void (*log_fn)(struct xkb_context *context, + enum xkb_log_level level, + const char *format, va_list args)); + +/** @} */ + +/** + * @defgroup keymap Keymap Creation + * Creating and destroying keymaps. + * + * @{ + */ + +/** Flags for keymap compilation. */ +enum xkb_keymap_compile_flags { + /** Do not apply any flags. */ + XKB_KEYMAP_COMPILE_NO_FLAGS = 0 +}; + +/** + * Create a keymap from RMLVO names. + * + * The primary keymap entry point: creates a new XKB keymap from a set of + * RMLVO (Rules + Model + Layouts + Variants + Options) names. + * + * @param context The context in which to create the keymap. + * @param names The RMLVO names to use. See xkb_rule_names. + * @param flags Optional flags for the keymap, or 0. + * + * @returns A keymap compiled according to the RMLVO names, or NULL if + * the compilation failed. + * + * @sa xkb_rule_names + * @memberof xkb_keymap + */ +struct xkb_keymap * +xkb_keymap_new_from_names(struct xkb_context *context, + const struct xkb_rule_names *names, + enum xkb_keymap_compile_flags flags); + +/** The possible keymap formats. */ +enum xkb_keymap_format { + /** The current/classic XKB text format, as generated by xkbcomp -xkb. */ + XKB_KEYMAP_FORMAT_TEXT_V1 = 1 +}; + +/** + * Create a keymap from a keymap file. + * + * @param context The context in which to create the keymap. + * @param file The keymap file to compile. + * @param format The text format of the keymap file to compile. + * @param flags Optional flags for the keymap, or 0. + * + * @returns A keymap compiled from the given XKB keymap file, or NULL if + * the compilation failed. + * + * The file must contain a complete keymap. For example, in the + * XKB_KEYMAP_FORMAT_TEXT_V1 format, this means the file must contain one + * top level '%xkb_keymap' section, which in turn contains other required + * sections. + * + * @memberof xkb_keymap + */ +struct xkb_keymap * +xkb_keymap_new_from_file(struct xkb_context *context, FILE *file, + enum xkb_keymap_format format, + enum xkb_keymap_compile_flags flags); + +/** + * Create a keymap from a keymap string. + * + * This is just like xkb_keymap_new_from_file(), but instead of a file, gets + * the keymap as one enormous string. + * + * @see xkb_keymap_new_from_file() + * @memberof xkb_keymap + */ +struct xkb_keymap * +xkb_keymap_new_from_string(struct xkb_context *context, const char *string, + enum xkb_keymap_format format, + enum xkb_keymap_compile_flags flags); + +/** + * Create a keymap from a memory buffer. + * + * This is just like xkb_keymap_new_from_string(), but takes a length argument + * so the input string does not have to be zero-terminated. + * + * @see xkb_keymap_new_from_string() + * @memberof xkb_keymap + * @since 0.3.0 + */ +struct xkb_keymap * +xkb_keymap_new_from_buffer(struct xkb_context *context, const char *buffer, + size_t length, enum xkb_keymap_format format, + enum xkb_keymap_compile_flags flags); + +/** + * Take a new reference on a keymap. + * + * @returns The passed in keymap. + * + * @memberof xkb_keymap + */ +struct xkb_keymap * +xkb_keymap_ref(struct xkb_keymap *keymap); + +/** + * Release a reference on a keymap, and possibly free it. + * + * @param keymap The keymap. If it is NULL, this function does nothing. + * + * @memberof xkb_keymap + */ +void +xkb_keymap_unref(struct xkb_keymap *keymap); + +/** + * Get the keymap as a string in the format from which it was created. + * @sa xkb_keymap_get_as_string() + **/ +#define XKB_KEYMAP_USE_ORIGINAL_FORMAT ((enum xkb_keymap_format) -1) + +/** + * Get the compiled keymap as a string. + * + * @param keymap The keymap to get as a string. + * @param format The keymap format to use for the string. You can pass + * in the special value XKB_KEYMAP_USE_ORIGINAL_FORMAT to use the format + * from which the keymap was originally created. + * + * @returns The keymap as a NUL-terminated string, or NULL if unsuccessful. + * + * The returned string may be fed back into xkb_map_new_from_string() to get + * the exact same keymap (possibly in another process, etc.). + * + * The returned string is dynamically allocated and should be freed by the + * caller. + * + * @memberof xkb_keymap + */ +char * +xkb_keymap_get_as_string(struct xkb_keymap *keymap, + enum xkb_keymap_format format); + +/** @} */ + +/** + * @defgroup components Keymap Components + * Enumeration of state components in a keymap. + * + * @{ + */ + +/** + * Get the minimum keycode in the keymap. + * + * @sa xkb_keycode_t + * @memberof xkb_keymap + * @since 0.3.1 + */ +xkb_keycode_t +xkb_keymap_min_keycode(struct xkb_keymap *keymap); + +/** + * Get the maximum keycode in the keymap. + * + * @sa xkb_keycode_t + * @memberof xkb_keymap + * @since 0.3.1 + */ +xkb_keycode_t +xkb_keymap_max_keycode(struct xkb_keymap *keymap); + +/** + * The iterator used by xkb_keymap_key_for_each(). + * + * @sa xkb_keymap_key_for_each + * @memberof xkb_keymap + * @since 0.3.1 + */ +typedef void +(*xkb_keymap_key_iter_t)(struct xkb_keymap *keymap, xkb_keycode_t key, + void *data); + +/** + * Run a specified function for every valid keycode in the keymap. If a + * keymap is sparse, this function may be called fewer than + * (max_keycode - min_keycode + 1) times. + * + * @sa xkb_keymap_min_keycode() xkb_keymap_max_keycode() xkb_keycode_t + * @memberof xkb_keymap + * @since 0.3.1 + */ +void +xkb_keymap_key_for_each(struct xkb_keymap *keymap, xkb_keymap_key_iter_t iter, + void *data); + +/** + * Get the number of modifiers in the keymap. + * + * @sa xkb_mod_index_t + * @memberof xkb_keymap + */ +xkb_mod_index_t +xkb_keymap_num_mods(struct xkb_keymap *keymap); + +/** + * Get the name of a modifier by index. + * + * @returns The name. If the index is invalid, returns NULL. + * + * @sa xkb_mod_index_t + * @memberof xkb_keymap + */ +const char * +xkb_keymap_mod_get_name(struct xkb_keymap *keymap, xkb_mod_index_t idx); + +/** + * Get the index of a modifier by name. + * + * @returns The index. If no modifier with this name exists, returns + * XKB_MOD_INVALID. + * + * @sa xkb_mod_index_t + * @memberof xkb_keymap + */ +xkb_mod_index_t +xkb_keymap_mod_get_index(struct xkb_keymap *keymap, const char *name); + +/** + * Get the number of layouts in the keymap. + * + * @sa xkb_layout_index_t xkb_rule_names xkb_keymap_num_layouts_for_key() + * @memberof xkb_keymap + */ +xkb_layout_index_t +xkb_keymap_num_layouts(struct xkb_keymap *keymap); + +/** + * Get the name of a layout by index. + * + * @returns The name. If the index is invalid, or the layout does not have + * a name, returns NULL. + * + * @sa xkb_layout_index_t + * @memberof xkb_keymap + */ +const char * +xkb_keymap_layout_get_name(struct xkb_keymap *keymap, xkb_layout_index_t idx); + +/** + * Get the index of a layout by name. + * + * @returns The index. If no layout exists with this name, returns + * XKB_LAYOUT_INVALID. If more than one layout in the keymap has this name, + * returns the lowest index among them. + * + * @memberof xkb_keymap + */ +xkb_layout_index_t +xkb_keymap_layout_get_index(struct xkb_keymap *keymap, const char *name); + +/** + * Get the number of LEDs in the keymap. + * + * @warning The range [ 0...xkb_keymap_num_leds() ) includes all of the LEDs + * in the keymap, but may also contain inactive LEDs. When iterating over + * this range, you need the handle this case when calling functions such as + * xkb_keymap_led_get_name() or xkb_state_led_index_is_active(). + * + * @sa xkb_led_index_t + * @memberof xkb_keymap + */ +xkb_led_index_t +xkb_keymap_num_leds(struct xkb_keymap *keymap); + +/** + * Get the name of a LED by index. + * + * @returns The name. If the index is invalid, returns NULL. + * + * @memberof xkb_keymap + */ +const char * +xkb_keymap_led_get_name(struct xkb_keymap *keymap, xkb_led_index_t idx); + +/** + * Get the index of a LED by name. + * + * @returns The index. If no LED with this name exists, returns + * XKB_LED_INVALID. + * + * @memberof xkb_keymap + */ +xkb_led_index_t +xkb_keymap_led_get_index(struct xkb_keymap *keymap, const char *name); + +/** + * Get the number of layouts for a specific key. + * + * This number can be different from xkb_keymap_num_layouts(), but is always + * smaller. It is the appropriate value to use when iterating over the + * layouts of a key. + * + * @sa xkb_layout_index_t + * @memberof xkb_keymap + */ +xkb_layout_index_t +xkb_keymap_num_layouts_for_key(struct xkb_keymap *keymap, xkb_keycode_t key); + +/** + * Get the number of shift levels for a specific key and layout. + * + * If @c layout is out of range for this key (that is, larger or equal to + * the value returned by xkb_keymap_num_layouts_for_key()), it is brought + * back into range in a manner consistent with xkb_state_key_get_layout(). + * + * @sa xkb_level_index_t + * @memberof xkb_keymap + */ +xkb_level_index_t +xkb_keymap_num_levels_for_key(struct xkb_keymap *keymap, xkb_keycode_t key, + xkb_layout_index_t layout); + +/** + * Get the keysyms obtained from pressing a key in a given layout and + * shift level. + * + * This function is like xkb_state_key_get_syms(), only the layout and + * shift level are not derived from the keyboard state but are instead + * specified explicitly. + * + * @param[in] keymap The keymap. + * @param[in] key The keycode of the key. + * @param[in] layout The layout for which to get the keysyms. + * @param[in] level The shift level in the layout for which to get the + * keysyms. This must be smaller than: + * @code xkb_keymap_num_levels_for_key(keymap, key) @endcode + * @param[out] syms_out An immutable array of keysyms corresponding to the + * key in the given layout and shift level. + * + * If @c layout is out of range for this key (that is, larger or equal to + * the value returned by xkb_keymap_num_layouts_for_key()), it is brought + * back into range in a manner consistent with xkb_state_key_get_layout(). + * + * @returns The number of keysyms in the syms_out array. If no keysyms + * are produced by the key in the given layout and shift level, returns 0 + * and sets syms_out to NULL. + * + * @sa xkb_state_key_get_syms() + * @memberof xkb_keymap + */ +int +xkb_keymap_key_get_syms_by_level(struct xkb_keymap *keymap, + xkb_keycode_t key, + xkb_layout_index_t layout, + xkb_level_index_t level, + const xkb_keysym_t **syms_out); + +/** + * Determine whether a key should repeat or not. + * + * A keymap may specify different repeat behaviors for different keys. + * Most keys should generally exhibit repeat behavior; for example, holding + * the 'a' key down in a text editor should normally insert a single 'a' + * character every few milliseconds, until the key is released. However, + * there are keys which should not or do not need to be repeated. For + * example, repeating modifier keys such as Left/Right Shift or Caps Lock + * is not generally useful or desired. + * + * @returns 1 if the key should repeat, 0 otherwise. + * + * @memberof xkb_keymap + */ +int +xkb_keymap_key_repeats(struct xkb_keymap *keymap, xkb_keycode_t key); + +/** @} */ + +/** + * @defgroup state Keyboard State + * Creating, destroying and manipulating keyboard state objects. + * + * @{ + */ + +/** + * Create a new keyboard state object. + * + * @param keymap The keymap which the state will use. + * + * @returns A new keyboard state object, or NULL on failure. + * + * @memberof xkb_state + */ +struct xkb_state * +xkb_state_new(struct xkb_keymap *keymap); + +/** + * Take a new reference on a keyboard state object. + * + * @returns The passed in object. + * + * @memberof xkb_state + */ +struct xkb_state * +xkb_state_ref(struct xkb_state *state); + +/** + * Release a reference on a keybaord state object, and possibly free it. + * + * @param state The state. If it is NULL, this function does nothing. + * + * @memberof xkb_state + */ +void +xkb_state_unref(struct xkb_state *state); + +/** + * Get the keymap which a keyboard state object is using. + * + * @returns The keymap which was passed to xkb_state_new() when creating + * this state object. + * + * This function does not take a new reference on the keymap; you must + * explicitly reference it yourself if you plan to use it beyond the + * lifetime of the state. + * + * @memberof xkb_state + */ +struct xkb_keymap * +xkb_state_get_keymap(struct xkb_state *state); + +/** Specifies the direction of the key (press / release). */ +enum xkb_key_direction { + XKB_KEY_UP, /**< The key was released. */ + XKB_KEY_DOWN /**< The key was pressed. */ +}; + +/** + * Modifier and layout types for state objects. This enum is bitmaskable, + * e.g. (XKB_STATE_MODS_DEPRESSED | XKB_STATE_MODS_LATCHED) is valid to + * exclude locked modifiers. + * + * In XKB, the DEPRESSED components are also known as 'base'. + */ +enum xkb_state_component { + /** Depressed modifiers, i.e. a key is physically holding them. */ + XKB_STATE_MODS_DEPRESSED = (1 << 0), + /** Latched modifiers, i.e. will be unset after the next non-modifier + * key press. */ + XKB_STATE_MODS_LATCHED = (1 << 1), + /** Locked modifiers, i.e. will be unset after the key provoking the + * lock has been pressed again. */ + XKB_STATE_MODS_LOCKED = (1 << 2), + /** Effective modifiers, i.e. currently active and affect key + * processing (derived from the other state components). + * Use this unless you explictly care how the state came about. */ + XKB_STATE_MODS_EFFECTIVE = (1 << 3), + /** Depressed layout, i.e. a key is physically holding it. */ + XKB_STATE_LAYOUT_DEPRESSED = (1 << 4), + /** Latched layout, i.e. will be unset after the next non-modifier + * key press. */ + XKB_STATE_LAYOUT_LATCHED = (1 << 5), + /** Locked layout, i.e. will be unset after the key provoking the lock + * has been pressed again. */ + XKB_STATE_LAYOUT_LOCKED = (1 << 6), + /** Effective layout, i.e. currently active and affects key processing + * (derived from the other state components). + * Use this unless you explictly care how the state came about. */ + XKB_STATE_LAYOUT_EFFECTIVE = (1 << 7), + /** LEDs (derived from the other state components). */ + XKB_STATE_LEDS = (1 << 8) +}; + +/** + * Update the keyboard state to reflect a given key being pressed or + * released. + * + * This entry point is intended for programs which track the keyboard state + * explictly (like an evdev client). If the state is serialized to you by + * a master process (like a Wayland compositor) using functions like + * xkb_state_serialize_mods(), you should use xkb_state_update_mask() instead. + * The two functins should not generally be used together. + * + * A series of calls to this function should be consistent; that is, a call + * with XKB_KEY_DOWN for a key should be matched by an XKB_KEY_UP; if a key + * is pressed twice, it should be released twice; etc. Otherwise (e.g. due + * to missed input events), situations like "stuck modifiers" may occur. + * + * This function is often used in conjunction with the function + * xkb_state_key_get_syms() (or xkb_state_key_get_one_sym()), for example, + * when handling a key event. In this case, you should prefer to get the + * keysyms *before* updating the key, such that the keysyms reported for + * the key event are not affected by the event itself. This is the + * conventional behavior. + * + * @returns A mask of state components that have changed as a result of + * the update. If nothing in the state has changed, returns 0. + * + * @memberof xkb_state + * + * @sa xkb_state_update_mask() + */ +enum xkb_state_component +xkb_state_update_key(struct xkb_state *state, xkb_keycode_t key, + enum xkb_key_direction direction); + +/** + * Update a keyboard state from a set of explicit masks. + * + * This entry point is intended for window systems and the like, where a + * master process holds an xkb_state, then serializes it over a wire + * protocol, and clients then use the serialization to feed in to their own + * xkb_state. + * + * All parameters must always be passed, or the resulting state may be + * incoherent. + * + * The serialization is lossy and will not survive round trips; it must only + * be used to feed slave state objects, and must not be used to update the + * master state. + * + * If you do not fit the description above, you should use + * xkb_state_update_key() instead. The two functions should not generally be + * used together. + * + * @returns A mask of state components that have changed as a result of + * the update. If nothing in the state has changed, returns 0. + * + * @memberof xkb_state + * + * @sa xkb_state_component + * @sa xkb_state_update_key + */ +enum xkb_state_component +xkb_state_update_mask(struct xkb_state *state, + xkb_mod_mask_t depressed_mods, + xkb_mod_mask_t latched_mods, + xkb_mod_mask_t locked_mods, + xkb_layout_index_t depressed_layout, + xkb_layout_index_t latched_layout, + xkb_layout_index_t locked_layout); + +/** + * Get the keysyms obtained from pressing a particular key in a given + * keyboard state. + * + * Get the keysyms for a key according to the current active layout, + * modifiers and shift level for the key, as determined by a keyboard + * state. + * + * @param[in] state The keyboard state object. + * @param[in] key The keycode of the key. + * @param[out] syms_out An immutable array of keysyms corresponding the + * key in the given keyboard state. + * + * As an extension to XKB, this function can return more than one keysym. + * If you do not want to handle this case, you can use + * xkb_state_key_get_one_sym() for a simpler interface. + * + * This function does not perform any @ref keysym-transformations. + * (This might change). + * + * @returns The number of keysyms in the syms_out array. If no keysyms + * are produced by the key in the given keyboard state, returns 0 and sets + * syms_out to NULL. + * + * @memberof xkb_state + */ +int +xkb_state_key_get_syms(struct xkb_state *state, xkb_keycode_t key, + const xkb_keysym_t **syms_out); + +/** + * Get the Unicode/UTF-8 string obtained from pressing a particular key + * in a given keyboard state. + * + * @param[in] state The keyboard state object. + * @param[in] key The keycode of the key. + * @param[out] buffer A buffer to write the string into. + * @param[in] size Size of the buffer. + * + * @warning If the buffer passed is too small, the string is truncated + * (though still NUL-terminated). + * + * @returns The number of bytes required for the string, excluding the + * NUL byte. If there is nothing to write, returns 0. + * + * You may check if truncation has occurred by comparing the return value + * with the size of @p buffer, similarly to the snprintf(3) function. + * You may safely pass NULL and 0 to @p buffer and @p size to find the + * required size (without the NUL-byte). + * + * This function performs Capitalization and Control @ref + * keysym-transformations. + * + * @memberof xkb_state + * @since 0.4.1 + */ +int +xkb_state_key_get_utf8(struct xkb_state *state, xkb_keycode_t key, + char *buffer, size_t size); + +/** + * Get the Unicode/UTF-32 codepoint obtained from pressing a particular + * key in a a given keyboard state. + * + * @returns The UTF-32 representation for the key, if it consists of only + * a single codepoint. Otherwise, returns 0. + * + * This function performs Capitalization and Control @ref + * keysym-transformations. + * + * @memberof xkb_state + * @since 0.4.1 + */ +uint32_t +xkb_state_key_get_utf32(struct xkb_state *state, xkb_keycode_t key); + +/** + * Get the single keysym obtained from pressing a particular key in a + * given keyboard state. + * + * This function is similar to xkb_state_key_get_syms(), but intended + * for users which cannot or do not want to handle the case where + * multiple keysyms are returned (in which case this function is + * preferred). + * + * @returns The keysym. If the key does not have exactly one keysym, + * returns XKB_KEY_NoSymbol + * + * This function performs Capitalization @ref keysym-transformations. + * + * @sa xkb_state_key_get_syms() + * @memberof xkb_state + */ +xkb_keysym_t +xkb_state_key_get_one_sym(struct xkb_state *state, xkb_keycode_t key); + +/** + * Get the effective layout index for a key in a given keyboard state. + * + * @returns The layout index for the key in the given keyboard state. If + * the given keycode is invalid, or if the key is not included in any + * layout at all, returns XKB_LAYOUT_INVALID. + * + * @invariant If the returned layout is valid, the following always holds: + * @code + * xkb_state_key_get_layout(state, key) < xkb_keymap_num_layouts_for_key(keymap, key) + * @endcode + * + * @memberof xkb_state + */ +xkb_layout_index_t +xkb_state_key_get_layout(struct xkb_state *state, xkb_keycode_t key); + +/** + * Get the effective shift level for a key in a given keyboard state and + * layout. + * + * @param state The keyboard state. + * @param key The keycode of the key. + * @param layout The layout for which to get the shift level. This must be + * smaller than: + * @code xkb_keymap_num_layouts_for_key(keymap, key) @endcode + * usually it would be: + * @code xkb_state_key_get_layout(state, key) @endcode + * + * @return The shift level index. If the key or layout are invalid, + * returns XKB_LEVEL_INVALID. + * + * @invariant If the returned level is valid, the following always holds: + * @code + * xkb_state_key_get_level(state, key, layout) < xkb_keymap_num_levels_for_key(keymap, key, layout) + * @endcode + * + * @memberof xkb_state + */ +xkb_level_index_t +xkb_state_key_get_level(struct xkb_state *state, xkb_keycode_t key, + xkb_layout_index_t layout); + +/** + * Match flags for xkb_state_mod_indices_are_active() and + * xkb_state_mod_names_are_active(), specifying the conditions for a + * successful match. XKB_STATE_MATCH_NON_EXCLUSIVE is bitmaskable with + * the other modes. + */ +enum xkb_state_match { + /** Returns true if any of the modifiers are active. */ + XKB_STATE_MATCH_ANY = (1 << 0), + /** Returns true if all of the modifiers are active. */ + XKB_STATE_MATCH_ALL = (1 << 1), + /** Makes matching non-exclusive, i.e. will not return false if a + * modifier not specified in the arguments is active. */ + XKB_STATE_MATCH_NON_EXCLUSIVE = (1 << 16) +}; + +/** + * The counterpart to xkb_state_update_mask for modifiers, to be used on + * the server side of serialization. + * + * @param state The keyboard state. + * @param components A mask of the modifier state components to serialize. + * State components other than XKB_STATE_MODS_* are ignored. + * If XKB_STATE_MODS_EFFECTIVE is included, all other state components are + * ignored. + * + * @returns A xkb_mod_mask_t representing the given components of the + * modifier state. + * + * This function should not be used in regular clients; please use the + * xkb_state_mod_*_is_active API instead. + * + * @memberof xkb_state + */ +xkb_mod_mask_t +xkb_state_serialize_mods(struct xkb_state *state, + enum xkb_state_component components); + +/** + * The counterpart to xkb_state_update_mask for layouts, to be used on + * the server side of serialization. + * + * @param state The keyboard state. + * @param components A mask of the layout state components to serialize. + * State components other than XKB_STATE_LAYOUT_* are ignored. + * If XKB_STATE_LAYOUT_EFFECTIVE is included, all other state components are + * ignored. + * + * @returns A layout index representing the given components of the + * layout state. + * + * This function should not be used in regular clients; please use the + * xkb_state_layout_*_is_active API instead. + * + * @memberof xkb_state + */ +xkb_layout_index_t +xkb_state_serialize_layout(struct xkb_state *state, + enum xkb_state_component components); + +/** + * Test whether a modifier is active in a given keyboard state by name. + * + * @returns 1 if the modifier is active, 0 if it is not. If the modifier + * name does not exist in the keymap, returns -1. + * + * @memberof xkb_state + */ +int +xkb_state_mod_name_is_active(struct xkb_state *state, const char *name, + enum xkb_state_component type); + +/** + * Test whether a set of modifiers are active in a given keyboard state by + * name. + * + * @param state The keyboard state. + * @param type The component of the state against which to match the + * given modifiers. + * @param match The manner by which to match the state against the + * given modifiers. + * @param ... The set of of modifier names to test, terminated by a NULL + * argument (sentinel). + * + * @returns 1 if the modifiers are active, 0 if they are not. If any of + * the modifier names do not exist in the keymap, returns -1. + * + * @memberof xkb_state + */ +int +xkb_state_mod_names_are_active(struct xkb_state *state, + enum xkb_state_component type, + enum xkb_state_match match, + ...); + +/** + * Test whether a modifier is active in a given keyboard state by index. + * + * @returns 1 if the modifier is active, 0 if it is not. If the modifier + * index is invalid in the keymap, returns -1. + * + * @memberof xkb_state + */ +int +xkb_state_mod_index_is_active(struct xkb_state *state, xkb_mod_index_t idx, + enum xkb_state_component type); + +/** + * Test whether a set of modifiers are active in a given keyboard state by + * index. + * + * @param state The keyboard state. + * @param type The component of the state against which to match the + * given modifiers. + * @param match The manner by which to match the state against the + * given modifiers. + * @param ... The set of of modifier indices to test, terminated by a + * XKB_MOD_INVALID argument (sentinel). + * + * @returns 1 if the modifiers are active, 0 if they are not. If any of + * the modifier indices are invalid in the keymap, returns -1. + * + * @memberof xkb_state + */ +int +xkb_state_mod_indices_are_active(struct xkb_state *state, + enum xkb_state_component type, + enum xkb_state_match match, + ...); + +/** + * @page consumed-modifiers Consumed Modifiers + * @parblock + * + * Some functions, like xkb_state_key_get_syms(), look at the state of + * the modifiers in the keymap and derive from it the correct shift level + * to use for the key. For example, in a US layout, pressing the key + * labeled \ while the Shift modifier is active, generates the keysym + * 'A'. In this case, the Shift modifier is said to be "consumed". + * However, the Num Lock modifier does not affect this translation at all, + * even if it is active, so it is not consumed by this translation. + * + * It may be desirable for some application to not reuse consumed modifiers + * for further processing, e.g. for hotkeys or keyboard shortcuts. To + * understand why, consider some requirements from a standard shortcut + * mechanism, and how they are implemented: + * + * 1. The shortcut's modifiers must match exactly to the state. For + * example, it is possible to bind separate actions to \\ + * and to \\\. Further, if only \\ is + * bound to an action, pressing \\\ should not + * trigger the shortcut. + * Effectively, this means that the modifiers are compared using the + * equality operator (==). + * + * 2. Only relevant modifiers are considered for the matching. For example, + * Caps Lock and Num Lock should not generally affect the matching, e.g. + * when matching \\ against the state, it does not matter + * whether Num Lock is active or not. These relevant, or "significant", + * modifiers usually include Alt, Control, Shift, Super and similar. + * Effectively, this means that non-significant modifiers are masked out, + * before doing the comparison as described above. + * + * 3. The matching must be independent of the layout/keymap. For example, + * the \ (+) symbol is found on the first level on some layouts, + * but requires holding Shift on others. If you simply bind the action + * to the \ keysym, it would work for the unshifted kind, but + * not for the others, because the match against Shift would fail. If + * you bind the action to \\, only the shifted kind would + * work. So what is needed is to recognize that Shift is used up in the + * translation of the keysym itself, and therefore should not be included + * in the matching. + * Effectively, this means that consumed modifiers (Shift in this example) + * are masked out as well, before doing the comparison. + * + * In summary, this is how the matching would be performed: + * @code + * (keysym == shortcut_keysym) && + * ((state_mods & ~consumed_mods & significant_mods) == shortcut_mods) + * @endcode + * + * @c state_mods are the modifiers reported by + * xkb_state_mod_index_is_active() and similar functions. + * @c consumed_mods are the modifiers reported by + * xkb_state_mod_index_is_consumed() and similar functions. + * @c significant_mods are decided upon by the application/toolkit/user; + * it is up to them to decide whether these are configurable or hard-coded. + * + * @endparblock + */ + +/** + * Test whether a modifier is consumed by keyboard state translation for + * a key. + * + * @returns 1 if the modifier is consumed, 0 if it is not. If the modifier + * index is not valid in the keymap, returns -1. + * + * @sa xkb_state_mod_mask_remove_consumed() + * @sa xkb_state_key_get_consumed_mods() + * @memberof xkb_state + */ +int +xkb_state_mod_index_is_consumed(struct xkb_state *state, xkb_keycode_t key, + xkb_mod_index_t idx); + +/** + * Remove consumed modifiers from a modifier mask for a key. + * + * Takes the given modifier mask, and removes all modifiers which are + * consumed for that particular key (as in xkb_state_mod_index_is_consumed()). + * + * @sa xkb_state_mod_index_is_consumed() + * @memberof xkb_state + */ +xkb_mod_mask_t +xkb_state_mod_mask_remove_consumed(struct xkb_state *state, xkb_keycode_t key, + xkb_mod_mask_t mask); + +/** + * Get the mask of modifiers consumed by translating a given key. + * + * @returns a mask of the consumed modifiers. + * + * @sa xkb_state_mod_index_is_consumed() + * @memberof xkb_state + * @since 0.4.1 + */ +xkb_mod_mask_t +xkb_state_key_get_consumed_mods(struct xkb_state *state, xkb_keycode_t key); + +/** + * Test whether a layout is active in a given keyboard state by name. + * + * @returns 1 if the layout is active, 0 if it is not. If no layout with + * this name exists in the keymap, return -1. + * + * If multiple layouts in the keymap have this name, the one with the lowest + * index is tested. + * + * @sa xkb_layout_index_t + * @memberof xkb_state + */ +int +xkb_state_layout_name_is_active(struct xkb_state *state, const char *name, + enum xkb_state_component type); + +/** + * Test whether a layout is active in a given keyboard state by index. + * + * @returns 1 if the layout is active, 0 if it is not. If the layout index + * is not valid in the keymap, returns -1. + * + * @sa xkb_layout_index_t + * @memberof xkb_state + */ +int +xkb_state_layout_index_is_active(struct xkb_state *state, + xkb_layout_index_t idx, + enum xkb_state_component type); + +/** + * Test whether a LED is active in a given keyboard state by name. + * + * @returns 1 if the LED is active, 0 if it not. If no LED with this name + * exists in the keymap, returns -1. + * + * @sa xkb_led_index_t + * @memberof xkb_state + */ +int +xkb_state_led_name_is_active(struct xkb_state *state, const char *name); + +/** + * Test whether a LED is active in a given keyboard state by index. + * + * @returns 1 if the LED is active, 0 if it not. If the LED index is not + * valid in the keymap, returns -1. + * + * @sa xkb_led_index_t + * @memberof xkb_state + */ +int +xkb_state_led_index_is_active(struct xkb_state *state, xkb_led_index_t idx); + +/** @} */ + +/* Leave this include last, so it can pick up our types, etc. */ +#include + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* _XKBCOMMON_H_ */ diff --git a/app/src/main/jni/lorie/Android.mk b/app/src/main/jni/lorie/Android.mk index d5b0606..1978597 100644 --- a/app/src/main/jni/lorie/Android.mk +++ b/app/src/main/jni/lorie/Android.mk @@ -4,8 +4,11 @@ include $(CLEAR_VARS) LOCAL_MODULE := lorie LOCAL_SRC_FILES := \ main.c \ + locale/android-utils.c \ backend-android.c \ renderer.c -LOCAL_SHARED_LIBRARIES := wayland-server +LOCAL_C_INCLUDES := $(LOCAL_PATH)/../prebuilt/include LOCAL_LDLIBS := -lEGL -lGLESv2 -llog -landroid +LOCAL_LDFLAGS := -L$(LOCAL_PATH)/../prebuilt/$(TARGET_ARCH_ABI) -lwayland-server +LOCAL_SHARED_LIBRARIES := xkbcommon include $(BUILD_SHARED_LIBRARY) diff --git a/app/src/main/jni/lorie/backend-android.c b/app/src/main/jni/lorie/backend-android.c index 87ede0e..88e959b 100644 --- a/app/src/main/jni/lorie/backend-android.c +++ b/app/src/main/jni/lorie/backend-android.c @@ -2,15 +2,20 @@ #pragma ide diagnostic ignored "readability-isolate-declaration" #pragma ide diagnostic ignored "cppcoreguidelines-avoid-magic-numbers" #include -#include -#include #include #include #include +#include #include #include +#include #include +#include +#include #include +#include +#include +#include #include "backend.h" #include "log.h" @@ -42,10 +47,11 @@ static void checkEGLError(int line) { enum { ACTION_KEY = 1, - ACTION_POINTER = 2, - ACTION_WIN_CHANGE = 3, + ACTION_LAYOUT_CHANGE = 2, + ACTION_POINTER = 3, + ACTION_WIN_CHANGE = 4, #ifdef __ANDROID__ - ACTION_JNI_WIN_CHANGE = 4, + ACTION_JNI_WIN_CHANGE = 5, #endif }; static const EGLint ctxattr[] = { @@ -65,10 +71,13 @@ static const EGLint sfcattr[] = { typedef struct { uint8_t type; union { - struct { - uint8_t state; - uint16_t key; - } key; + struct { + uint8_t state; + uint16_t key; + } key; + struct { + char *layout; + } layout_change; struct { uint16_t state, button; uint32_t x, y; @@ -96,6 +105,10 @@ struct backend_android { EGLSurface sfc; struct callbacks callbacks; + + struct xkb_context *xkb_context; + struct xkb_rule_names xkb_names; + struct xkb_keymap *xkb_keymap; int fds[2]; }; @@ -103,16 +116,28 @@ struct backend_android { struct backend_android *backend = NULL; void lorie_key_event(void __unused *b, uint8_t state, uint16_t key) { - if (!backend) return; - - lorie_event e; - memset(&e, 0, sizeof(lorie_event)); - - e.type = ACTION_KEY; - e.key.state = state; - e.key.key = key; - - write(backend->fds[0], &e, sizeof(lorie_event)); + if (!backend) return; + + lorie_event e; + memset(&e, 0, sizeof(lorie_event)); + + e.type = ACTION_KEY; + e.key.state = state; + e.key.key = key; + + write(backend->fds[0], &e, sizeof(lorie_event)); +} + +void lorie_layout_change_event(void __unused *b, char *layout) { + if (!backend) return; + + lorie_event e; + memset(&e, 0, sizeof(lorie_event)); + + e.type = ACTION_LAYOUT_CHANGE; + e.layout_change.layout = layout; + + write(backend->fds[0], &e, sizeof(lorie_event)); } void lorie_pointer_event(void __unused *b, uint8_t state, uint16_t button, uint32_t x, uint32_t y) { @@ -216,14 +241,49 @@ Java_com_termux_wtermux_LorieService_onTouch(JNIEnv __unused *env, jobject __unu lorie_pointer_event(backend, (uint8_t) type, (uint16_t) button, (uint32_t) x, (uint32_t) y); } +int android_keycode_to_linux_event_code(int keyCode, int *eventCode, int *shift, char **sym); +void get_character_data(char** layout, int *shift, int *eventCode, char *ch); JNIEXPORT void JNICALL -Java_com_termux_wtermux_LorieService_onKey(JNIEnv __unused *env, jobject __unused instance, jlong __unused compositor, - jint type, jint key) { +Java_com_termux_wtermux_LorieService_onKey(JNIEnv *env, jobject instance, + jlong compositor, jint type, + jint keyCode, jint jshift, + jstring characters_) { + char *characters = NULL; + int eventCode = 0; + int shift = jshift; + if (characters_ != NULL) characters = (char*) (*env)->GetStringUTFChars(env, characters_, 0); + if (keyCode && !characters) { + android_keycode_to_linux_event_code(keyCode, &eventCode, &shift, &characters); + if (backend->xkb_names.layout != "us") { + lorie_layout_change_event(backend, "us"); + } + } + if (!keyCode && characters) { + char *layout = NULL; + get_character_data(&layout, &shift, &eventCode, characters); + if (layout && backend->xkb_names.layout != layout) { + lorie_layout_change_event(backend, layout); + } + } + LOGE("Keyboard input: keyCode: %d; eventCode: %d; characters: %s; shift: %d, type: %d", keyCode, eventCode, characters, shift, type); + if (!eventCode) return; - lorie_key_event(backend, (uint8_t) type, (uint16_t) key); + if (shift) + lorie_key_event(backend, (uint8_t) WL_KEYBOARD_KEY_STATE_PRESSED, (uint16_t) 42); // Send KEY_LEFTSHIFT + // For some reason Android do not send ACTION_DOWN for non-English characters + if (characters) + lorie_key_event(backend, (uint8_t) WL_KEYBOARD_KEY_STATE_PRESSED, (uint16_t) eventCode); + + lorie_key_event(backend, (uint8_t) type, (uint16_t) eventCode); + + if (shift) + lorie_key_event(backend, (uint8_t) WL_KEYBOARD_KEY_STATE_RELEASED, (uint16_t) 42); // Send KEY_LEFTSHIFT + + if (characters_ != NULL) (*env)->ReleaseStringUTFChars(env, characters_, characters); } + //////////////////////////////////////////////////////////////////////// void backend_init (struct callbacks *callbacks) { @@ -248,6 +308,29 @@ void backend_init (struct callbacks *callbacks) { eglChooseConfig (backend->dpy, sfcattr, &backend->config, 1, &num_configs_returned); checkEGLError(); backend->ctx = eglCreateContext (backend->dpy, backend->config, EGL_NO_CONTEXT, ctxattr); checkEGLError(); eglMakeCurrent(backend->dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, backend->ctx); checkEGLError(); + + if (backend->xkb_context == NULL) { + backend->xkb_context = xkb_context_new(0); + if (backend->xkb_context == NULL) { + LOGE("failed to create XKB context\n"); + return; + } + } + + backend->xkb_names.rules = strdup("evdev"); + backend->xkb_names.model = strdup("pc105"); + backend->xkb_names.layout = strdup("us"); + + backend->xkb_keymap = xkb_keymap_new_from_names(backend->xkb_context, &backend->xkb_names, 0); + if (backend->xkb_keymap == NULL) { + LOGE("failed to compile global XKB keymap\n"); + LOGE(" tried rules %s, model %s, layout %s, variant %s, " + "options %s\n", + backend->xkb_names.rules, backend->xkb_names.model, + backend->xkb_names.layout, backend->xkb_names.variant, + backend->xkb_names.options); + return; + } } EGLDisplay __unused backend_get_egl_display (void) { @@ -291,6 +374,23 @@ void backend_dispatch_nonblocking (void) if (backend->callbacks.resize) backend->callbacks.resize(ev.window_change.width, ev.window_change.height); break; + case ACTION_LAYOUT_CHANGE: + xkb_keymap_unref(backend->xkb_keymap); + backend->xkb_names.layout = ev.layout_change.layout; + + backend->xkb_keymap = xkb_keymap_new_from_names(backend->xkb_context, &backend->xkb_names, 0); + if (backend->xkb_keymap == NULL) { + LOGE("failed to compile global XKB keymap\n"); + LOGE(" tried rules %s, model %s, layout %s, variant %s, " + "options %s\n", + backend->xkb_names.rules, backend->xkb_names.model, + backend->xkb_names.layout, backend->xkb_names.variant, + backend->xkb_names.options); + return; + } + + if (backend->callbacks.keymap) + backend->callbacks.keymap(); #if 0 #ifdef __ANDROID__ case ACTION_JNI_WIN_CHANGE: @@ -338,8 +438,17 @@ void backend_wait_for_events (int wayland_fd) { poll (fds, 2, -1); } -void __unused backend_get_keymap (int __unused *fd, int __unused *size) { - +void backend_get_keymap (int *fd, int *size) { + LOGI("Locale: %s", backend->xkb_names.layout); + char *string = xkb_keymap_get_as_string (backend->xkb_keymap, XKB_KEYMAP_FORMAT_TEXT_V1); + *size = strlen (string) + 1; + char *xdg_runtime_dir = "/data/data/com.termux/files/usr/tmp"; + *fd = open (xdg_runtime_dir, O_TMPFILE|O_RDWR|O_EXCL, 0600); + ftruncate (*fd, *size); + char *map = mmap (NULL, *size, PROT_READ|PROT_WRITE, MAP_SHARED, *fd, 0); + strcpy (map, string); + munmap (map, *size); + free (string); } long backend_get_timestamp (void) { @@ -352,4 +461,4 @@ void backend_get_dimensions(uint32_t *width, uint32_t *height) { if (width) *width = 480; if (height) *height = 800; } -#pragma clang diagnostic pop \ No newline at end of file +#pragma clang diagnostic pop diff --git a/app/src/main/jni/lorie/backend.h b/app/src/main/jni/lorie/backend.h index 3828ee4..e1cf141 100644 --- a/app/src/main/jni/lorie/backend.h +++ b/app/src/main/jni/lorie/backend.h @@ -13,6 +13,7 @@ struct callbacks { void (*mouse_button) (int button, int state); void (*key) (int key, int state); void (*modifiers) (struct modifier_state modifier_state); + void (*keymap) (); void (*terminate) (); }; diff --git a/app/src/main/jni/lorie/locale/android-keycodes.h b/app/src/main/jni/lorie/locale/android-keycodes.h new file mode 100644 index 0000000..1e225c5 --- /dev/null +++ b/app/src/main/jni/lorie/locale/android-keycodes.h @@ -0,0 +1,750 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef __ANDROID_KEYCODES_H__ +#define __ANDROID_KEYCODES_H__ + +/** Key code constant: Unknown key code. */ +#define ANDROID_KEYCODE_UNKNOWN 0 +/** Key code constant: Soft Left key. + * Usually situated below the display on phones and used as a multi-function + * feature key for selecting a software defined function shown on the bottom left + * of the display. */ +#define ANDROID_KEYCODE_SOFT_LEFT 1 +/** Key code constant: Soft Right key. + * Usually situated below the display on phones and used as a multi-function + * feature key for selecting a software defined function shown on the bottom right + * of the display. */ +#define ANDROID_KEYCODE_SOFT_RIGHT 2 +/** Key code constant: Home key. + * This key is handled by the framework and is never delivered to applications. */ +#define ANDROID_KEYCODE_HOME 3 +/** Key code constant: Back key. */ +#define ANDROID_KEYCODE_BACK 4 +/** Key code constant: Call key. */ +#define ANDROID_KEYCODE_CALL 5 +/** Key code constant: End Call key. */ +#define ANDROID_KEYCODE_ENDCALL 6 +/** Key code constant: '0' key. */ +#define ANDROID_KEYCODE_0 7 +/** Key code constant: '1' key. */ +#define ANDROID_KEYCODE_1 8 +/** Key code constant: '2' key. */ +#define ANDROID_KEYCODE_2 9 +/** Key code constant: '3' key. */ +#define ANDROID_KEYCODE_3 10 +/** Key code constant: '4' key. */ +#define ANDROID_KEYCODE_4 11 +/** Key code constant: '5' key. */ +#define ANDROID_KEYCODE_5 12 +/** Key code constant: '6' key. */ +#define ANDROID_KEYCODE_6 13 +/** Key code constant: '7' key. */ +#define ANDROID_KEYCODE_7 14 +/** Key code constant: '8' key. */ +#define ANDROID_KEYCODE_8 15 +/** Key code constant: '9' key. */ +#define ANDROID_KEYCODE_9 16 +/** Key code constant: '*' key. */ +#define ANDROID_KEYCODE_STAR 17 +/** Key code constant: '#' key. */ +#define ANDROID_KEYCODE_POUND 18 +/** Key code constant: Directional Pad Up key. + * May also be synthesized from trackball motions. */ +#define ANDROID_KEYCODE_DPAD_UP 19 +/** Key code constant: Directional Pad Down key. + * May also be synthesized from trackball motions. */ +#define ANDROID_KEYCODE_DPAD_DOWN 20 +/** Key code constant: Directional Pad Left key. + * May also be synthesized from trackball motions. */ +#define ANDROID_KEYCODE_DPAD_LEFT 21 +/** Key code constant: Directional Pad Right key. + * May also be synthesized from trackball motions. */ +#define ANDROID_KEYCODE_DPAD_RIGHT 22 +/** Key code constant: Directional Pad Center key. + * May also be synthesized from trackball motions. */ +#define ANDROID_KEYCODE_DPAD_CENTER 23 +/** Key code constant: Volume Up key. + * Adjusts the speaker volume up. */ +#define ANDROID_KEYCODE_VOLUME_UP 24 +/** Key code constant: Volume Down key. + * Adjusts the speaker volume down. */ +#define ANDROID_KEYCODE_VOLUME_DOWN 25 +/** Key code constant: Power key. */ +#define ANDROID_KEYCODE_POWER 26 +/** Key code constant: Camera key. + * Used to launch a camera application or take pictures. */ +#define ANDROID_KEYCODE_CAMERA 27 +/** Key code constant: Clear key. */ +#define ANDROID_KEYCODE_CLEAR 28 +/** Key code constant: 'A' key. */ +#define ANDROID_KEYCODE_A 29 +/** Key code constant: 'B' key. */ +#define ANDROID_KEYCODE_B 30 +/** Key code constant: 'C' key. */ +#define ANDROID_KEYCODE_C 31 +/** Key code constant: 'D' key. */ +#define ANDROID_KEYCODE_D 32 +/** Key code constant: 'E' key. */ +#define ANDROID_KEYCODE_E 33 +/** Key code constant: 'F' key. */ +#define ANDROID_KEYCODE_F 34 +/** Key code constant: 'G' key. */ +#define ANDROID_KEYCODE_G 35 +/** Key code constant: 'H' key. */ +#define ANDROID_KEYCODE_H 36 +/** Key code constant: 'I' key. */ +#define ANDROID_KEYCODE_I 37 +/** Key code constant: 'J' key. */ +#define ANDROID_KEYCODE_J 38 +/** Key code constant: 'K' key. */ +#define ANDROID_KEYCODE_K 39 +/** Key code constant: 'L' key. */ +#define ANDROID_KEYCODE_L 40 +/** Key code constant: 'M' key. */ +#define ANDROID_KEYCODE_M 41 +/** Key code constant: 'N' key. */ +#define ANDROID_KEYCODE_N 42 +/** Key code constant: 'O' key. */ +#define ANDROID_KEYCODE_O 43 +/** Key code constant: 'P' key. */ +#define ANDROID_KEYCODE_P 44 +/** Key code constant: 'Q' key. */ +#define ANDROID_KEYCODE_Q 45 +/** Key code constant: 'R' key. */ +#define ANDROID_KEYCODE_R 46 +/** Key code constant: 'S' key. */ +#define ANDROID_KEYCODE_S 47 +/** Key code constant: 'T' key. */ +#define ANDROID_KEYCODE_T 48 +/** Key code constant: 'U' key. */ +#define ANDROID_KEYCODE_U 49 +/** Key code constant: 'V' key. */ +#define ANDROID_KEYCODE_V 50 +/** Key code constant: 'W' key. */ +#define ANDROID_KEYCODE_W 51 +/** Key code constant: 'X' key. */ +#define ANDROID_KEYCODE_X 52 +/** Key code constant: 'Y' key. */ +#define ANDROID_KEYCODE_Y 53 +/** Key code constant: 'Z' key. */ +#define ANDROID_KEYCODE_Z 54 +/** Key code constant: ',' key. */ +#define ANDROID_KEYCODE_COMMA 55 +/** Key code constant: '.' key. */ +#define ANDROID_KEYCODE_PERIOD 56 +/** Key code constant: Left Alt modifier key. */ +#define ANDROID_KEYCODE_ALT_LEFT 57 +/** Key code constant: Right Alt modifier key. */ +#define ANDROID_KEYCODE_ALT_RIGHT 58 +/** Key code constant: Left Shift modifier key. */ +#define ANDROID_KEYCODE_SHIFT_LEFT 59 +/** Key code constant: Right Shift modifier key. */ +#define ANDROID_KEYCODE_SHIFT_RIGHT 60 +/** Key code constant: Tab key. */ +#define ANDROID_KEYCODE_TAB 61 +/** Key code constant: Space key. */ +#define ANDROID_KEYCODE_SPACE 62 +/** Key code constant: Symbol modifier key. + * Used to enter alternate symbols. */ +#define ANDROID_KEYCODE_SYM 63 +/** Key code constant: Explorer special function key. + * Used to launch a browser application. */ +#define ANDROID_KEYCODE_EXPLORER 64 +/** Key code constant: Envelope special function key. + * Used to launch a mail application. */ +#define ANDROID_KEYCODE_ENVELOPE 65 +/** Key code constant: Enter key. */ +#define ANDROID_KEYCODE_ENTER 66 +/** Key code constant: Backspace key. + * Deletes characters before the insertion point, unlike {@link #KEYCODE_FORWARD_DEL}. */ +#define ANDROID_KEYCODE_DEL 67 +/** Key code constant: '`' (backtick) key. */ +#define ANDROID_KEYCODE_GRAVE 68 +/** Key code constant: '-'. */ +#define ANDROID_KEYCODE_MINUS 69 +/** Key code constant: '=' key. */ +#define ANDROID_KEYCODE_EQUALS 70 +/** Key code constant: '[' key. */ +#define ANDROID_KEYCODE_LEFT_BRACKET 71 +/** Key code constant: ']' key. */ +#define ANDROID_KEYCODE_RIGHT_BRACKET 72 +/** Key code constant: '\' key. */ +#define ANDROID_KEYCODE_BACKSLASH 73 +/** Key code constant: ';' key. */ +#define ANDROID_KEYCODE_SEMICOLON 74 +/** Key code constant: ''' (apostrophe) key. */ +#define ANDROID_KEYCODE_APOSTROPHE 75 +/** Key code constant: '/' key. */ +#define ANDROID_KEYCODE_SLASH 76 +/** Key code constant: '@' key. */ +#define ANDROID_KEYCODE_AT 77 +/** Key code constant: Number modifier key. + * Used to enter numeric symbols. + * This key is not Num Lock; it is more like {@link #KEYCODE_ALT_LEFT} and is + * interpreted as an ALT key by {@link android.text.method.MetaKeyKeyListener}. */ +#define ANDROID_KEYCODE_NUM 78 +/** Key code constant: Headset Hook key. + * Used to hang up calls and stop media. */ +#define ANDROID_KEYCODE_HEADSETHOOK 79 +/** Key code constant: Camera Focus key. + * Used to focus the camera. */ +#define ANDROID_KEYCODE_FOCUS 80 // *Camera* focus +/** Key code constant: '+' key. */ +#define ANDROID_KEYCODE_PLUS 81 +/** Key code constant: Menu key. */ +#define ANDROID_KEYCODE_MENU 82 +/** Key code constant: Notification key. */ +#define ANDROID_KEYCODE_NOTIFICATION 83 +/** Key code constant: Search key. */ +#define ANDROID_KEYCODE_SEARCH 84 +/** Key code constant: Play/Pause media key. */ +#define ANDROID_KEYCODE_MEDIA_PLAY_PAUSE 85 +/** Key code constant: Stop media key. */ +#define ANDROID_KEYCODE_MEDIA_STOP 86 +/** Key code constant: Play Next media key. */ +#define ANDROID_KEYCODE_MEDIA_NEXT 87 +/** Key code constant: Play Previous media key. */ +#define ANDROID_KEYCODE_MEDIA_PREVIOUS 88 +/** Key code constant: Rewind media key. */ +#define ANDROID_KEYCODE_MEDIA_REWIND 89 +/** Key code constant: Fast Forward media key. */ +#define ANDROID_KEYCODE_MEDIA_FAST_FORWARD 90 +/** Key code constant: Mute key. + * Mutes the microphone, unlike {@link #KEYCODE_VOLUME_MUTE}. */ +#define ANDROID_KEYCODE_MUTE 91 +/** Key code constant: Page Up key. */ +#define ANDROID_KEYCODE_PAGE_UP 92 +/** Key code constant: Page Down key. */ +#define ANDROID_KEYCODE_PAGE_DOWN 93 +/** Key code constant: Picture Symbols modifier key. + * Used to switch symbol sets (Emoji, Kao-moji). */ +#define ANDROID_KEYCODE_PICTSYMBOLS 94 // switch symbol-sets (Emoji,Kao-moji) +/** Key code constant: Switch Charset modifier key. + * Used to switch character sets (Kanji, Katakana). */ +#define ANDROID_KEYCODE_SWITCH_CHARSET 95 // switch char-sets (Kanji,Katakana) +/** Key code constant: A Button key. + * On a game controller, the A button should be either the button labeled A + * or the first button on the bottom row of controller buttons. */ +#define ANDROID_KEYCODE_BUTTON_A 96 +/** Key code constant: B Button key. + * On a game controller, the B button should be either the button labeled B + * or the second button on the bottom row of controller buttons. */ +#define ANDROID_KEYCODE_BUTTON_B 97 +/** Key code constant: C Button key. + * On a game controller, the C button should be either the button labeled C + * or the third button on the bottom row of controller buttons. */ +#define ANDROID_KEYCODE_BUTTON_C 98 +/** Key code constant: X Button key. + * On a game controller, the X button should be either the button labeled X + * or the first button on the upper row of controller buttons. */ +#define ANDROID_KEYCODE_BUTTON_X 99 +/** Key code constant: Y Button key. + * On a game controller, the Y button should be either the button labeled Y + * or the second button on the upper row of controller buttons. */ +#define ANDROID_KEYCODE_BUTTON_Y 100 +/** Key code constant: Z Button key. + * On a game controller, the Z button should be either the button labeled Z + * or the third button on the upper row of controller buttons. */ +#define ANDROID_KEYCODE_BUTTON_Z 101 +/** Key code constant: L1 Button key. + * On a game controller, the L1 button should be either the button labeled L1 (or L) + * or the top left trigger button. */ +#define ANDROID_KEYCODE_BUTTON_L1 102 +/** Key code constant: R1 Button key. + * On a game controller, the R1 button should be either the button labeled R1 (or R) + * or the top right trigger button. */ +#define ANDROID_KEYCODE_BUTTON_R1 103 +/** Key code constant: L2 Button key. + * On a game controller, the L2 button should be either the button labeled L2 + * or the bottom left trigger button. */ +#define ANDROID_KEYCODE_BUTTON_L2 104 +/** Key code constant: R2 Button key. + * On a game controller, the R2 button should be either the button labeled R2 + * or the bottom right trigger button. */ +#define ANDROID_KEYCODE_BUTTON_R2 105 +/** Key code constant: Left Thumb Button key. + * On a game controller, the left thumb button indicates that the left (or only) + * joystick is pressed. */ +#define ANDROID_KEYCODE_BUTTON_THUMBL 106 +/** Key code constant: Right Thumb Button key. + * On a game controller, the right thumb button indicates that the right + * joystick is pressed. */ +#define ANDROID_KEYCODE_BUTTON_THUMBR 107 +/** Key code constant: Start Button key. + * On a game controller, the button labeled Start. */ +#define ANDROID_KEYCODE_BUTTON_START 108 +/** Key code constant: Select Button key. + * On a game controller, the button labeled Select. */ +#define ANDROID_KEYCODE_BUTTON_SELECT 109 +/** Key code constant: Mode Button key. + * On a game controller, the button labeled Mode. */ +#define ANDROID_KEYCODE_BUTTON_MODE 110 +/** Key code constant: Escape key. */ +#define ANDROID_KEYCODE_ESCAPE 111 +/** Key code constant: Forward Delete key. + * Deletes characters ahead of the insertion point, unlike {@link #KEYCODE_DEL}. */ +#define ANDROID_KEYCODE_FORWARD_DEL 112 +/** Key code constant: Left Control modifier key. */ +#define ANDROID_KEYCODE_CTRL_LEFT 113 +/** Key code constant: Right Control modifier key. */ +#define ANDROID_KEYCODE_CTRL_RIGHT 114 +/** Key code constant: Caps Lock key. */ +#define ANDROID_KEYCODE_CAPS_LOCK 115 +/** Key code constant: Scroll Lock key. */ +#define ANDROID_KEYCODE_SCROLL_LOCK 116 +/** Key code constant: Left Meta modifier key. */ +#define ANDROID_KEYCODE_META_LEFT 117 +/** Key code constant: Right Meta modifier key. */ +#define ANDROID_KEYCODE_META_RIGHT 118 +/** Key code constant: Function modifier key. */ +#define ANDROID_KEYCODE_FUNCTION 119 +/** Key code constant: System Request / Print Screen key. */ +#define ANDROID_KEYCODE_SYSRQ 120 +/** Key code constant: Break / Pause key. */ +#define ANDROID_KEYCODE_BREAK 121 +/** Key code constant: Home Movement key. + * Used for scrolling or moving the cursor around to the start of a line + * or to the top of a list. */ +#define ANDROID_KEYCODE_MOVE_HOME 122 +/** Key code constant: End Movement key. + * Used for scrolling or moving the cursor around to the end of a line + * or to the bottom of a list. */ +#define ANDROID_KEYCODE_MOVE_END 123 +/** Key code constant: Insert key. + * Toggles insert / overwrite edit mode. */ +#define ANDROID_KEYCODE_INSERT 124 +/** Key code constant: Forward key. + * Navigates forward in the history stack. Complement of {@link #KEYCODE_BACK}. */ +#define ANDROID_KEYCODE_FORWARD 125 +/** Key code constant: Play media key. */ +#define ANDROID_KEYCODE_MEDIA_PLAY 126 +/** Key code constant: Pause media key. */ +#define ANDROID_KEYCODE_MEDIA_PAUSE 127 +/** Key code constant: Close media key. + * May be used to close a CD tray, for example. */ +#define ANDROID_KEYCODE_MEDIA_CLOSE 128 +/** Key code constant: Eject media key. + * May be used to eject a CD tray, for example. */ +#define ANDROID_KEYCODE_MEDIA_EJECT 129 +/** Key code constant: Record media key. */ +#define ANDROID_KEYCODE_MEDIA_RECORD 130 +/** Key code constant: F1 key. */ +#define ANDROID_KEYCODE_F1 131 +/** Key code constant: F2 key. */ +#define ANDROID_KEYCODE_F2 132 +/** Key code constant: F3 key. */ +#define ANDROID_KEYCODE_F3 133 +/** Key code constant: F4 key. */ +#define ANDROID_KEYCODE_F4 134 +/** Key code constant: F5 key. */ +#define ANDROID_KEYCODE_F5 135 +/** Key code constant: F6 key. */ +#define ANDROID_KEYCODE_F6 136 +/** Key code constant: F7 key. */ +#define ANDROID_KEYCODE_F7 137 +/** Key code constant: F8 key. */ +#define ANDROID_KEYCODE_F8 138 +/** Key code constant: F9 key. */ +#define ANDROID_KEYCODE_F9 139 +/** Key code constant: F10 key. */ +#define ANDROID_KEYCODE_F10 140 +/** Key code constant: F11 key. */ +#define ANDROID_KEYCODE_F11 141 +/** Key code constant: F12 key. */ +#define ANDROID_KEYCODE_F12 142 +/** Key code constant: Num Lock key. + * This is the Num Lock key; it is different from {@link #KEYCODE_NUM}. + * This key alters the behavior of other keys on the numeric keypad. */ +#define ANDROID_KEYCODE_NUM_LOCK 143 +/** Key code constant: Numeric keypad '0' key. */ +#define ANDROID_KEYCODE_NUMPAD_0 144 +/** Key code constant: Numeric keypad '1' key. */ +#define ANDROID_KEYCODE_NUMPAD_1 145 +/** Key code constant: Numeric keypad '2' key. */ +#define ANDROID_KEYCODE_NUMPAD_2 146 +/** Key code constant: Numeric keypad '3' key. */ +#define ANDROID_KEYCODE_NUMPAD_3 147 +/** Key code constant: Numeric keypad '4' key. */ +#define ANDROID_KEYCODE_NUMPAD_4 148 +/** Key code constant: Numeric keypad '5' key. */ +#define ANDROID_KEYCODE_NUMPAD_5 149 +/** Key code constant: Numeric keypad '6' key. */ +#define ANDROID_KEYCODE_NUMPAD_6 150 +/** Key code constant: Numeric keypad '7' key. */ +#define ANDROID_KEYCODE_NUMPAD_7 151 +/** Key code constant: Numeric keypad '8' key. */ +#define ANDROID_KEYCODE_NUMPAD_8 152 +/** Key code constant: Numeric keypad '9' key. */ +#define ANDROID_KEYCODE_NUMPAD_9 153 +/** Key code constant: Numeric keypad '/' key (for division). */ +#define ANDROID_KEYCODE_NUMPAD_DIVIDE 154 +/** Key code constant: Numeric keypad '*' key (for multiplication). */ +#define ANDROID_KEYCODE_NUMPAD_MULTIPLY 155 +/** Key code constant: Numeric keypad '-' key (for subtraction). */ +#define ANDROID_KEYCODE_NUMPAD_SUBTRACT 156 +/** Key code constant: Numeric keypad '+' key (for addition). */ +#define ANDROID_KEYCODE_NUMPAD_ADD 157 +/** Key code constant: Numeric keypad '.' key (for decimals or digit grouping). */ +#define ANDROID_KEYCODE_NUMPAD_DOT 158 +/** Key code constant: Numeric keypad ',' key (for decimals or digit grouping). */ +#define ANDROID_KEYCODE_NUMPAD_COMMA 159 +/** Key code constant: Numeric keypad Enter key. */ +#define ANDROID_KEYCODE_NUMPAD_ENTER 160 +/** Key code constant: Numeric keypad '=' key. */ +#define ANDROID_KEYCODE_NUMPAD_EQUALS 161 +/** Key code constant: Numeric keypad '(' key. */ +#define ANDROID_KEYCODE_NUMPAD_LEFT_PAREN 162 +/** Key code constant: Numeric keypad ')' key. */ +#define ANDROID_KEYCODE_NUMPAD_RIGHT_PAREN 163 +/** Key code constant: Volume Mute key. + * Mutes the speaker, unlike {@link #KEYCODE_MUTE}. + * This key should normally be implemented as a toggle such that the first press + * mutes the speaker and the second press restores the original volume. */ +#define ANDROID_KEYCODE_VOLUME_MUTE 164 +/** Key code constant: Info key. + * Common on TV remotes to show additional information related to what is + * currently being viewed. */ +#define ANDROID_KEYCODE_INFO 165 +/** Key code constant: Channel up key. + * On TV remotes, increments the television channel. */ +#define ANDROID_KEYCODE_CHANNEL_UP 166 +/** Key code constant: Channel down key. + * On TV remotes, decrements the television channel. */ +#define ANDROID_KEYCODE_CHANNEL_DOWN 167 +/** Key code constant: Zoom in key. */ +#define ANDROID_KEYCODE_ZOOM_IN 168 +/** Key code constant: Zoom out key. */ +#define ANDROID_KEYCODE_ZOOM_OUT 169 +/** Key code constant: TV key. + * On TV remotes, switches to viewing live TV. */ +#define ANDROID_KEYCODE_TV 170 +/** Key code constant: Window key. + * On TV remotes, toggles picture-in-picture mode or other windowing functions. + * On Android Wear devices, triggers a display offset. */ +#define ANDROID_KEYCODE_WINDOW 171 +/** Key code constant: Guide key. + * On TV remotes, shows a programming guide. */ +#define ANDROID_KEYCODE_GUIDE 172 +/** Key code constant: DVR key. + * On some TV remotes, switches to a DVR mode for recorded shows. */ +#define ANDROID_KEYCODE_DVR 173 +/** Key code constant: Bookmark key. + * On some TV remotes, bookmarks content or web pages. */ +#define ANDROID_KEYCODE_BOOKMARK 174 +/** Key code constant: Toggle captions key. + * Switches the mode for closed-captioning text, for example during television shows. */ +#define ANDROID_KEYCODE_CAPTIONS 175 +/** Key code constant: Settings key. + * Starts the system settings activity. */ +#define ANDROID_KEYCODE_SETTINGS 176 +/** Key code constant: TV power key. + * On TV remotes, toggles the power on a television screen. */ +#define ANDROID_KEYCODE_TV_POWER 177 +/** Key code constant: TV input key. + * On TV remotes, switches the input on a television screen. */ +#define ANDROID_KEYCODE_TV_INPUT 178 +/** Key code constant: Set-top-box power key. + * On TV remotes, toggles the power on an external Set-top-box. */ +#define ANDROID_KEYCODE_STB_POWER 179 +/** Key code constant: Set-top-box input key. + * On TV remotes, switches the input mode on an external Set-top-box. */ +#define ANDROID_KEYCODE_STB_INPUT 180 +/** Key code constant: A/V Receiver power key. + * On TV remotes, toggles the power on an external A/V Receiver. */ +#define ANDROID_KEYCODE_AVR_POWER 181 +/** Key code constant: A/V Receiver input key. + * On TV remotes, switches the input mode on an external A/V Receiver. */ +#define ANDROID_KEYCODE_AVR_INPUT 182 +/** Key code constant: Red "programmable" key. + * On TV remotes, acts as a contextual/programmable key. */ +#define ANDROID_KEYCODE_PROG_RED 183 +/** Key code constant: Green "programmable" key. + * On TV remotes, actsas a contextual/programmable key. */ +#define ANDROID_KEYCODE_PROG_GREEN 184 +/** Key code constant: Yellow "programmable" key. + * On TV remotes, acts as a contextual/programmable key. */ +#define ANDROID_KEYCODE_PROG_YELLOW 185 +/** Key code constant: Blue "programmable" key. + * On TV remotes, acts as a contextual/programmable key. */ +#define ANDROID_KEYCODE_PROG_BLUE 186 +/** Key code constant: App switch key. + * Should bring up the application switcher dialog. */ +#define ANDROID_KEYCODE_APP_SWITCH 187 +/** Key code constant: Generic Game Pad Button #1.*/ +#define ANDROID_KEYCODE_BUTTON_1 188 +/** Key code constant: Generic Game Pad Button #2.*/ +#define ANDROID_KEYCODE_BUTTON_2 189 +/** Key code constant: Generic Game Pad Button #3.*/ +#define ANDROID_KEYCODE_BUTTON_3 190 +/** Key code constant: Generic Game Pad Button #4.*/ +#define ANDROID_KEYCODE_BUTTON_4 191 +/** Key code constant: Generic Game Pad Button #5.*/ +#define ANDROID_KEYCODE_BUTTON_5 192 +/** Key code constant: Generic Game Pad Button #6.*/ +#define ANDROID_KEYCODE_BUTTON_6 193 +/** Key code constant: Generic Game Pad Button #7.*/ +#define ANDROID_KEYCODE_BUTTON_7 194 +/** Key code constant: Generic Game Pad Button #8.*/ +#define ANDROID_KEYCODE_BUTTON_8 195 +/** Key code constant: Generic Game Pad Button #9.*/ +#define ANDROID_KEYCODE_BUTTON_9 196 +/** Key code constant: Generic Game Pad Button #10.*/ +#define ANDROID_KEYCODE_BUTTON_10 197 +/** Key code constant: Generic Game Pad Button #11.*/ +#define ANDROID_KEYCODE_BUTTON_11 198 +/** Key code constant: Generic Game Pad Button #12.*/ +#define ANDROID_KEYCODE_BUTTON_12 199 +/** Key code constant: Generic Game Pad Button #13.*/ +#define ANDROID_KEYCODE_BUTTON_13 200 +/** Key code constant: Generic Game Pad Button #14.*/ +#define ANDROID_KEYCODE_BUTTON_14 201 +/** Key code constant: Generic Game Pad Button #15.*/ +#define ANDROID_KEYCODE_BUTTON_15 202 +/** Key code constant: Generic Game Pad Button #16.*/ +#define ANDROID_KEYCODE_BUTTON_16 203 +/** Key code constant: Language Switch key. + * Toggles the current input language such as switching between English and Japanese on + * a QWERTY keyboard. On some devices, the same function may be performed by + * pressing Shift+Spacebar. */ +#define ANDROID_KEYCODE_LANGUAGE_SWITCH 204 +/** Key code constant: Manner Mode key. + * Toggles silent or vibrate mode on and off to make the device behave more politely + * in certain settings such as on a crowded train. On some devices, the key may only + * operate when long-pressed. */ +#define ANDROID_KEYCODE_MANNER_MODE 205 +/** Key code constant: 3D Mode key. + * Toggles the display between 2D and 3D mode. */ +#define ANDROID_KEYCODE_3D_MODE 206 +/** Key code constant: Contacts special function key. + * Used to launch an address book application. */ +#define ANDROID_KEYCODE_CONTACTS 207 +/** Key code constant: Calendar special function key. + * Used to launch a calendar application. */ +#define ANDROID_KEYCODE_CALENDAR 208 +/** Key code constant: Music special function key. + * Used to launch a music player application. */ +#define ANDROID_KEYCODE_MUSIC 209 +/** Key code constant: Calculator special function key. + * Used to launch a calculator application. */ +#define ANDROID_KEYCODE_CALCULATOR 210 +/** Key code constant: Japanese full-width / half-width key. */ +#define ANDROID_KEYCODE_ZENKAKU_HANKAKU 211 +/** Key code constant: Japanese alphanumeric key. */ +#define ANDROID_KEYCODE_EISU 212 +/** Key code constant: Japanese non-conversion key. */ +#define ANDROID_KEYCODE_MUHENKAN 213 +/** Key code constant: Japanese conversion key. */ +#define ANDROID_KEYCODE_HENKAN 214 +/** Key code constant: Japanese katakana / hiragana key. */ +#define ANDROID_KEYCODE_KATAKANA_HIRAGANA 215 +/** Key code constant: Japanese Yen key. */ +#define ANDROID_KEYCODE_YEN 216 +/** Key code constant: Japanese Ro key. */ +#define ANDROID_KEYCODE_RO 217 +/** Key code constant: Japanese kana key. */ +#define ANDROID_KEYCODE_KANA 218 +/** Key code constant: Assist key. + * Launches the global assist activity. Not delivered to applications. */ +#define ANDROID_KEYCODE_ASSIST 219 +/** Key code constant: Brightness Down key. + * Adjusts the screen brightness down. */ +#define ANDROID_KEYCODE_BRIGHTNESS_DOWN 220 +/** Key code constant: Brightness Up key. + * Adjusts the screen brightness up. */ +#define ANDROID_KEYCODE_BRIGHTNESS_UP 221 +/** Key code constant: Audio Track key. + * Switches the audio tracks. */ +#define ANDROID_KEYCODE_MEDIA_AUDIO_TRACK 222 +/** Key code constant: Sleep key. + * Puts the device to sleep. Behaves somewhat like {@link #KEYCODE_POWER} but it + * has no effect if the device is already asleep. */ +#define ANDROID_KEYCODE_SLEEP 223 +/** Key code constant: Wakeup key. + * Wakes up the device. Behaves somewhat like {@link #KEYCODE_POWER} but it + * has no effect if the device is already awake. */ +#define ANDROID_KEYCODE_WAKEUP 224 +/** Key code constant: Pairing key. + * Initiates peripheral pairing mode. Useful for pairing remote control + * devices or game controllers, especially if no other input mode is + * available. */ +#define ANDROID_KEYCODE_PAIRING 225 +/** Key code constant: Media Top Menu key. + * Goes to the top of media menu. */ +#define ANDROID_KEYCODE_MEDIA_TOP_MENU 226 +/** Key code constant: '11' key. */ +#define ANDROID_KEYCODE_11 227 +/** Key code constant: '12' key. */ +#define ANDROID_KEYCODE_12 228 +/** Key code constant: Last Channel key. + * Goes to the last viewed channel. */ +#define ANDROID_KEYCODE_LAST_CHANNEL 229 +/** Key code constant: TV data service key. + * Displays data services like weather, sports. */ +#define ANDROID_KEYCODE_TV_DATA_SERVICE 230 +/** Key code constant: Voice Assist key. + * Launches the global voice assist activity. Not delivered to applications. */ +#define ANDROID_KEYCODE_VOICE_ASSIST 231 +/** Key code constant: Radio key. + * Toggles TV service / Radio service. */ +#define ANDROID_KEYCODE_TV_RADIO_SERVICE 232 +/** Key code constant: Teletext key. + * Displays Teletext service. */ +#define ANDROID_KEYCODE_TV_TELETEXT 233 +/** Key code constant: Number entry key. + * Initiates to enter multi-digit channel nubmber when each digit key is assigned + * for selecting separate channel. Corresponds to Number Entry Mode (0x1D) of CEC + * User Control Code. */ +#define ANDROID_KEYCODE_TV_NUMBER_ENTRY 234 +/** Key code constant: Analog Terrestrial key. + * Switches to analog terrestrial broadcast service. */ +#define ANDROID_KEYCODE_TV_TERRESTRIAL_ANALOG 235 +/** Key code constant: Digital Terrestrial key. + * Switches to digital terrestrial broadcast service. */ +#define ANDROID_KEYCODE_TV_TERRESTRIAL_DIGITAL 236 +/** Key code constant: Satellite key. + * Switches to digital satellite broadcast service. */ +#define ANDROID_KEYCODE_TV_SATELLITE 237 +/** Key code constant: BS key. + * Switches to BS digital satellite broadcasting service available in Japan. */ +#define ANDROID_KEYCODE_TV_SATELLITE_BS 238 +/** Key code constant: CS key. + * Switches to CS digital satellite broadcasting service available in Japan. */ +#define ANDROID_KEYCODE_TV_SATELLITE_CS 239 +/** Key code constant: BS/CS key. + * Toggles between BS and CS digital satellite services. */ +#define ANDROID_KEYCODE_TV_SATELLITE_SERVICE 240 +/** Key code constant: Toggle Network key. + * Toggles selecting broacast services. */ +#define ANDROID_KEYCODE_TV_NETWORK 241 +/** Key code constant: Antenna/Cable key. + * Toggles broadcast input source between antenna and cable. */ +#define ANDROID_KEYCODE_TV_ANTENNA_CABLE 242 +/** Key code constant: HDMI #1 key. + * Switches to HDMI input #1. */ +#define ANDROID_KEYCODE_TV_INPUT_HDMI_1 243 +/** Key code constant: HDMI #2 key. + * Switches to HDMI input #2. */ +#define ANDROID_KEYCODE_TV_INPUT_HDMI_2 244 +/** Key code constant: HDMI #3 key. + * Switches to HDMI input #3. */ +#define ANDROID_KEYCODE_TV_INPUT_HDMI_3 245 +/** Key code constant: HDMI #4 key. + * Switches to HDMI input #4. */ +#define ANDROID_KEYCODE_TV_INPUT_HDMI_4 246 +/** Key code constant: Composite #1 key. + * Switches to composite video input #1. */ +#define ANDROID_KEYCODE_TV_INPUT_COMPOSITE_1 247 +/** Key code constant: Composite #2 key. + * Switches to composite video input #2. */ +#define ANDROID_KEYCODE_TV_INPUT_COMPOSITE_2 248 +/** Key code constant: Component #1 key. + * Switches to component video input #1. */ +#define ANDROID_KEYCODE_TV_INPUT_COMPONENT_1 249 +/** Key code constant: Component #2 key. + * Switches to component video input #2. */ +#define ANDROID_KEYCODE_TV_INPUT_COMPONENT_2 250 +/** Key code constant: VGA #1 key. + * Switches to VGA (analog RGB) input #1. */ +#define ANDROID_KEYCODE_TV_INPUT_VGA_1 251 +/** Key code constant: Audio description key. + * Toggles audio description off / on. */ +#define ANDROID_KEYCODE_TV_AUDIO_DESCRIPTION 252 +/** Key code constant: Audio description mixing volume up key. + * Louden audio description volume as compared with normal audio volume. */ +#define ANDROID_KEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP 253 +/** Key code constant: Audio description mixing volume down key. + * Lessen audio description volume as compared with normal audio volume. */ +#define ANDROID_KEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN 254 +/** Key code constant: Zoom mode key. + * Changes Zoom mode (Normal, Full, Zoom, Wide-zoom, etc.) */ +#define ANDROID_KEYCODE_TV_ZOOM_MODE 255 +/** Key code constant: Contents menu key. + * Goes to the title list. Corresponds to Contents Menu (0x0B) of CEC User Control + * Code */ +#define ANDROID_KEYCODE_TV_CONTENTS_MENU 256 +/** Key code constant: Media context menu key. + * Goes to the context menu of media contents. Corresponds to Media Context-sensitive + * Menu (0x11) of CEC User Control Code. */ +#define ANDROID_KEYCODE_TV_MEDIA_CONTEXT_MENU 257 +/** Key code constant: Timer programming key. + * Goes to the timer recording menu. Corresponds to Timer Programming (0x54) of + * CEC User Control Code. */ +#define ANDROID_KEYCODE_TV_TIMER_PROGRAMMING 258 +/** Key code constant: Help key. */ +#define ANDROID_KEYCODE_HELP 259 +/** Key code constant: Navigate to previous key. + * Goes backward by one item in an ordered collection of items. */ +#define ANDROID_KEYCODE_NAVIGATE_PREVIOUS 260 +/** Key code constant: Navigate to next key. + * Advances to the next item in an ordered collection of items. */ +#define ANDROID_KEYCODE_NAVIGATE_NEXT 261 +/** Key code constant: Navigate in key. + * Activates the item that currently has focus or expands to the next level of a navigation + * hierarchy. */ +#define ANDROID_KEYCODE_NAVIGATE_IN 262 +/** Key code constant: Navigate out key. + * Backs out one level of a navigation hierarchy or collapses the item that currently has + * focus. */ +#define ANDROID_KEYCODE_NAVIGATE_OUT 263 +/** Key code constant: Primary stem key for Wear + * Main power/reset button on watch. */ +#define ANDROID_KEYCODE_STEM_PRIMARY 264 +/** Key code constant: Generic stem key 1 for Wear */ +#define ANDROID_KEYCODE_STEM_1 265 +/** Key code constant: Generic stem key 2 for Wear */ +#define ANDROID_KEYCODE_STEM_2 266 +/** Key code constant: Generic stem key 3 for Wear */ +#define ANDROID_KEYCODE_STEM_3 267 +/** Key code constant: Directional Pad Up-Left */ +#define ANDROID_KEYCODE_DPAD_UP_LEFT 268 +/** Key code constant: Directional Pad Down-Left */ +#define ANDROID_KEYCODE_DPAD_DOWN_LEFT 269 +/** Key code constant: Directional Pad Up-Right */ +#define ANDROID_KEYCODE_DPAD_UP_RIGHT 270 +/** Key code constant: Directional Pad Down-Right */ +#define ANDROID_KEYCODE_DPAD_DOWN_RIGHT 271 +/** Key code constant: Skip forward media key. */ +#define ANDROID_KEYCODE_MEDIA_SKIP_FORWARD 272 +/** Key code constant: Skip backward media key. */ +#define ANDROID_KEYCODE_MEDIA_SKIP_BACKWARD 273 +/** Key code constant: Step forward media key. + * Steps media forward, one frame at a time. */ +#define ANDROID_KEYCODE_MEDIA_STEP_FORWARD 274 +/** Key code constant: Step backward media key. + * Steps media backward, one frame at a time. */ +#define ANDROID_KEYCODE_MEDIA_STEP_BACKWARD 275 +/** Key code constant: put device to sleep unless a wakelock is held. */ +#define ANDROID_KEYCODE_SOFT_SLEEP 276 +/** Key code constant: Cut key. */ +#define ANDROID_KEYCODE_CUT 277 +/** Key code constant: Copy key. */ +#define ANDROID_KEYCODE_COPY 278 +/** Key code constant: Paste key. */ +#define ANDROID_KEYCODE_PASTE 279 +/** Key code constant: Consumed by the system for navigation up */ +#define ANDROID_KEYCODE_SYSTEM_NAVIGATION_UP 280 +/** Key code constant: Consumed by the system for navigation down */ +#define ANDROID_KEYCODE_SYSTEM_NAVIGATION_DOWN 281 +/** Key code constant: Consumed by the system for navigation left*/ +#define ANDROID_KEYCODE_SYSTEM_NAVIGATION_LEFT 282 +/** Key code constant: Consumed by the system for navigation right */ +#define ANDROID_KEYCODE_SYSTEM_NAVIGATION_RIGHT 283 +/** Key code constant: Show all apps */ +#define ANDROID_KEYCODE_ALL_APPS 284 +/** Key code constant: Refresh key. */ +#define ANDROID_KEYCODE_REFRESH 285 + +#endif // __ANDROID_KEYCODES_H__ diff --git a/app/src/main/jni/lorie/locale/android-utils.c b/app/src/main/jni/lorie/locale/android-utils.c new file mode 100644 index 0000000..d89fd39 --- /dev/null +++ b/app/src/main/jni/lorie/locale/android-utils.c @@ -0,0 +1,248 @@ +#pragma clang diagnostic push +#pragma ide diagnostic ignored "readability-non-const-parameter" +#pragma ide diagnostic ignored "OCDFAInspection" +#include +#include +#include +#include "input-event-codes.h" +#include "android-keycodes.h" +#include "evdev-keycodes.h" +#include "keymaps.h" + +#define KEYCODE1(c) case ANDROID_KEYCODE_##c : *eventCode = KEY_##c; return 0 +#define KEYCODE2(kc, ec) case ANDROID_KEYCODE_##kc : *eventCode = KEY_##ec; return 0 +#define KEYCODE2shift(kc, ec) case ANDROID_KEYCODE_##kc : *eventCode = KEY_##ec; *shift = 1; return 0 +int android_keycode_to_linux_event_code(int keyCode, int *eventCode, int *shift, char **sym) { + if (!eventCode || !sym) return 1; + *sym = NULL; + switch (keyCode) { + KEYCODE1(1); + KEYCODE1(2); + KEYCODE1(3); + KEYCODE1(4); + KEYCODE1(5); + KEYCODE1(6); + KEYCODE1(7); + KEYCODE1(8); + KEYCODE1(9); + KEYCODE1(0); + KEYCODE1(A); + KEYCODE1(B); + KEYCODE1(C); + KEYCODE1(D); + KEYCODE1(E); + KEYCODE1(F); + KEYCODE1(G); + KEYCODE1(H); + KEYCODE1(I); + KEYCODE1(J); + KEYCODE1(K); + KEYCODE1(L); + KEYCODE1(M); + KEYCODE1(N); + KEYCODE1(O); + KEYCODE1(P); + KEYCODE1(Q); + KEYCODE1(R); + KEYCODE1(S); + KEYCODE1(T); + KEYCODE1(U); + KEYCODE1(V); + KEYCODE1(W); + KEYCODE1(X); + KEYCODE1(Y); + KEYCODE1(Z); + KEYCODE1(COMMA); + KEYCODE2(PERIOD, DOT); + KEYCODE2(ALT_LEFT, LEFTALT); + KEYCODE2(ALT_RIGHT, RIGHTALT); + KEYCODE2(SHIFT_LEFT, LEFTSHIFT); + KEYCODE2(SHIFT_RIGHT, RIGHTSHIFT); + KEYCODE1(TAB); + KEYCODE1(SPACE); + KEYCODE2(EXPLORER, WWW); + KEYCODE2(ENVELOPE, MAIL); + KEYCODE1(ENTER); + KEYCODE2(DEL, BACKSPACE); + KEYCODE1(GRAVE); + KEYCODE1(MINUS); + KEYCODE2(EQUALS, EQUAL); + KEYCODE2(LEFT_BRACKET, LEFTBRACE); + KEYCODE2(RIGHT_BRACKET, RIGHTBRACE); + KEYCODE1(BACKSLASH); + KEYCODE1(SEMICOLON); + KEYCODE1(APOSTROPHE); + KEYCODE1(SLASH); + KEYCODE2shift(AT, 2); + KEYCODE2shift(POUND, 3); + KEYCODE2shift(STAR, 8); + KEYCODE2shift(PLUS, EQUAL); + KEYCODE1(MENU); + KEYCODE1(SEARCH); + KEYCODE2(MEDIA_PLAY_PAUSE, PLAYPAUSE); + KEYCODE2(MEDIA_PLAY, PLAY); + KEYCODE2(MEDIA_STOP, STOP_RECORD); + KEYCODE2(MEDIA_NEXT, NEXTSONG); + KEYCODE2(MEDIA_PREVIOUS, PREVIOUSSONG); + KEYCODE2(MEDIA_REWIND, REWIND); + KEYCODE2(MEDIA_FAST_FORWARD, FASTFORWARD); + KEYCODE2(MEDIA_CLOSE, CLOSECD); + KEYCODE2(MEDIA_EJECT, EJECTCD); + KEYCODE2(MEDIA_RECORD, RECORD); + KEYCODE2(MUTE, MICMUTE); + KEYCODE2(PAGE_UP, PAGEUP); + KEYCODE2(PAGE_DOWN, PAGEDOWN); + KEYCODE2(ESCAPE, ESC); + KEYCODE2(FORWARD_DEL, DELETE); + KEYCODE2(CTRL_LEFT, LEFTCTRL); + KEYCODE2(CTRL_RIGHT, RIGHTCTRL); + KEYCODE2(CAPS_LOCK, CAPSLOCK); + KEYCODE2(SCROLL_LOCK, SCROLLLOCK); + KEYCODE2(NUM_LOCK, NUMLOCK); + KEYCODE2(META_LEFT, LEFTMETA); + KEYCODE2(META_RIGHT, RIGHTMETA); + KEYCODE1(SYSRQ); // Print screen key + KEYCODE1(BREAK); // Pause key + KEYCODE2(MOVE_HOME, HOME); + KEYCODE2(MOVE_END, END); + KEYCODE1(INSERT); + KEYCODE1(FORWARD); + KEYCODE1(BACK); + KEYCODE1(F1); + KEYCODE1(F2); + KEYCODE1(F3); + KEYCODE1(F4); + KEYCODE1(F5); + KEYCODE1(F6); + KEYCODE1(F7); + KEYCODE1(F8); + KEYCODE1(F9); + KEYCODE1(F10); + KEYCODE1(F11); + KEYCODE1(F12); + KEYCODE2(NUMPAD_0, KP0); + KEYCODE2(NUMPAD_1, KP1); + KEYCODE2(NUMPAD_2, KP2); + KEYCODE2(NUMPAD_3, KP3); + KEYCODE2(NUMPAD_4, KP4); + KEYCODE2(NUMPAD_5, KP5); + KEYCODE2(NUMPAD_6, KP6); + KEYCODE2(NUMPAD_7, KP7); + KEYCODE2(NUMPAD_8, KP8); + KEYCODE2(NUMPAD_9, KP9); + KEYCODE2(NUMPAD_DIVIDE, KPSLASH); + KEYCODE2(NUMPAD_MULTIPLY, KPASTERISK); + KEYCODE2(NUMPAD_SUBTRACT, KPMINUS); + KEYCODE2(NUMPAD_ADD, KPPLUS); + KEYCODE2(NUMPAD_DOT, KPDOT); + KEYCODE2(NUMPAD_COMMA, KPCOMMA); + KEYCODE2(NUMPAD_ENTER, KPENTER); + KEYCODE2(NUMPAD_EQUALS, KPEQUAL); + KEYCODE2(NUMPAD_LEFT_PAREN, KPLEFTPAREN); + KEYCODE2(NUMPAD_RIGHT_PAREN, KPRIGHTPAREN); + KEYCODE1(POWER); + KEYCODE1(CAMERA); + KEYCODE2(VOLUME_MUTE, MUTE); + KEYCODE2(VOLUME_UP, VOLUMEUP); + KEYCODE2(VOLUME_DOWN, VOLUMEDOWN); + KEYCODE1(INFO); + KEYCODE2(CHANNEL_UP, CHANNELUP); + KEYCODE2(CHANNEL_DOWN, CHANNELDOWN); + KEYCODE2(ZOOM_IN, ZOOMIN); + KEYCODE2(ZOOM_OUT, ZOOMOUT); + KEYCODE1(TV); + KEYCODE2(BOOKMARK, BOOKMARKS); + KEYCODE2(PROG_RED, RED); + KEYCODE2(PROG_GREEN, GREEN); + KEYCODE2(PROG_YELLOW, YELLOW); + KEYCODE2(PROG_BLUE, BLUE); + KEYCODE2(CONTACTS, ADDRESSBOOK); + KEYCODE1(CALENDAR); + KEYCODE2(MUSIC, PLAYER); + KEYCODE2(CALCULATOR, CALC); + KEYCODE2(BRIGHTNESS_DOWN, BRIGHTNESSDOWN); + KEYCODE2(BRIGHTNESS_UP, BRIGHTNESSUP); + default: return KEY_RESERVED; + } + return KEY_RESERVED; +} +#undef KEYCODE1 +#undef KEYCODE2 + +#define K(c1, c2) case EVDEV_##c1: return KEY_##c2 +int keyCode2eventCode(int kc) { + int keyCode = kc - KEYCODE_MIN; + switch(keyCode) { + K(TLDE, GRAVE); + + K(AE01, 1); + K(AE02, 2); + K(AE03, 3); + K(AE04, 4); + K(AE05, 5); + K(AE06, 6); + K(AE07, 7); + K(AE08, 8); + K(AE09, 9); + K(AE10, 0); + K(AE11, MINUS); + K(AE12, EQUAL); + + K(AD01, Q); + K(AD02, W); + K(AD03, E); + K(AD04, R); + K(AD05, T); + K(AD06, Y); + K(AD07, U); + K(AD08, I); + K(AD09, O); + K(AD10, P); + K(AD11, LEFTBRACE); + K(AD12, RIGHTBRACE); + + K(AC01, A); + K(AC02, S); + K(AC03, D); + K(AC04, F); + K(AC05, G); + K(AC06, H); + K(AC07, J); + K(AC08, K); + K(AC09, L); + K(AC10, SEMICOLON); + K(AC11, APOSTROPHE); + + K(AB01, Z); + K(AB02, X); + K(AB03, C); + K(AB04, V); + K(AB05, B); + K(AB06, N); + K(AB07, M); + K(AB08, COMMA); + K(AB09, DOT); + K(AB10, SLASH); + default: return 0; + } +} + +void get_character_data(char** layout, int *shift, int *eventCode, char *ch) { + int i, j; + for (i=0; lorie_keymaps[i]; i++) { + for (j=0; j<(KEYCODE_MAX-KEYCODE_MIN); j++) { + if (!strcmp(ch, lorie_keymaps[i]->keysyms[j].normal)) { + *layout = lorie_keymaps[i]->name; + *shift = 0; + *eventCode = keyCode2eventCode(j+KEYCODE_MIN); + } + if (!strcmp(ch, lorie_keymaps[i]->keysyms[j].shift)) { + *layout = lorie_keymaps[i]->name; + *shift = 1; + *eventCode = keyCode2eventCode(j+KEYCODE_MIN); + } + } + } +} + +#pragma clang diagnostic pop diff --git a/app/src/main/jni/lorie/locale/evdev-keycodes.h b/app/src/main/jni/lorie/locale/evdev-keycodes.h new file mode 100644 index 0000000..6fe56c1 --- /dev/null +++ b/app/src/main/jni/lorie/locale/evdev-keycodes.h @@ -0,0 +1,296 @@ +#pragma clang diagnostic push +#pragma ide diagnostic ignored "OCUnusedMacroInspection" +#ifndef __EVDEV_KEYCODES_H__ +#define EVDEV___EVDEV_KEYCODES_H__ + +// Added for pc105 compatibility +#define EVDEV_LSGT 94 + +#define EVDEV_TLDE 49 +#define EVDEV_AE01 10 +#define EVDEV_AE02 11 +#define EVDEV_AE03 12 +#define EVDEV_AE04 13 +#define EVDEV_AE05 14 +#define EVDEV_AE06 15 +#define EVDEV_AE07 16 +#define EVDEV_AE08 17 +#define EVDEV_AE09 18 +#define EVDEV_AE10 19 +#define EVDEV_AE11 20 +#define EVDEV_AE12 21 +#define EVDEV_BKSP 22 + +#define EVDEV_TAB 23 +#define EVDEV_AD01 24 +#define EVDEV_AD02 25 +#define EVDEV_AD03 26 +#define EVDEV_AD04 27 +#define EVDEV_AD05 28 +#define EVDEV_AD06 29 +#define EVDEV_AD07 30 +#define EVDEV_AD08 31 +#define EVDEV_AD09 32 +#define EVDEV_AD10 33 +#define EVDEV_AD11 34 +#define EVDEV_AD12 35 +#define EVDEV_BKSL 51 +#define EVDEV_AC12 BKSL +#define EVDEV_RTRN 36 + +#define EVDEV_CAPS 66 +#define EVDEV_AC01 38 +#define EVDEV_AC02 39 +#define EVDEV_AC03 40 +#define EVDEV_AC04 41 +#define EVDEV_AC05 42 +#define EVDEV_AC06 43 +#define EVDEV_AC07 44 +#define EVDEV_AC08 45 +#define EVDEV_AC09 46 +#define EVDEV_AC10 47 +#define EVDEV_AC11 48 + +#define EVDEV_LFSH 50 +#define EVDEV_AB01 52 +#define EVDEV_AB02 53 +#define EVDEV_AB03 54 +#define EVDEV_AB04 55 +#define EVDEV_AB05 56 +#define EVDEV_AB06 57 +#define EVDEV_AB07 58 +#define EVDEV_AB08 59 +#define EVDEV_AB09 60 +#define EVDEV_AB10 61 +#define EVDEV_RTSH 62 + +#define EVDEV_LALT 64 +#define EVDEV_LCTL 37 +#define EVDEV_SPCE 65 +#define EVDEV_RCTL 105 +#define EVDEV_RALT 108 +// Microsoft keyboard extra keys +#define EVDEV_LWIN 133 +#define EVDEV_RWIN 134 +#define EVDEV_COMP 135 +#define EVDEV_MENU COMP + +#define EVDEV_ESC 9 +#define EVDEV_FK01 67 +#define EVDEV_FK02 68 +#define EVDEV_FK03 69 +#define EVDEV_FK04 70 +#define EVDEV_FK05 71 +#define EVDEV_FK06 72 +#define EVDEV_FK07 73 +#define EVDEV_FK08 74 +#define EVDEV_FK09 75 +#define EVDEV_FK10 76 +#define EVDEV_FK11 95 +#define EVDEV_FK12 96 + +#define EVDEV_PRSC 107 +//#define EVDEV_SYRQ 107 +#define EVDEV_SCLK 78 +#define EVDEV_PAUS 127 +//#define EVDEV_BRK 419 + +#define EVDEV_INS 118 +#define EVDEV_HOME 110 +#define EVDEV_PGUP 112 +#define EVDEV_DELE 119 +#define EVDEV_END 115 +#define EVDEV_PGDN 117 + +#define EVDEV_UP 111 +#define EVDEV_LEFT 113 +#define EVDEV_DOWN 116 +#define EVDEV_RGHT 114 + +#define EVDEV_NMLK 77 +#define EVDEV_KPDV 106 +#define EVDEV_KPMU 63 +#define EVDEV_KPSU 82 + +#define EVDEV_KP7 79 +#define EVDEV_KP8 80 +#define EVDEV_KP9 81 +#define EVDEV_KPAD 86 + +#define EVDEV_KP4 83 +#define EVDEV_KP5 84 +#define EVDEV_KP6 85 + +#define EVDEV_KP1 87 +#define EVDEV_KP2 88 +#define EVDEV_KP3 89 +#define EVDEV_KPEN 104 + +#define EVDEV_KP0 90 +#define EVDEV_KPDL 91 +#define EVDEV_KPEQ 125 + +#define EVDEV_FK13 191 +#define EVDEV_FK14 192 +#define EVDEV_FK15 193 +#define EVDEV_FK16 194 +#define EVDEV_FK17 195 +#define EVDEV_FK18 196 +#define EVDEV_FK19 197 +#define EVDEV_FK20 198 +#define EVDEV_FK21 199 +#define EVDEV_FK22 200 +#define EVDEV_FK23 201 +#define EVDEV_FK24 202 + +// Keys that are generated on Japanese keyboards + +//#define EVDEV_HZTG 93 // Hankaku/Zenkakau toggle - not actually used +#define EVDEV_HZTG TLDE +#define EVDEV_HKTG 101 // Hiragana/Katakana toggle +#define EVDEV_AB11 97 // backslash/underscore +#define EVDEV_HENK 100 // Henkan +#define EVDEV_MUHE 102 // Muhenkan +#define EVDEV_AE13 132 // Yen +#define EVDEV_KATA 98 // Katakana +#define EVDEV_HIRA 99 // Hiragana +#define EVDEV_JPCM 103 // KPJPComma +// #define EVDEV_RO 97 // Romaji + +// Keys that are generated on Korean keyboards + +#define EVDEV_HNGL 130 // Hangul Latin toggle +#define EVDEV_HJCV 131 // Hangul to Hanja conversion + + // Solaris compatibility + +#define EVDEV_LMTA LWIN +#define EVDEV_RMTA RWIN +#define EVDEV_MUTE 121 +#define EVDEV_VOL_MINUS 122 +#define EVDEV_VOL_PLUS 123 +#define EVDEV_POWR 124 +#define EVDEV_STOP 136 +#define EVDEV_AGAI 137 +#define EVDEV_PROP 138 +#define EVDEV_UNDO 139 +#define EVDEV_FRNT 140 +#define EVDEV_COPY 141 +#define EVDEV_OPEN 142 +#define EVDEV_PAST 143 +#define EVDEV_FIND 144 +#define EVDEV_CUT 145 +#define EVDEV_HELP 146 + +// Extended keys that may be generated on "Internet" keyboards. +// evdev has standardize names for these. + +#define EVDEV_LNFD 109 // #define EVDEV_KEY_LINEFEED 101 +#define EVDEV_I120 120 // #define EVDEV_KEY_MACRO 112 +#define EVDEV_I126 126 // #define EVDEV_KEY_KPPLUSMINUS 118 +#define EVDEV_I128 128 // #define EVDEV_KEY_SCALE 120 +#define EVDEV_I129 129 // #define EVDEV_KEY_KPCOMMA 121 +#define EVDEV_I147 147 // #define EVDEV_KEY_MENU 139 +#define EVDEV_I148 148 // #define EVDEV_KEY_CALC 140 +#define EVDEV_I149 149 // #define EVDEV_KEY_SETUP 141 +#define EVDEV_I150 150 // #define EVDEV_KEY_SLEEP 142 +#define EVDEV_I151 151 // #define EVDEV_KEY_WAKEUP 143 +#define EVDEV_I152 152 // #define EVDEV_KEY_FILE 144 +#define EVDEV_I153 153 // #define EVDEV_KEY_SENDFILE 145 +#define EVDEV_I154 154 // #define EVDEV_KEY_DELETEFILE 146 +#define EVDEV_I155 155 // #define EVDEV_KEY_XFER 147 +#define EVDEV_I156 156 // #define EVDEV_KEY_PROG1 148 +#define EVDEV_I157 157 // #define EVDEV_KEY_PROG2 149 +#define EVDEV_I158 158 // #define EVDEV_KEY_WWW 150 +#define EVDEV_I159 159 // #define EVDEV_KEY_MSDOS 151 +#define EVDEV_I160 160 // #define EVDEV_KEY_COFFEE 152 +#define EVDEV_I161 161 // #define EVDEV_KEY_DIRECTION 153 +#define EVDEV_I162 162 // #define EVDEV_KEY_CYCLEWINDOWS 154 +#define EVDEV_I163 163 // #define EVDEV_KEY_MAIL 155 +#define EVDEV_I164 164 // #define EVDEV_KEY_BOOKMARKS 156 +#define EVDEV_I165 165 // #define EVDEV_KEY_COMPUTER 157 +#define EVDEV_I166 166 // #define EVDEV_KEY_BACK 158 +#define EVDEV_I167 167 // #define EVDEV_KEY_FORWARD 159 +#define EVDEV_I168 168 // #define EVDEV_KEY_CLOSECD 160 +#define EVDEV_I169 169 // #define EVDEV_KEY_EJECTCD 161 +#define EVDEV_I170 170 // #define EVDEV_KEY_EJECTCLOSECD 162 +#define EVDEV_I171 171 // #define EVDEV_KEY_NEXTSONG 163 +#define EVDEV_I172 172 // #define EVDEV_KEY_PLAYPAUSE 164 +#define EVDEV_I173 173 // #define EVDEV_KEY_PREVIOUSSONG 165 +#define EVDEV_I174 174 // #define EVDEV_KEY_STOPCD 166 +#define EVDEV_I175 175 // #define EVDEV_KEY_RECORD 167 +#define EVDEV_I176 176 // #define EVDEV_KEY_REWIND 168 +#define EVDEV_I177 177 // #define EVDEV_KEY_PHONE 169 +#define EVDEV_I178 178 // #define EVDEV_KEY_ISO 170 +#define EVDEV_I179 179 // #define EVDEV_KEY_CONFIG 171 +#define EVDEV_I180 180 // #define EVDEV_KEY_HOMEPAGE 172 +#define EVDEV_I181 181 // #define EVDEV_KEY_REFRESH 173 +#define EVDEV_I182 182 // #define EVDEV_KEY_EXIT 174 +#define EVDEV_I183 183 // #define EVDEV_KEY_MOVE 175 +#define EVDEV_I184 184 // #define EVDEV_KEY_EDIT 176 +#define EVDEV_I185 185 // #define EVDEV_KEY_SCROLLUP 177 +#define EVDEV_I186 186 // #define EVDEV_KEY_SCROLLDOWN 178 +#define EVDEV_I187 187 // #define EVDEV_KEY_KPLEFTPAREN 179 +#define EVDEV_I188 188 // #define EVDEV_KEY_KPRIGHTPAREN 180 +#define EVDEV_I189 189 // #define EVDEV_KEY_NEW 181 +#define EVDEV_I190 190 // #define EVDEV_KEY_REDO 182 +#define EVDEV_I208 208 // #define EVDEV_KEY_PLAYCD 200 +#define EVDEV_I209 209 // #define EVDEV_KEY_PAUSECD 201 +#define EVDEV_I210 210 // #define EVDEV_KEY_PROG3 202 +#define EVDEV_I211 211 // #define EVDEV_KEY_PROG4 203 conflicts with AB11 +#define EVDEV_I212 212 // #define EVDEV_KEY_DASHBOARD 204 +#define EVDEV_I213 213 // #define EVDEV_KEY_SUSPEND 205 +#define EVDEV_I214 214 // #define EVDEV_KEY_CLOSE 206 +#define EVDEV_I215 215 // #define EVDEV_KEY_PLAY 207 +#define EVDEV_I216 216 // #define EVDEV_KEY_FASTFORWARD 208 +#define EVDEV_I217 217 // #define EVDEV_KEY_BASSBOOST 209 +#define EVDEV_I218 218 // #define EVDEV_KEY_PRINT 210 +#define EVDEV_I219 219 // #define EVDEV_KEY_HP 211 +#define EVDEV_I220 220 // #define EVDEV_KEY_CAMERA 212 +#define EVDEV_I221 221 // #define EVDEV_KEY_SOUND 213 +#define EVDEV_I222 222 // #define EVDEV_KEY_QUESTION 214 +#define EVDEV_I223 223 // #define EVDEV_KEY_EMAIL 215 +#define EVDEV_I224 224 // #define EVDEV_KEY_CHAT 216 +#define EVDEV_I225 225 // #define EVDEV_KEY_SEARCH 217 +#define EVDEV_I226 226 // #define EVDEV_KEY_CONNECT 218 +#define EVDEV_I227 227 // #define EVDEV_KEY_FINANCE 219 +#define EVDEV_I228 228 // #define EVDEV_KEY_SPORT 220 +#define EVDEV_I229 229 // #define EVDEV_KEY_SHOP 221 +#define EVDEV_I230 230 // #define EVDEV_KEY_ALTERASE 222 +#define EVDEV_I231 231 // #define EVDEV_KEY_CANCEL 223 +#define EVDEV_I232 232 // #define EVDEV_KEY_BRIGHTNESSDOWN 224 +#define EVDEV_I233 233 // #define EVDEV_KEY_BRIGHTNESSUP 225 +#define EVDEV_I234 234 // #define EVDEV_KEY_MEDIA 226 +#define EVDEV_I235 235 // #define EVDEV_KEY_SWITCHVIDEOMODE 227 +#define EVDEV_I236 236 // #define EVDEV_KEY_KBDILLUMTOGGLE 228 +#define EVDEV_I237 237 // #define EVDEV_KEY_KBDILLUMDOWN 229 +#define EVDEV_I238 238 // #define EVDEV_KEY_KBDILLUMUP 230 +#define EVDEV_I239 239 // #define EVDEV_KEY_SEND 231 +#define EVDEV_I240 240 // #define EVDEV_KEY_REPLY 232 +#define EVDEV_I241 241 // #define EVDEV_KEY_FORWARDMAIL 233 +#define EVDEV_I242 242 // #define EVDEV_KEY_SAVE 234 +#define EVDEV_I243 243 // #define EVDEV_KEY_DOCUMENTS 235 +#define EVDEV_I244 244 // #define EVDEV_KEY_BATTERY 236 +#define EVDEV_I245 245 // #define EVDEV_KEY_BLUETOOTH 237 +#define EVDEV_I246 246 // #define EVDEV_KEY_WLAN 238 +#define EVDEV_I247 247 // #define EVDEV_KEY_UWB 239 +#define EVDEV_I248 248 // #define EVDEV_KEY_UNKNOWN 240 +#define EVDEV_I249 249 // #define EVDEV_KEY_VIDEO_NEXT 241 +#define EVDEV_I250 250 // #define EVDEV_KEY_VIDEO_PREV 242 +#define EVDEV_I251 251 // #define EVDEV_KEY_BRIGHTNESS_CYCLE 243 +#define EVDEV_I252 252 // #define EVDEV_KEY_BRIGHTNESS_ZERO 244 +#define EVDEV_I253 253 // #define EVDEV_KEY_DISPLAY_OFF 245 +#define EVDEV_I254 254 // #define EVDEV_KEY_WWAN 246 +#define EVDEV_I255 255 // #define EVDEV_KEY_RFKILL 247 + +// Fake keycodes for virtual keys +#define EVDEV_LVL3 92 +#define EVDEV_MDSW 203 +#define EVDEV_ALT 204 +#define EVDEV_META 205 +#define EVDEV_SUPR 206 +#define EVDEV_HYPR 207 + +#endif // __EVDEV_KEYCODES_H__ + +#pragma clang diagnostic pop \ No newline at end of file diff --git a/app/src/main/jni/lorie/locale/generator b/app/src/main/jni/lorie/locale/generator new file mode 100755 index 0000000000000000000000000000000000000000..7e29b5b02509d6814911a717124fff3f0b872114 GIT binary patch literal 17864 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 literal 0 HcmV?d00001 diff --git a/app/src/main/jni/lorie/locale/generator.c b/app/src/main/jni/lorie/locale/generator.c new file mode 100644 index 0000000..aac4a68 --- /dev/null +++ b/app/src/main/jni/lorie/locale/generator.c @@ -0,0 +1,230 @@ +// gcc -o generator generator.c -lxkbcommon + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../log.h" + +#define KEYCODE_MIN 8 +#define KEYCODE_MAX 255 +#define EVDEV_OFFSET 8 +#define SYM_LENGTH 7 + +struct keysym { + char normal[SYM_LENGTH]; + char shift[SYM_LENGTH]; +}; + +#define KEYMAPS_LENGTH 1 +struct keymap { + char *name; + struct keysym keysyms[KEYCODE_MAX - KEYCODE_MIN]; +} keymaps[KEYMAPS_LENGTH] = {0}; + +void handler(int sig) { + void *array[10]; + size_t size; + + // get void*'s for all entries on the stack + size = backtrace(array, 10); + + // print out all the frames to stderr + fprintf(stderr, "Error: signal %d:\n", sig); + backtrace_symbols_fd(array, size, STDERR_FILENO); + exit(1); +} + + +struct iterator_args { + struct keymap *keymap; + uint8_t symcase; +}; +void iterate_normal(struct xkb_keymap *xkb_keymap, xkb_keycode_t key, void *data) { + struct iterator_args *ita = data; + if (!ita || !ita->keymap) return; + + struct keymap *keymap = ita->keymap; + struct xkb_state *xkb_state = NULL; + char *buf = NULL; + xkb_keysym_t ks = 0; + + xkb_state = xkb_state_new(xkb_keymap); + if (xkb_state == NULL) { + LOGE("failed to create xkb_state"); + }; + + if (ita->symcase) { + xkb_state_update_key(xkb_state, KEY_LEFTSHIFT + EVDEV_OFFSET, XKB_KEY_DOWN); + buf = keymap->keysyms[key].shift; + } else { + buf = keymap->keysyms[key].normal; + } + + ks = xkb_state_key_get_one_sym(xkb_state, key); + xkb_keysym_to_utf8(ks, buf, SYM_LENGTH); + + xkb_state_unref(xkb_state); +} + +struct keymap* parse_keymap(struct xkb_context *ctx, char *name) { + if (!ctx || !name) return NULL; + + struct xkb_rule_names xkb_names = {0}; + struct xkb_keymap *xkb_keymap = NULL; + struct iterator_args ita = {0}; + struct keymap *result = NULL; + + xkb_names.rules = strdup("evdev"); + xkb_names.model = strdup("pc105"); + xkb_names.layout = strdup(name); + + xkb_keymap = xkb_keymap_new_from_names(ctx, &xkb_names, 0); + if (xkb_keymap == NULL) { + LOGE("failed to compile global XKB keymap\n"); + LOGE(" tried rules %s, model %s, layout %s, variant %s, " + "options %s\n", + xkb_names.rules, xkb_names.model, + xkb_names.layout, xkb_names.variant, + xkb_names.options); + goto end; + } + + result = calloc(1, sizeof(struct keymap)); + if (!result) { + LOGE("failed to allocate struct keymap"); + goto end; + } + + result->name = strdup(name); + + ita.keymap = result; + ita.symcase = 0; + xkb_keymap_key_for_each(xkb_keymap, iterate_normal, &ita); + + ita.symcase = 1; + xkb_keymap_key_for_each(xkb_keymap, iterate_normal, &ita); + +end: + if (xkb_keymap) xkb_keymap_unref(xkb_keymap); + if (xkb_names.rules) free((void*)xkb_names.rules); + if (xkb_names.model) free((void*)xkb_names.model); + if (xkb_names.layout) free((void*)xkb_names.layout); + return result; +} + +void print_header(void) { + printf( "#include \n" + "#define SYM_LENGTH %d\n" + "#define KEYCODE_MIN 8\n" + "#define KEYCODE_MAX 255\n" + "#define NOSYM {{0}, {0}}\n" + "struct lorie_keymap {\n" + "\tchar *name;\n" + "\tstruct keysym {\n" + "\t\tchar normal[SYM_LENGTH];\n" + "\t\tchar shift[SYM_LENGTH];\n" + "\t} keysyms[KEYCODE_MAX - KEYCODE_MIN];\n" + "};\n\n", + SYM_LENGTH + ); +} + +void print_sym(char *sym) { + int i; + if (strlen(sym)) { + printf("{"); + for(i=0; i 0 && i < SYM_LENGTH) printf(", "); + printf("%d", (inormal) && strlen(keysym->shift)) { + printf("\t\t{"); + print_sym(keysym->normal); + printf(", "); + print_sym(keysym->shift); + printf("}"); + } else printf("\t\tNOSYM"); +} + +int ks_displayable(int keycode, char *sym) { + if (strlen(sym) == 0) return 0; + if (strlen(sym) == 1) { + switch(sym[0]) { + case 8: + case 10: + case 13: + case 27: + case 30: + case 127: + return 0; + } + } + return 1; +} + +void keymap_print(struct keymap* keymap) { + if (!keymap) return; + int i; + + printf( "struct lorie_keymap lorie_keymap_%s = {\n" + "\t.name = \"%s\",\n" + "\t.keysyms = {\n", + keymap->name, keymap->name + ); + for (i=0; i<(KEYCODE_MAX-KEYCODE_MIN); i++) { + print_keysym(&keymap->keysyms[i]); + if (i!=(KEYCODE_MAX-KEYCODE_MIN-1)) printf(","); + + printf(" // keyCode: %d;", i + KEYCODE_MIN); + if (ks_displayable(i, keymap->keysyms[i].normal)) printf(" normal: \"%s\";", keymap->keysyms[i].normal); + if (ks_displayable(i, keymap->keysyms[i].shift)) printf(" shift: \"%s\";", keymap->keysyms[i].shift); + printf("\n"); + } + printf("\t}\n};\n"); +} + +int main(void) { + signal(SIGSEGV, handler); + int i; + struct xkb_context *xkb_context = NULL; + struct xkb_rule_names xkb_names = {0}; + struct xkb_keymap *xkb_keymap = NULL; + struct keymap* map = NULL; + char *keymaps[] = { "ru", "il", NULL }; + + if (xkb_context == NULL) { + xkb_context = xkb_context_new(0); + if (xkb_context == NULL) { + LOGE("failed to create XKB context\n"); + return 1; + } + } + print_header(); + for (i=0; keymaps[i]; i++) { + map = parse_keymap(xkb_context, keymaps[i]); + if (!map) { + LOGE("failed to parse keymap \"us\""); + return 1; + } + keymap_print(map); + } + + printf("\nstruct lorie_keymap *lorie_keymaps[] = {"); + for (i=0; keymaps[i]; i++) { + printf("&lorie_keymap_%s, ", keymaps[i]); + } + printf("NULL};\n"); +} diff --git a/app/src/main/jni/lorie/locale/input-event-codes.h b/app/src/main/jni/lorie/locale/input-event-codes.h new file mode 100644 index 0000000..a9902a7 --- /dev/null +++ b/app/src/main/jni/lorie/locale/input-event-codes.h @@ -0,0 +1,861 @@ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +/* + * Input event codes + * + * *** IMPORTANT *** + * This file is not only included from C-code but also from devicetree source + * files. As such this file MUST only contain comments and defines. + * + * Copyright (c) 1999-2002 Vojtech Pavlik + * Copyright (c) 2015 Hans de Goede + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + */ +#ifndef _INPUT_EVENT_CODES_H +#define _INPUT_EVENT_CODES_H + +/* + * Device properties and quirks + */ + +#define INPUT_PROP_POINTER 0x00 /* needs a pointer */ +#define INPUT_PROP_DIRECT 0x01 /* direct input devices */ +#define INPUT_PROP_BUTTONPAD 0x02 /* has button(s) under pad */ +#define INPUT_PROP_SEMI_MT 0x03 /* touch rectangle only */ +#define INPUT_PROP_TOPBUTTONPAD 0x04 /* softbuttons at top of pad */ +#define INPUT_PROP_POINTING_STICK 0x05 /* is a pointing stick */ +#define INPUT_PROP_ACCELEROMETER 0x06 /* has accelerometer */ + +#define INPUT_PROP_MAX 0x1f +#define INPUT_PROP_CNT (INPUT_PROP_MAX + 1) + +/* + * Event types + */ + +#define EV_SYN 0x00 +#define EV_KEY 0x01 +#define EV_REL 0x02 +#define EV_ABS 0x03 +#define EV_MSC 0x04 +#define EV_SW 0x05 +#define EV_LED 0x11 +#define EV_SND 0x12 +#define EV_REP 0x14 +#define EV_FF 0x15 +#define EV_PWR 0x16 +#define EV_FF_STATUS 0x17 +#define EV_MAX 0x1f +#define EV_CNT (EV_MAX+1) + +/* + * Synchronization events. + */ + +#define SYN_REPORT 0 +#define SYN_CONFIG 1 +#define SYN_MT_REPORT 2 +#define SYN_DROPPED 3 +#define SYN_MAX 0xf +#define SYN_CNT (SYN_MAX+1) + +/* + * Keys and buttons + * + * Most of the keys/buttons are modeled after USB HUT 1.12 + * (see http://www.usb.org/developers/hidpage). + * Abbreviations in the comments: + * AC - Application Control + * AL - Application Launch Button + * SC - System Control + */ + +#define KEY_RESERVED 0 +#define KEY_ESC 1 +#define KEY_1 2 +#define KEY_2 3 +#define KEY_3 4 +#define KEY_4 5 +#define KEY_5 6 +#define KEY_6 7 +#define KEY_7 8 +#define KEY_8 9 +#define KEY_9 10 +#define KEY_0 11 +#define KEY_MINUS 12 +#define KEY_EQUAL 13 +#define KEY_BACKSPACE 14 +#define KEY_TAB 15 +#define KEY_Q 16 +#define KEY_W 17 +#define KEY_E 18 +#define KEY_R 19 +#define KEY_T 20 +#define KEY_Y 21 +#define KEY_U 22 +#define KEY_I 23 +#define KEY_O 24 +#define KEY_P 25 +#define KEY_LEFTBRACE 26 +#define KEY_RIGHTBRACE 27 +#define KEY_ENTER 28 +#define KEY_LEFTCTRL 29 +#define KEY_A 30 +#define KEY_S 31 +#define KEY_D 32 +#define KEY_F 33 +#define KEY_G 34 +#define KEY_H 35 +#define KEY_J 36 +#define KEY_K 37 +#define KEY_L 38 +#define KEY_SEMICOLON 39 +#define KEY_APOSTROPHE 40 +#define KEY_GRAVE 41 +#define KEY_LEFTSHIFT 42 +#define KEY_BACKSLASH 43 +#define KEY_Z 44 +#define KEY_X 45 +#define KEY_C 46 +#define KEY_V 47 +#define KEY_B 48 +#define KEY_N 49 +#define KEY_M 50 +#define KEY_COMMA 51 +#define KEY_DOT 52 +#define KEY_SLASH 53 +#define KEY_RIGHTSHIFT 54 +#define KEY_KPASTERISK 55 +#define KEY_LEFTALT 56 +#define KEY_SPACE 57 +#define KEY_CAPSLOCK 58 +#define KEY_F1 59 +#define KEY_F2 60 +#define KEY_F3 61 +#define KEY_F4 62 +#define KEY_F5 63 +#define KEY_F6 64 +#define KEY_F7 65 +#define KEY_F8 66 +#define KEY_F9 67 +#define KEY_F10 68 +#define KEY_NUMLOCK 69 +#define KEY_SCROLLLOCK 70 +#define KEY_KP7 71 +#define KEY_KP8 72 +#define KEY_KP9 73 +#define KEY_KPMINUS 74 +#define KEY_KP4 75 +#define KEY_KP5 76 +#define KEY_KP6 77 +#define KEY_KPPLUS 78 +#define KEY_KP1 79 +#define KEY_KP2 80 +#define KEY_KP3 81 +#define KEY_KP0 82 +#define KEY_KPDOT 83 + +#define KEY_ZENKAKUHANKAKU 85 +#define KEY_102ND 86 +#define KEY_F11 87 +#define KEY_F12 88 +#define KEY_RO 89 +#define KEY_KATAKANA 90 +#define KEY_HIRAGANA 91 +#define KEY_HENKAN 92 +#define KEY_KATAKANAHIRAGANA 93 +#define KEY_MUHENKAN 94 +#define KEY_KPJPCOMMA 95 +#define KEY_KPENTER 96 +#define KEY_RIGHTCTRL 97 +#define KEY_KPSLASH 98 +#define KEY_SYSRQ 99 +#define KEY_RIGHTALT 100 +#define KEY_LINEFEED 101 +#define KEY_HOME 102 +#define KEY_UP 103 +#define KEY_PAGEUP 104 +#define KEY_LEFT 105 +#define KEY_RIGHT 106 +#define KEY_END 107 +#define KEY_DOWN 108 +#define KEY_PAGEDOWN 109 +#define KEY_INSERT 110 +#define KEY_DELETE 111 +#define KEY_MACRO 112 +#define KEY_MUTE 113 +#define KEY_VOLUMEDOWN 114 +#define KEY_VOLUMEUP 115 +#define KEY_POWER 116 /* SC System Power Down */ +#define KEY_KPEQUAL 117 +#define KEY_KPPLUSMINUS 118 +#define KEY_PAUSE 119 +#define KEY_SCALE 120 /* AL Compiz Scale (Expose) */ + +#define KEY_KPCOMMA 121 +#define KEY_HANGEUL 122 +#define KEY_HANGUEL KEY_HANGEUL +#define KEY_HANJA 123 +#define KEY_YEN 124 +#define KEY_LEFTMETA 125 +#define KEY_RIGHTMETA 126 +#define KEY_COMPOSE 127 + +#define KEY_STOP 128 /* AC Stop */ +#define KEY_AGAIN 129 +#define KEY_PROPS 130 /* AC Properties */ +#define KEY_UNDO 131 /* AC Undo */ +#define KEY_FRONT 132 +#define KEY_COPY 133 /* AC Copy */ +#define KEY_OPEN 134 /* AC Open */ +#define KEY_PASTE 135 /* AC Paste */ +#define KEY_FIND 136 /* AC Search */ +#define KEY_CUT 137 /* AC Cut */ +#define KEY_HELP 138 /* AL Integrated Help Center */ +#define KEY_MENU 139 /* Menu (show menu) */ +#define KEY_CALC 140 /* AL Calculator */ +#define KEY_SETUP 141 +#define KEY_SLEEP 142 /* SC System Sleep */ +#define KEY_WAKEUP 143 /* System Wake Up */ +#define KEY_FILE 144 /* AL Local Machine Browser */ +#define KEY_SENDFILE 145 +#define KEY_DELETEFILE 146 +#define KEY_XFER 147 +#define KEY_PROG1 148 +#define KEY_PROG2 149 +#define KEY_WWW 150 /* AL Internet Browser */ +#define KEY_MSDOS 151 +#define KEY_COFFEE 152 /* AL Terminal Lock/Screensaver */ +#define KEY_SCREENLOCK KEY_COFFEE +#define KEY_ROTATE_DISPLAY 153 /* Display orientation for e.g. tablets */ +#define KEY_DIRECTION KEY_ROTATE_DISPLAY +#define KEY_CYCLEWINDOWS 154 +#define KEY_MAIL 155 +#define KEY_BOOKMARKS 156 /* AC Bookmarks */ +#define KEY_COMPUTER 157 +#define KEY_BACK 158 /* AC Back */ +#define KEY_FORWARD 159 /* AC Forward */ +#define KEY_CLOSECD 160 +#define KEY_EJECTCD 161 +#define KEY_EJECTCLOSECD 162 +#define KEY_NEXTSONG 163 +#define KEY_PLAYPAUSE 164 +#define KEY_PREVIOUSSONG 165 +#define KEY_STOPCD 166 +#define KEY_RECORD 167 +#define KEY_REWIND 168 +#define KEY_PHONE 169 /* Media Select Telephone */ +#define KEY_ISO 170 +#define KEY_CONFIG 171 /* AL Consumer Control Configuration */ +#define KEY_HOMEPAGE 172 /* AC Home */ +#define KEY_REFRESH 173 /* AC Refresh */ +#define KEY_EXIT 174 /* AC Exit */ +#define KEY_MOVE 175 +#define KEY_EDIT 176 +#define KEY_SCROLLUP 177 +#define KEY_SCROLLDOWN 178 +#define KEY_KPLEFTPAREN 179 +#define KEY_KPRIGHTPAREN 180 +#define KEY_NEW 181 /* AC New */ +#define KEY_REDO 182 /* AC Redo/Repeat */ + +#define KEY_F13 183 +#define KEY_F14 184 +#define KEY_F15 185 +#define KEY_F16 186 +#define KEY_F17 187 +#define KEY_F18 188 +#define KEY_F19 189 +#define KEY_F20 190 +#define KEY_F21 191 +#define KEY_F22 192 +#define KEY_F23 193 +#define KEY_F24 194 + +#define KEY_PLAYCD 200 +#define KEY_PAUSECD 201 +#define KEY_PROG3 202 +#define KEY_PROG4 203 +#define KEY_DASHBOARD 204 /* AL Dashboard */ +#define KEY_SUSPEND 205 +#define KEY_CLOSE 206 /* AC Close */ +#define KEY_PLAY 207 +#define KEY_FASTFORWARD 208 +#define KEY_BASSBOOST 209 +#define KEY_PRINT 210 /* AC Print */ +#define KEY_HP 211 +#define KEY_CAMERA 212 +#define KEY_SOUND 213 +#define KEY_QUESTION 214 +#define KEY_EMAIL 215 +#define KEY_CHAT 216 +#define KEY_SEARCH 217 +#define KEY_CONNECT 218 +#define KEY_FINANCE 219 /* AL Checkbook/Finance */ +#define KEY_SPORT 220 +#define KEY_SHOP 221 +#define KEY_ALTERASE 222 +#define KEY_CANCEL 223 /* AC Cancel */ +#define KEY_BRIGHTNESSDOWN 224 +#define KEY_BRIGHTNESSUP 225 +#define KEY_MEDIA 226 + +#define KEY_SWITCHVIDEOMODE 227 /* Cycle between available video + outputs (Monitor/LCD/TV-out/etc) */ +#define KEY_KBDILLUMTOGGLE 228 +#define KEY_KBDILLUMDOWN 229 +#define KEY_KBDILLUMUP 230 + +#define KEY_SEND 231 /* AC Send */ +#define KEY_REPLY 232 /* AC Reply */ +#define KEY_FORWARDMAIL 233 /* AC Forward Msg */ +#define KEY_SAVE 234 /* AC Save */ +#define KEY_DOCUMENTS 235 + +#define KEY_BATTERY 236 + +#define KEY_BLUETOOTH 237 +#define KEY_WLAN 238 +#define KEY_UWB 239 + +#define KEY_UNKNOWN 240 + +#define KEY_VIDEO_NEXT 241 /* drive next video source */ +#define KEY_VIDEO_PREV 242 /* drive previous video source */ +#define KEY_BRIGHTNESS_CYCLE 243 /* brightness up, after max is min */ +#define KEY_BRIGHTNESS_AUTO 244 /* Set Auto Brightness: manual + brightness control is off, + rely on ambient */ +#define KEY_BRIGHTNESS_ZERO KEY_BRIGHTNESS_AUTO +#define KEY_DISPLAY_OFF 245 /* display device to off state */ + +#define KEY_WWAN 246 /* Wireless WAN (LTE, UMTS, GSM, etc.) */ +#define KEY_WIMAX KEY_WWAN +#define KEY_RFKILL 247 /* Key that controls all radios */ + +#define KEY_MICMUTE 248 /* Mute / unmute the microphone */ + +/* Code 255 is reserved for special needs of AT keyboard driver */ + +#define BTN_MISC 0x100 +#define BTN_0 0x100 +#define BTN_1 0x101 +#define BTN_2 0x102 +#define BTN_3 0x103 +#define BTN_4 0x104 +#define BTN_5 0x105 +#define BTN_6 0x106 +#define BTN_7 0x107 +#define BTN_8 0x108 +#define BTN_9 0x109 + +#define BTN_MOUSE 0x110 +#define BTN_LEFT 0x110 +#define BTN_RIGHT 0x111 +#define BTN_MIDDLE 0x112 +#define BTN_SIDE 0x113 +#define BTN_EXTRA 0x114 +#define BTN_FORWARD 0x115 +#define BTN_BACK 0x116 +#define BTN_TASK 0x117 + +#define BTN_JOYSTICK 0x120 +#define BTN_TRIGGER 0x120 +#define BTN_THUMB 0x121 +#define BTN_THUMB2 0x122 +#define BTN_TOP 0x123 +#define BTN_TOP2 0x124 +#define BTN_PINKIE 0x125 +#define BTN_BASE 0x126 +#define BTN_BASE2 0x127 +#define BTN_BASE3 0x128 +#define BTN_BASE4 0x129 +#define BTN_BASE5 0x12a +#define BTN_BASE6 0x12b +#define BTN_DEAD 0x12f + +#define BTN_GAMEPAD 0x130 +#define BTN_SOUTH 0x130 +#define BTN_A BTN_SOUTH +#define BTN_EAST 0x131 +#define BTN_B BTN_EAST +#define BTN_C 0x132 +#define BTN_NORTH 0x133 +#define BTN_X BTN_NORTH +#define BTN_WEST 0x134 +#define BTN_Y BTN_WEST +#define BTN_Z 0x135 +#define BTN_TL 0x136 +#define BTN_TR 0x137 +#define BTN_TL2 0x138 +#define BTN_TR2 0x139 +#define BTN_SELECT 0x13a +#define BTN_START 0x13b +#define BTN_MODE 0x13c +#define BTN_THUMBL 0x13d +#define BTN_THUMBR 0x13e + +#define BTN_DIGI 0x140 +#define BTN_TOOL_PEN 0x140 +#define BTN_TOOL_RUBBER 0x141 +#define BTN_TOOL_BRUSH 0x142 +#define BTN_TOOL_PENCIL 0x143 +#define BTN_TOOL_AIRBRUSH 0x144 +#define BTN_TOOL_FINGER 0x145 +#define BTN_TOOL_MOUSE 0x146 +#define BTN_TOOL_LENS 0x147 +#define BTN_TOOL_QUINTTAP 0x148 /* Five fingers on trackpad */ +#define BTN_STYLUS3 0x149 +#define BTN_TOUCH 0x14a +#define BTN_STYLUS 0x14b +#define BTN_STYLUS2 0x14c +#define BTN_TOOL_DOUBLETAP 0x14d +#define BTN_TOOL_TRIPLETAP 0x14e +#define BTN_TOOL_QUADTAP 0x14f /* Four fingers on trackpad */ + +#define BTN_WHEEL 0x150 +#define BTN_GEAR_DOWN 0x150 +#define BTN_GEAR_UP 0x151 + +#define KEY_OK 0x160 +#define KEY_SELECT 0x161 +#define KEY_GOTO 0x162 +#define KEY_CLEAR 0x163 +#define KEY_POWER2 0x164 +#define KEY_OPTION 0x165 +#define KEY_INFO 0x166 /* AL OEM Features/Tips/Tutorial */ +#define KEY_TIME 0x167 +#define KEY_VENDOR 0x168 +#define KEY_ARCHIVE 0x169 +#define KEY_PROGRAM 0x16a /* Media Select Program Guide */ +#define KEY_CHANNEL 0x16b +#define KEY_FAVORITES 0x16c +#define KEY_EPG 0x16d +#define KEY_PVR 0x16e /* Media Select Home */ +#define KEY_MHP 0x16f +#define KEY_LANGUAGE 0x170 +#define KEY_TITLE 0x171 +#define KEY_SUBTITLE 0x172 +#define KEY_ANGLE 0x173 +#define KEY_ZOOM 0x174 +#define KEY_MODE 0x175 +#define KEY_KEYBOARD 0x176 +#define KEY_SCREEN 0x177 +#define KEY_PC 0x178 /* Media Select Computer */ +#define KEY_TV 0x179 /* Media Select TV */ +#define KEY_TV2 0x17a /* Media Select Cable */ +#define KEY_VCR 0x17b /* Media Select VCR */ +#define KEY_VCR2 0x17c /* VCR Plus */ +#define KEY_SAT 0x17d /* Media Select Satellite */ +#define KEY_SAT2 0x17e +#define KEY_CD 0x17f /* Media Select CD */ +#define KEY_TAPE 0x180 /* Media Select Tape */ +#define KEY_RADIO 0x181 +#define KEY_TUNER 0x182 /* Media Select Tuner */ +#define KEY_PLAYER 0x183 +#define KEY_TEXT 0x184 +#define KEY_DVD 0x185 /* Media Select DVD */ +#define KEY_AUX 0x186 +#define KEY_MP3 0x187 +#define KEY_AUDIO 0x188 /* AL Audio Browser */ +#define KEY_VIDEO 0x189 /* AL Movie Browser */ +#define KEY_DIRECTORY 0x18a +#define KEY_LIST 0x18b +#define KEY_MEMO 0x18c /* Media Select Messages */ +#define KEY_CALENDAR 0x18d +#define KEY_RED 0x18e +#define KEY_GREEN 0x18f +#define KEY_YELLOW 0x190 +#define KEY_BLUE 0x191 +#define KEY_CHANNELUP 0x192 /* Channel Increment */ +#define KEY_CHANNELDOWN 0x193 /* Channel Decrement */ +#define KEY_FIRST 0x194 +#define KEY_LAST 0x195 /* Recall Last */ +#define KEY_AB 0x196 +#define KEY_NEXT 0x197 +#define KEY_RESTART 0x198 +#define KEY_SLOW 0x199 +#define KEY_SHUFFLE 0x19a +#define KEY_BREAK 0x19b +#define KEY_PREVIOUS 0x19c +#define KEY_DIGITS 0x19d +#define KEY_TEEN 0x19e +#define KEY_TWEN 0x19f +#define KEY_VIDEOPHONE 0x1a0 /* Media Select Video Phone */ +#define KEY_GAMES 0x1a1 /* Media Select Games */ +#define KEY_ZOOMIN 0x1a2 /* AC Zoom In */ +#define KEY_ZOOMOUT 0x1a3 /* AC Zoom Out */ +#define KEY_ZOOMRESET 0x1a4 /* AC Zoom */ +#define KEY_WORDPROCESSOR 0x1a5 /* AL Word Processor */ +#define KEY_EDITOR 0x1a6 /* AL Text Editor */ +#define KEY_SPREADSHEET 0x1a7 /* AL Spreadsheet */ +#define KEY_GRAPHICSEDITOR 0x1a8 /* AL Graphics Editor */ +#define KEY_PRESENTATION 0x1a9 /* AL Presentation App */ +#define KEY_DATABASE 0x1aa /* AL Database App */ +#define KEY_NEWS 0x1ab /* AL Newsreader */ +#define KEY_VOICEMAIL 0x1ac /* AL Voicemail */ +#define KEY_ADDRESSBOOK 0x1ad /* AL Contacts/Address Book */ +#define KEY_MESSENGER 0x1ae /* AL Instant Messaging */ +#define KEY_DISPLAYTOGGLE 0x1af /* Turn display (LCD) on and off */ +#define KEY_BRIGHTNESS_TOGGLE KEY_DISPLAYTOGGLE +#define KEY_SPELLCHECK 0x1b0 /* AL Spell Check */ +#define KEY_LOGOFF 0x1b1 /* AL Logoff */ + +#define KEY_DOLLAR 0x1b2 +#define KEY_EURO 0x1b3 + +#define KEY_FRAMEBACK 0x1b4 /* Consumer - transport controls */ +#define KEY_FRAMEFORWARD 0x1b5 +#define KEY_CONTEXT_MENU 0x1b6 /* GenDesc - system context menu */ +#define KEY_MEDIA_REPEAT 0x1b7 /* Consumer - transport control */ +#define KEY_10CHANNELSUP 0x1b8 /* 10 channels up (10+) */ +#define KEY_10CHANNELSDOWN 0x1b9 /* 10 channels down (10-) */ +#define KEY_IMAGES 0x1ba /* AL Image Browser */ + +#define KEY_DEL_EOL 0x1c0 +#define KEY_DEL_EOS 0x1c1 +#define KEY_INS_LINE 0x1c2 +#define KEY_DEL_LINE 0x1c3 + +#define KEY_FN 0x1d0 +#define KEY_FN_ESC 0x1d1 +#define KEY_FN_F1 0x1d2 +#define KEY_FN_F2 0x1d3 +#define KEY_FN_F3 0x1d4 +#define KEY_FN_F4 0x1d5 +#define KEY_FN_F5 0x1d6 +#define KEY_FN_F6 0x1d7 +#define KEY_FN_F7 0x1d8 +#define KEY_FN_F8 0x1d9 +#define KEY_FN_F9 0x1da +#define KEY_FN_F10 0x1db +#define KEY_FN_F11 0x1dc +#define KEY_FN_F12 0x1dd +#define KEY_FN_1 0x1de +#define KEY_FN_2 0x1df +#define KEY_FN_D 0x1e0 +#define KEY_FN_E 0x1e1 +#define KEY_FN_F 0x1e2 +#define KEY_FN_S 0x1e3 +#define KEY_FN_B 0x1e4 + +#define KEY_BRL_DOT1 0x1f1 +#define KEY_BRL_DOT2 0x1f2 +#define KEY_BRL_DOT3 0x1f3 +#define KEY_BRL_DOT4 0x1f4 +#define KEY_BRL_DOT5 0x1f5 +#define KEY_BRL_DOT6 0x1f6 +#define KEY_BRL_DOT7 0x1f7 +#define KEY_BRL_DOT8 0x1f8 +#define KEY_BRL_DOT9 0x1f9 +#define KEY_BRL_DOT10 0x1fa + +#define KEY_NUMERIC_0 0x200 /* used by phones, remote controls, */ +#define KEY_NUMERIC_1 0x201 /* and other keypads */ +#define KEY_NUMERIC_2 0x202 +#define KEY_NUMERIC_3 0x203 +#define KEY_NUMERIC_4 0x204 +#define KEY_NUMERIC_5 0x205 +#define KEY_NUMERIC_6 0x206 +#define KEY_NUMERIC_7 0x207 +#define KEY_NUMERIC_8 0x208 +#define KEY_NUMERIC_9 0x209 +#define KEY_NUMERIC_STAR 0x20a +#define KEY_NUMERIC_POUND 0x20b +#define KEY_NUMERIC_A 0x20c /* Phone key A - HUT Telephony 0xb9 */ +#define KEY_NUMERIC_B 0x20d +#define KEY_NUMERIC_C 0x20e +#define KEY_NUMERIC_D 0x20f + +#define KEY_CAMERA_FOCUS 0x210 +#define KEY_WPS_BUTTON 0x211 /* WiFi Protected Setup key */ + +#define KEY_TOUCHPAD_TOGGLE 0x212 /* Request switch touchpad on or off */ +#define KEY_TOUCHPAD_ON 0x213 +#define KEY_TOUCHPAD_OFF 0x214 + +#define KEY_CAMERA_ZOOMIN 0x215 +#define KEY_CAMERA_ZOOMOUT 0x216 +#define KEY_CAMERA_UP 0x217 +#define KEY_CAMERA_DOWN 0x218 +#define KEY_CAMERA_LEFT 0x219 +#define KEY_CAMERA_RIGHT 0x21a + +#define KEY_ATTENDANT_ON 0x21b +#define KEY_ATTENDANT_OFF 0x21c +#define KEY_ATTENDANT_TOGGLE 0x21d /* Attendant call on or off */ +#define KEY_LIGHTS_TOGGLE 0x21e /* Reading light on or off */ + +#define BTN_DPAD_UP 0x220 +#define BTN_DPAD_DOWN 0x221 +#define BTN_DPAD_LEFT 0x222 +#define BTN_DPAD_RIGHT 0x223 + +#define KEY_ALS_TOGGLE 0x230 /* Ambient light sensor */ +#define KEY_ROTATE_LOCK_TOGGLE 0x231 /* Display rotation lock */ + +#define KEY_BUTTONCONFIG 0x240 /* AL Button Configuration */ +#define KEY_TASKMANAGER 0x241 /* AL Task/Project Manager */ +#define KEY_JOURNAL 0x242 /* AL Log/Journal/Timecard */ +#define KEY_CONTROLPANEL 0x243 /* AL Control Panel */ +#define KEY_APPSELECT 0x244 /* AL Select Task/Application */ +#define KEY_SCREENSAVER 0x245 /* AL Screen Saver */ +#define KEY_VOICECOMMAND 0x246 /* Listening Voice Command */ +#define KEY_ASSISTANT 0x247 /* AL Context-aware desktop assistant */ + +#define KEY_BRIGHTNESS_MIN 0x250 /* Set Brightness to Minimum */ +#define KEY_BRIGHTNESS_MAX 0x251 /* Set Brightness to Maximum */ + +#define KEY_KBDINPUTASSIST_PREV 0x260 +#define KEY_KBDINPUTASSIST_NEXT 0x261 +#define KEY_KBDINPUTASSIST_PREVGROUP 0x262 +#define KEY_KBDINPUTASSIST_NEXTGROUP 0x263 +#define KEY_KBDINPUTASSIST_ACCEPT 0x264 +#define KEY_KBDINPUTASSIST_CANCEL 0x265 + +/* Diagonal movement keys */ +#define KEY_RIGHT_UP 0x266 +#define KEY_RIGHT_DOWN 0x267 +#define KEY_LEFT_UP 0x268 +#define KEY_LEFT_DOWN 0x269 + +#define KEY_ROOT_MENU 0x26a /* Show Device's Root Menu */ +/* Show Top Menu of the Media (e.g. DVD) */ +#define KEY_MEDIA_TOP_MENU 0x26b +#define KEY_NUMERIC_11 0x26c +#define KEY_NUMERIC_12 0x26d +/* + * Toggle Audio Description: refers to an audio service that helps blind and + * visually impaired consumers understand the action in a program. Note: in + * some countries this is referred to as "Video Description". + */ +#define KEY_AUDIO_DESC 0x26e +#define KEY_3D_MODE 0x26f +#define KEY_NEXT_FAVORITE 0x270 +#define KEY_STOP_RECORD 0x271 +#define KEY_PAUSE_RECORD 0x272 +#define KEY_VOD 0x273 /* Video on Demand */ +#define KEY_UNMUTE 0x274 +#define KEY_FASTREVERSE 0x275 +#define KEY_SLOWREVERSE 0x276 +/* + * Control a data application associated with the currently viewed channel, + * e.g. teletext or data broadcast application (MHEG, MHP, HbbTV, etc.) + */ +#define KEY_DATA 0x277 +#define KEY_ONSCREEN_KEYBOARD 0x278 + +#define BTN_TRIGGER_HAPPY 0x2c0 +#define BTN_TRIGGER_HAPPY1 0x2c0 +#define BTN_TRIGGER_HAPPY2 0x2c1 +#define BTN_TRIGGER_HAPPY3 0x2c2 +#define BTN_TRIGGER_HAPPY4 0x2c3 +#define BTN_TRIGGER_HAPPY5 0x2c4 +#define BTN_TRIGGER_HAPPY6 0x2c5 +#define BTN_TRIGGER_HAPPY7 0x2c6 +#define BTN_TRIGGER_HAPPY8 0x2c7 +#define BTN_TRIGGER_HAPPY9 0x2c8 +#define BTN_TRIGGER_HAPPY10 0x2c9 +#define BTN_TRIGGER_HAPPY11 0x2ca +#define BTN_TRIGGER_HAPPY12 0x2cb +#define BTN_TRIGGER_HAPPY13 0x2cc +#define BTN_TRIGGER_HAPPY14 0x2cd +#define BTN_TRIGGER_HAPPY15 0x2ce +#define BTN_TRIGGER_HAPPY16 0x2cf +#define BTN_TRIGGER_HAPPY17 0x2d0 +#define BTN_TRIGGER_HAPPY18 0x2d1 +#define BTN_TRIGGER_HAPPY19 0x2d2 +#define BTN_TRIGGER_HAPPY20 0x2d3 +#define BTN_TRIGGER_HAPPY21 0x2d4 +#define BTN_TRIGGER_HAPPY22 0x2d5 +#define BTN_TRIGGER_HAPPY23 0x2d6 +#define BTN_TRIGGER_HAPPY24 0x2d7 +#define BTN_TRIGGER_HAPPY25 0x2d8 +#define BTN_TRIGGER_HAPPY26 0x2d9 +#define BTN_TRIGGER_HAPPY27 0x2da +#define BTN_TRIGGER_HAPPY28 0x2db +#define BTN_TRIGGER_HAPPY29 0x2dc +#define BTN_TRIGGER_HAPPY30 0x2dd +#define BTN_TRIGGER_HAPPY31 0x2de +#define BTN_TRIGGER_HAPPY32 0x2df +#define BTN_TRIGGER_HAPPY33 0x2e0 +#define BTN_TRIGGER_HAPPY34 0x2e1 +#define BTN_TRIGGER_HAPPY35 0x2e2 +#define BTN_TRIGGER_HAPPY36 0x2e3 +#define BTN_TRIGGER_HAPPY37 0x2e4 +#define BTN_TRIGGER_HAPPY38 0x2e5 +#define BTN_TRIGGER_HAPPY39 0x2e6 +#define BTN_TRIGGER_HAPPY40 0x2e7 + +/* We avoid low common keys in module aliases so they don't get huge. */ +#define KEY_MIN_INTERESTING KEY_MUTE +#define KEY_MAX 0x2ff +#define KEY_CNT (KEY_MAX+1) + +/* + * Relative axes + */ + +#define REL_X 0x00 +#define REL_Y 0x01 +#define REL_Z 0x02 +#define REL_RX 0x03 +#define REL_RY 0x04 +#define REL_RZ 0x05 +#define REL_HWHEEL 0x06 +#define REL_DIAL 0x07 +#define REL_WHEEL 0x08 +#define REL_MISC 0x09 +/* + * 0x0a is reserved and should not be used in input drivers. + * It was used by HID as REL_MISC+1 and userspace needs to detect if + * the next REL_* event is correct or is just REL_MISC + n. + * We define here REL_RESERVED so userspace can rely on it and detect + * the situation described above. + */ +#define REL_RESERVED 0x0a +#define REL_WHEEL_HI_RES 0x0b +#define REL_HWHEEL_HI_RES 0x0c +#define REL_MAX 0x0f +#define REL_CNT (REL_MAX+1) + +/* + * Absolute axes + */ + +#define ABS_X 0x00 +#define ABS_Y 0x01 +#define ABS_Z 0x02 +#define ABS_RX 0x03 +#define ABS_RY 0x04 +#define ABS_RZ 0x05 +#define ABS_THROTTLE 0x06 +#define ABS_RUDDER 0x07 +#define ABS_WHEEL 0x08 +#define ABS_GAS 0x09 +#define ABS_BRAKE 0x0a +#define ABS_HAT0X 0x10 +#define ABS_HAT0Y 0x11 +#define ABS_HAT1X 0x12 +#define ABS_HAT1Y 0x13 +#define ABS_HAT2X 0x14 +#define ABS_HAT2Y 0x15 +#define ABS_HAT3X 0x16 +#define ABS_HAT3Y 0x17 +#define ABS_PRESSURE 0x18 +#define ABS_DISTANCE 0x19 +#define ABS_TILT_X 0x1a +#define ABS_TILT_Y 0x1b +#define ABS_TOOL_WIDTH 0x1c + +#define ABS_VOLUME 0x20 + +#define ABS_MISC 0x28 + +/* + * 0x2e is reserved and should not be used in input drivers. + * It was used by HID as ABS_MISC+6 and userspace needs to detect if + * the next ABS_* event is correct or is just ABS_MISC + n. + * We define here ABS_RESERVED so userspace can rely on it and detect + * the situation described above. + */ +#define ABS_RESERVED 0x2e + +#define ABS_MT_SLOT 0x2f /* MT slot being modified */ +#define ABS_MT_TOUCH_MAJOR 0x30 /* Major axis of touching ellipse */ +#define ABS_MT_TOUCH_MINOR 0x31 /* Minor axis (omit if circular) */ +#define ABS_MT_WIDTH_MAJOR 0x32 /* Major axis of approaching ellipse */ +#define ABS_MT_WIDTH_MINOR 0x33 /* Minor axis (omit if circular) */ +#define ABS_MT_ORIENTATION 0x34 /* Ellipse orientation */ +#define ABS_MT_POSITION_X 0x35 /* Center X touch position */ +#define ABS_MT_POSITION_Y 0x36 /* Center Y touch position */ +#define ABS_MT_TOOL_TYPE 0x37 /* Type of touching device */ +#define ABS_MT_BLOB_ID 0x38 /* Group a set of packets as a blob */ +#define ABS_MT_TRACKING_ID 0x39 /* Unique ID of initiated contact */ +#define ABS_MT_PRESSURE 0x3a /* Pressure on contact area */ +#define ABS_MT_DISTANCE 0x3b /* Contact hover distance */ +#define ABS_MT_TOOL_X 0x3c /* Center X tool position */ +#define ABS_MT_TOOL_Y 0x3d /* Center Y tool position */ + + +#define ABS_MAX 0x3f +#define ABS_CNT (ABS_MAX+1) + +/* + * Switch events + */ + +#define SW_LID 0x00 /* set = lid shut */ +#define SW_TABLET_MODE 0x01 /* set = tablet mode */ +#define SW_HEADPHONE_INSERT 0x02 /* set = inserted */ +#define SW_RFKILL_ALL 0x03 /* rfkill master switch, type "any" + set = radio enabled */ +#define SW_RADIO SW_RFKILL_ALL /* deprecated */ +#define SW_MICROPHONE_INSERT 0x04 /* set = inserted */ +#define SW_DOCK 0x05 /* set = plugged into dock */ +#define SW_LINEOUT_INSERT 0x06 /* set = inserted */ +#define SW_JACK_PHYSICAL_INSERT 0x07 /* set = mechanical switch set */ +#define SW_VIDEOOUT_INSERT 0x08 /* set = inserted */ +#define SW_CAMERA_LENS_COVER 0x09 /* set = lens covered */ +#define SW_KEYPAD_SLIDE 0x0a /* set = keypad slide out */ +#define SW_FRONT_PROXIMITY 0x0b /* set = front proximity sensor active */ +#define SW_ROTATE_LOCK 0x0c /* set = rotate locked/disabled */ +#define SW_LINEIN_INSERT 0x0d /* set = inserted */ +#define SW_MUTE_DEVICE 0x0e /* set = device disabled */ +#define SW_PEN_INSERTED 0x0f /* set = pen inserted */ +#define SW_MAX 0x0f +#define SW_CNT (SW_MAX+1) + +/* + * Misc events + */ + +#define MSC_SERIAL 0x00 +#define MSC_PULSELED 0x01 +#define MSC_GESTURE 0x02 +#define MSC_RAW 0x03 +#define MSC_SCAN 0x04 +#define MSC_TIMESTAMP 0x05 +#define MSC_MAX 0x07 +#define MSC_CNT (MSC_MAX+1) + +/* + * LEDs + */ + +#define LED_NUML 0x00 +#define LED_CAPSL 0x01 +#define LED_SCROLLL 0x02 +#define LED_COMPOSE 0x03 +#define LED_KANA 0x04 +#define LED_SLEEP 0x05 +#define LED_SUSPEND 0x06 +#define LED_MUTE 0x07 +#define LED_MISC 0x08 +#define LED_MAIL 0x09 +#define LED_CHARGING 0x0a +#define LED_MAX 0x0f +#define LED_CNT (LED_MAX+1) + +/* + * Autorepeat values + */ + +#define REP_DELAY 0x00 +#define REP_PERIOD 0x01 +#define REP_MAX 0x01 +#define REP_CNT (REP_MAX+1) + +/* + * Sounds + */ + +#define SND_CLICK 0x00 +#define SND_BELL 0x01 +#define SND_TONE 0x02 +#define SND_MAX 0x07 +#define SND_CNT (SND_MAX+1) + +#endif diff --git a/app/src/main/jni/lorie/locale/keymaps.h b/app/src/main/jni/lorie/locale/keymaps.h new file mode 100644 index 0000000..fe67e24 --- /dev/null +++ b/app/src/main/jni/lorie/locale/keymaps.h @@ -0,0 +1,519 @@ +#include +#define SYM_LENGTH 7 +#define KEYCODE_MIN 8 +#define KEYCODE_MAX 255 +#define NOSYM {{0}, {0}} +struct lorie_keymap { + char *name; + struct keysym { + char normal[SYM_LENGTH]; + char shift[SYM_LENGTH]; + } keysyms[KEYCODE_MAX - KEYCODE_MIN]; +}; + +struct lorie_keymap lorie_keymap_ru = { + .name = "ru", + .keysyms = { + NOSYM, // keyCode: 8; + NOSYM, // keyCode: 9; + NOSYM, // keyCode: 10; + NOSYM, // keyCode: 11; + NOSYM, // keyCode: 12; + NOSYM, // keyCode: 13; + NOSYM, // keyCode: 14; + NOSYM, // keyCode: 15; + NOSYM, // keyCode: 16; + {{27, 0, 0, 0, 0, 0, 0}, {27, 0, 0, 0, 0, 0, 0}}, // keyCode: 17; + {{49, 0, 0, 0, 0, 0, 0}, {33, 0, 0, 0, 0, 0, 0}}, // keyCode: 18; normal: "1"; shift: "!"; + {{50, 0, 0, 0, 0, 0, 0}, {34, 0, 0, 0, 0, 0, 0}}, // keyCode: 19; normal: "2"; shift: """; + {{51, 0, 0, 0, 0, 0, 0}, {-30, -124, -106, 0, 0, 0, 0}}, // keyCode: 20; normal: "3"; shift: "№"; + {{52, 0, 0, 0, 0, 0, 0}, {59, 0, 0, 0, 0, 0, 0}}, // keyCode: 21; normal: "4"; shift: ";"; + {{53, 0, 0, 0, 0, 0, 0}, {37, 0, 0, 0, 0, 0, 0}}, // keyCode: 22; normal: "5"; shift: "%"; + {{54, 0, 0, 0, 0, 0, 0}, {58, 0, 0, 0, 0, 0, 0}}, // keyCode: 23; normal: "6"; shift: ":"; + {{55, 0, 0, 0, 0, 0, 0}, {63, 0, 0, 0, 0, 0, 0}}, // keyCode: 24; normal: "7"; shift: "?"; + {{56, 0, 0, 0, 0, 0, 0}, {42, 0, 0, 0, 0, 0, 0}}, // keyCode: 25; normal: "8"; shift: "*"; + {{57, 0, 0, 0, 0, 0, 0}, {40, 0, 0, 0, 0, 0, 0}}, // keyCode: 26; normal: "9"; shift: "("; + {{48, 0, 0, 0, 0, 0, 0}, {41, 0, 0, 0, 0, 0, 0}}, // keyCode: 27; normal: "0"; shift: ")"; + {{45, 0, 0, 0, 0, 0, 0}, {95, 0, 0, 0, 0, 0, 0}}, // keyCode: 28; normal: "-"; shift: "_"; + {{61, 0, 0, 0, 0, 0, 0}, {43, 0, 0, 0, 0, 0, 0}}, // keyCode: 29; normal: "="; shift: "+"; + {{8, 0, 0, 0, 0, 0, 0}, {8, 0, 0, 0, 0, 0, 0}}, // keyCode: 30; + NOSYM, // keyCode: 31; normal: " "; + {{-48, -71, 0, 0, 0, 0, 0}, {-48, -103, 0, 0, 0, 0, 0}}, // keyCode: 32; normal: "й"; shift: "Й"; + {{-47, -122, 0, 0, 0, 0, 0}, {-48, -90, 0, 0, 0, 0, 0}}, // keyCode: 33; normal: "ц"; shift: "Ц"; + {{-47, -125, 0, 0, 0, 0, 0}, {-48, -93, 0, 0, 0, 0, 0}}, // keyCode: 34; normal: "у"; shift: "У"; + {{-48, -70, 0, 0, 0, 0, 0}, {-48, -102, 0, 0, 0, 0, 0}}, // keyCode: 35; normal: "к"; shift: "К"; + {{-48, -75, 0, 0, 0, 0, 0}, {-48, -107, 0, 0, 0, 0, 0}}, // keyCode: 36; normal: "е"; shift: "Е"; + {{-48, -67, 0, 0, 0, 0, 0}, {-48, -99, 0, 0, 0, 0, 0}}, // keyCode: 37; normal: "н"; shift: "Н"; + {{-48, -77, 0, 0, 0, 0, 0}, {-48, -109, 0, 0, 0, 0, 0}}, // keyCode: 38; normal: "г"; shift: "Г"; + {{-47, -120, 0, 0, 0, 0, 0}, {-48, -88, 0, 0, 0, 0, 0}}, // keyCode: 39; normal: "ш"; shift: "Ш"; + {{-47, -119, 0, 0, 0, 0, 0}, {-48, -87, 0, 0, 0, 0, 0}}, // keyCode: 40; normal: "щ"; shift: "Щ"; + {{-48, -73, 0, 0, 0, 0, 0}, {-48, -105, 0, 0, 0, 0, 0}}, // keyCode: 41; normal: "з"; shift: "З"; + {{-47, -123, 0, 0, 0, 0, 0}, {-48, -91, 0, 0, 0, 0, 0}}, // keyCode: 42; normal: "х"; shift: "Х"; + {{-47, -118, 0, 0, 0, 0, 0}, {-48, -86, 0, 0, 0, 0, 0}}, // keyCode: 43; normal: "ъ"; shift: "Ъ"; + {{13, 0, 0, 0, 0, 0, 0}, {13, 0, 0, 0, 0, 0, 0}}, // keyCode: 44; + NOSYM, // keyCode: 45; + {{-47, -124, 0, 0, 0, 0, 0}, {-48, -92, 0, 0, 0, 0, 0}}, // keyCode: 46; normal: "ф"; shift: "Ф"; + {{-47, -117, 0, 0, 0, 0, 0}, {-48, -85, 0, 0, 0, 0, 0}}, // keyCode: 47; normal: "ы"; shift: "Ы"; + {{-48, -78, 0, 0, 0, 0, 0}, {-48, -110, 0, 0, 0, 0, 0}}, // keyCode: 48; normal: "в"; shift: "В"; + {{-48, -80, 0, 0, 0, 0, 0}, {-48, -112, 0, 0, 0, 0, 0}}, // keyCode: 49; normal: "а"; shift: "А"; + {{-48, -65, 0, 0, 0, 0, 0}, {-48, -97, 0, 0, 0, 0, 0}}, // keyCode: 50; normal: "п"; shift: "П"; + {{-47, -128, 0, 0, 0, 0, 0}, {-48, -96, 0, 0, 0, 0, 0}}, // keyCode: 51; normal: "р"; shift: "Р"; + {{-48, -66, 0, 0, 0, 0, 0}, {-48, -98, 0, 0, 0, 0, 0}}, // keyCode: 52; normal: "о"; shift: "О"; + {{-48, -69, 0, 0, 0, 0, 0}, {-48, -101, 0, 0, 0, 0, 0}}, // keyCode: 53; normal: "л"; shift: "Л"; + {{-48, -76, 0, 0, 0, 0, 0}, {-48, -108, 0, 0, 0, 0, 0}}, // keyCode: 54; normal: "д"; shift: "Д"; + {{-48, -74, 0, 0, 0, 0, 0}, {-48, -106, 0, 0, 0, 0, 0}}, // keyCode: 55; normal: "ж"; shift: "Ж"; + {{-47, -115, 0, 0, 0, 0, 0}, {-48, -83, 0, 0, 0, 0, 0}}, // keyCode: 56; normal: "э"; shift: "Э"; + {{-47, -111, 0, 0, 0, 0, 0}, {-48, -127, 0, 0, 0, 0, 0}}, // keyCode: 57; normal: "ё"; shift: "Ё"; + NOSYM, // keyCode: 58; + {{92, 0, 0, 0, 0, 0, 0}, {47, 0, 0, 0, 0, 0, 0}}, // keyCode: 59; normal: "\"; shift: "/"; + {{-47, -113, 0, 0, 0, 0, 0}, {-48, -81, 0, 0, 0, 0, 0}}, // keyCode: 60; normal: "я"; shift: "Я"; + {{-47, -121, 0, 0, 0, 0, 0}, {-48, -89, 0, 0, 0, 0, 0}}, // keyCode: 61; normal: "ч"; shift: "Ч"; + {{-47, -127, 0, 0, 0, 0, 0}, {-48, -95, 0, 0, 0, 0, 0}}, // keyCode: 62; normal: "с"; shift: "С"; + {{-48, -68, 0, 0, 0, 0, 0}, {-48, -100, 0, 0, 0, 0, 0}}, // keyCode: 63; normal: "м"; shift: "М"; + {{-48, -72, 0, 0, 0, 0, 0}, {-48, -104, 0, 0, 0, 0, 0}}, // keyCode: 64; normal: "и"; shift: "И"; + {{-47, -126, 0, 0, 0, 0, 0}, {-48, -94, 0, 0, 0, 0, 0}}, // keyCode: 65; normal: "т"; shift: "Т"; + {{-47, -116, 0, 0, 0, 0, 0}, {-48, -84, 0, 0, 0, 0, 0}}, // keyCode: 66; normal: "ь"; shift: "Ь"; + {{-48, -79, 0, 0, 0, 0, 0}, {-48, -111, 0, 0, 0, 0, 0}}, // keyCode: 67; normal: "б"; shift: "Б"; + {{-47, -114, 0, 0, 0, 0, 0}, {-48, -82, 0, 0, 0, 0, 0}}, // keyCode: 68; normal: "ю"; shift: "Ю"; + {{46, 0, 0, 0, 0, 0, 0}, {44, 0, 0, 0, 0, 0, 0}}, // keyCode: 69; normal: "."; shift: ","; + NOSYM, // keyCode: 70; + {{42, 0, 0, 0, 0, 0, 0}, {42, 0, 0, 0, 0, 0, 0}}, // keyCode: 71; normal: "*"; shift: "*"; + NOSYM, // keyCode: 72; + {{32, 0, 0, 0, 0, 0, 0}, {32, 0, 0, 0, 0, 0, 0}}, // keyCode: 73; normal: " "; shift: " "; + NOSYM, // keyCode: 74; + NOSYM, // keyCode: 75; + NOSYM, // keyCode: 76; + NOSYM, // keyCode: 77; + NOSYM, // keyCode: 78; + NOSYM, // keyCode: 79; + NOSYM, // keyCode: 80; + NOSYM, // keyCode: 81; + NOSYM, // keyCode: 82; + NOSYM, // keyCode: 83; + NOSYM, // keyCode: 84; + NOSYM, // keyCode: 85; + NOSYM, // keyCode: 86; + NOSYM, // keyCode: 87; shift: "7"; + NOSYM, // keyCode: 88; shift: "8"; + NOSYM, // keyCode: 89; shift: "9"; + {{45, 0, 0, 0, 0, 0, 0}, {45, 0, 0, 0, 0, 0, 0}}, // keyCode: 90; normal: "-"; shift: "-"; + NOSYM, // keyCode: 91; shift: "4"; + NOSYM, // keyCode: 92; shift: "5"; + NOSYM, // keyCode: 93; shift: "6"; + {{43, 0, 0, 0, 0, 0, 0}, {43, 0, 0, 0, 0, 0, 0}}, // keyCode: 94; normal: "+"; shift: "+"; + NOSYM, // keyCode: 95; shift: "1"; + NOSYM, // keyCode: 96; shift: "2"; + NOSYM, // keyCode: 97; shift: "3"; + NOSYM, // keyCode: 98; shift: "0"; + NOSYM, // keyCode: 99; shift: ","; + NOSYM, // keyCode: 100; + NOSYM, // keyCode: 101; + {{47, 0, 0, 0, 0, 0, 0}, {124, 0, 0, 0, 0, 0, 0}}, // keyCode: 102; normal: "/"; shift: "|"; + NOSYM, // keyCode: 103; + NOSYM, // keyCode: 104; + NOSYM, // keyCode: 105; + NOSYM, // keyCode: 106; + NOSYM, // keyCode: 107; + NOSYM, // keyCode: 108; + NOSYM, // keyCode: 109; + NOSYM, // keyCode: 110; + NOSYM, // keyCode: 111; + {{13, 0, 0, 0, 0, 0, 0}, {13, 0, 0, 0, 0, 0, 0}}, // keyCode: 112; + NOSYM, // keyCode: 113; + {{47, 0, 0, 0, 0, 0, 0}, {47, 0, 0, 0, 0, 0, 0}}, // keyCode: 114; normal: "/"; shift: "/"; + NOSYM, // keyCode: 115; + NOSYM, // keyCode: 116; + {{10, 0, 0, 0, 0, 0, 0}, {10, 0, 0, 0, 0, 0, 0}}, // keyCode: 117; + NOSYM, // keyCode: 118; + NOSYM, // keyCode: 119; + NOSYM, // keyCode: 120; + NOSYM, // keyCode: 121; + NOSYM, // keyCode: 122; + NOSYM, // keyCode: 123; + NOSYM, // keyCode: 124; + NOSYM, // keyCode: 125; + NOSYM, // keyCode: 126; + {{127, 0, 0, 0, 0, 0, 0}, {127, 0, 0, 0, 0, 0, 0}}, // keyCode: 127; + NOSYM, // keyCode: 128; + NOSYM, // keyCode: 129; + NOSYM, // keyCode: 130; + NOSYM, // keyCode: 131; + NOSYM, // keyCode: 132; + {{61, 0, 0, 0, 0, 0, 0}, {61, 0, 0, 0, 0, 0, 0}}, // keyCode: 133; normal: "="; shift: "="; + {{-62, -79, 0, 0, 0, 0, 0}, {-62, -79, 0, 0, 0, 0, 0}}, // keyCode: 134; normal: "±"; shift: "±"; + NOSYM, // keyCode: 135; + NOSYM, // keyCode: 136; + {{46, 0, 0, 0, 0, 0, 0}, {46, 0, 0, 0, 0, 0, 0}}, // keyCode: 137; normal: "."; shift: "."; + NOSYM, // keyCode: 138; + NOSYM, // keyCode: 139; + NOSYM, // keyCode: 140; + NOSYM, // keyCode: 141; + NOSYM, // keyCode: 142; + NOSYM, // keyCode: 143; + NOSYM, // keyCode: 144; + NOSYM, // keyCode: 145; + NOSYM, // keyCode: 146; + NOSYM, // keyCode: 147; + NOSYM, // keyCode: 148; + NOSYM, // keyCode: 149; + NOSYM, // keyCode: 150; + NOSYM, // keyCode: 151; + NOSYM, // keyCode: 152; + NOSYM, // keyCode: 153; + NOSYM, // keyCode: 154; + NOSYM, // keyCode: 155; + NOSYM, // keyCode: 156; + NOSYM, // keyCode: 157; + NOSYM, // keyCode: 158; + NOSYM, // keyCode: 159; + NOSYM, // keyCode: 160; + NOSYM, // keyCode: 161; + NOSYM, // keyCode: 162; + NOSYM, // keyCode: 163; + NOSYM, // keyCode: 164; + NOSYM, // keyCode: 165; + NOSYM, // keyCode: 166; + NOSYM, // keyCode: 167; + NOSYM, // keyCode: 168; + NOSYM, // keyCode: 169; + NOSYM, // keyCode: 170; + NOSYM, // keyCode: 171; + NOSYM, // keyCode: 172; + NOSYM, // keyCode: 173; + NOSYM, // keyCode: 174; + NOSYM, // keyCode: 175; + NOSYM, // keyCode: 176; + NOSYM, // keyCode: 177; + NOSYM, // keyCode: 178; + NOSYM, // keyCode: 179; + NOSYM, // keyCode: 180; + NOSYM, // keyCode: 181; + NOSYM, // keyCode: 182; + NOSYM, // keyCode: 183; + NOSYM, // keyCode: 184; + NOSYM, // keyCode: 185; + NOSYM, // keyCode: 186; + NOSYM, // keyCode: 187; + NOSYM, // keyCode: 188; + NOSYM, // keyCode: 189; + NOSYM, // keyCode: 190; + NOSYM, // keyCode: 191; + NOSYM, // keyCode: 192; + NOSYM, // keyCode: 193; + NOSYM, // keyCode: 194; + {{40, 0, 0, 0, 0, 0, 0}, {40, 0, 0, 0, 0, 0, 0}}, // keyCode: 195; normal: "("; shift: "("; + {{41, 0, 0, 0, 0, 0, 0}, {41, 0, 0, 0, 0, 0, 0}}, // keyCode: 196; normal: ")"; shift: ")"; + NOSYM, // keyCode: 197; + NOSYM, // keyCode: 198; + NOSYM, // keyCode: 199; + NOSYM, // keyCode: 200; + NOSYM, // keyCode: 201; + NOSYM, // keyCode: 202; + NOSYM, // keyCode: 203; + NOSYM, // keyCode: 204; + NOSYM, // keyCode: 205; + NOSYM, // keyCode: 206; + NOSYM, // keyCode: 207; + NOSYM, // keyCode: 208; + NOSYM, // keyCode: 209; + NOSYM, // keyCode: 210; + NOSYM, // keyCode: 211; + NOSYM, // keyCode: 212; + NOSYM, // keyCode: 213; + NOSYM, // keyCode: 214; + NOSYM, // keyCode: 215; + NOSYM, // keyCode: 216; + NOSYM, // keyCode: 217; + NOSYM, // keyCode: 218; + NOSYM, // keyCode: 219; + NOSYM, // keyCode: 220; + NOSYM, // keyCode: 221; + NOSYM, // keyCode: 222; + NOSYM, // keyCode: 223; + NOSYM, // keyCode: 224; + NOSYM, // keyCode: 225; + NOSYM, // keyCode: 226; + NOSYM, // keyCode: 227; + NOSYM, // keyCode: 228; + NOSYM, // keyCode: 229; + NOSYM, // keyCode: 230; + NOSYM, // keyCode: 231; + NOSYM, // keyCode: 232; + NOSYM, // keyCode: 233; + NOSYM, // keyCode: 234; + NOSYM, // keyCode: 235; + NOSYM, // keyCode: 236; + NOSYM, // keyCode: 237; + NOSYM, // keyCode: 238; + NOSYM, // keyCode: 239; + NOSYM, // keyCode: 240; + NOSYM, // keyCode: 241; + NOSYM, // keyCode: 242; + NOSYM, // keyCode: 243; + NOSYM, // keyCode: 244; + NOSYM, // keyCode: 245; + NOSYM, // keyCode: 246; + NOSYM, // keyCode: 247; + NOSYM, // keyCode: 248; + NOSYM, // keyCode: 249; + NOSYM, // keyCode: 250; + NOSYM, // keyCode: 251; + NOSYM, // keyCode: 252; + NOSYM, // keyCode: 253; + NOSYM // keyCode: 254; + } +}; +struct lorie_keymap lorie_keymap_il = { + .name = "il", + .keysyms = { + NOSYM, // keyCode: 8; + NOSYM, // keyCode: 9; + NOSYM, // keyCode: 10; + NOSYM, // keyCode: 11; + NOSYM, // keyCode: 12; + NOSYM, // keyCode: 13; + NOSYM, // keyCode: 14; + NOSYM, // keyCode: 15; + NOSYM, // keyCode: 16; + {{27, 0, 0, 0, 0, 0, 0}, {27, 0, 0, 0, 0, 0, 0}}, // keyCode: 17; + {{49, 0, 0, 0, 0, 0, 0}, {33, 0, 0, 0, 0, 0, 0}}, // keyCode: 18; normal: "1"; shift: "!"; + {{50, 0, 0, 0, 0, 0, 0}, {64, 0, 0, 0, 0, 0, 0}}, // keyCode: 19; normal: "2"; shift: "@"; + {{51, 0, 0, 0, 0, 0, 0}, {35, 0, 0, 0, 0, 0, 0}}, // keyCode: 20; normal: "3"; shift: "#"; + {{52, 0, 0, 0, 0, 0, 0}, {36, 0, 0, 0, 0, 0, 0}}, // keyCode: 21; normal: "4"; shift: "$"; + {{53, 0, 0, 0, 0, 0, 0}, {37, 0, 0, 0, 0, 0, 0}}, // keyCode: 22; normal: "5"; shift: "%"; + {{54, 0, 0, 0, 0, 0, 0}, {94, 0, 0, 0, 0, 0, 0}}, // keyCode: 23; normal: "6"; shift: "^"; + {{55, 0, 0, 0, 0, 0, 0}, {38, 0, 0, 0, 0, 0, 0}}, // keyCode: 24; normal: "7"; shift: "&"; + {{56, 0, 0, 0, 0, 0, 0}, {42, 0, 0, 0, 0, 0, 0}}, // keyCode: 25; normal: "8"; shift: "*"; + {{57, 0, 0, 0, 0, 0, 0}, {41, 0, 0, 0, 0, 0, 0}}, // keyCode: 26; normal: "9"; shift: ")"; + {{48, 0, 0, 0, 0, 0, 0}, {40, 0, 0, 0, 0, 0, 0}}, // keyCode: 27; normal: "0"; shift: "("; + {{45, 0, 0, 0, 0, 0, 0}, {95, 0, 0, 0, 0, 0, 0}}, // keyCode: 28; normal: "-"; shift: "_"; + {{61, 0, 0, 0, 0, 0, 0}, {43, 0, 0, 0, 0, 0, 0}}, // keyCode: 29; normal: "="; shift: "+"; + {{8, 0, 0, 0, 0, 0, 0}, {8, 0, 0, 0, 0, 0, 0}}, // keyCode: 30; + NOSYM, // keyCode: 31; normal: " "; + {{47, 0, 0, 0, 0, 0, 0}, {81, 0, 0, 0, 0, 0, 0}}, // keyCode: 32; normal: "/"; shift: "Q"; + {{39, 0, 0, 0, 0, 0, 0}, {87, 0, 0, 0, 0, 0, 0}}, // keyCode: 33; normal: "'"; shift: "W"; + {{-41, -89, 0, 0, 0, 0, 0}, {69, 0, 0, 0, 0, 0, 0}}, // keyCode: 34; normal: "ק"; shift: "E"; + {{-41, -88, 0, 0, 0, 0, 0}, {82, 0, 0, 0, 0, 0, 0}}, // keyCode: 35; normal: "ר"; shift: "R"; + {{-41, -112, 0, 0, 0, 0, 0}, {84, 0, 0, 0, 0, 0, 0}}, // keyCode: 36; normal: "א"; shift: "T"; + {{-41, -104, 0, 0, 0, 0, 0}, {89, 0, 0, 0, 0, 0, 0}}, // keyCode: 37; normal: "ט"; shift: "Y"; + {{-41, -107, 0, 0, 0, 0, 0}, {85, 0, 0, 0, 0, 0, 0}}, // keyCode: 38; normal: "ו"; shift: "U"; + {{-41, -97, 0, 0, 0, 0, 0}, {73, 0, 0, 0, 0, 0, 0}}, // keyCode: 39; normal: "ן"; shift: "I"; + {{-41, -99, 0, 0, 0, 0, 0}, {79, 0, 0, 0, 0, 0, 0}}, // keyCode: 40; normal: "ם"; shift: "O"; + {{-41, -92, 0, 0, 0, 0, 0}, {80, 0, 0, 0, 0, 0, 0}}, // keyCode: 41; normal: "פ"; shift: "P"; + {{93, 0, 0, 0, 0, 0, 0}, {125, 0, 0, 0, 0, 0, 0}}, // keyCode: 42; normal: "]"; shift: "}"; + {{91, 0, 0, 0, 0, 0, 0}, {123, 0, 0, 0, 0, 0, 0}}, // keyCode: 43; normal: "["; shift: "{"; + {{13, 0, 0, 0, 0, 0, 0}, {13, 0, 0, 0, 0, 0, 0}}, // keyCode: 44; + NOSYM, // keyCode: 45; + {{-41, -87, 0, 0, 0, 0, 0}, {65, 0, 0, 0, 0, 0, 0}}, // keyCode: 46; normal: "ש"; shift: "A"; + {{-41, -109, 0, 0, 0, 0, 0}, {83, 0, 0, 0, 0, 0, 0}}, // keyCode: 47; normal: "ד"; shift: "S"; + {{-41, -110, 0, 0, 0, 0, 0}, {68, 0, 0, 0, 0, 0, 0}}, // keyCode: 48; normal: "ג"; shift: "D"; + {{-41, -101, 0, 0, 0, 0, 0}, {70, 0, 0, 0, 0, 0, 0}}, // keyCode: 49; normal: "כ"; shift: "F"; + {{-41, -94, 0, 0, 0, 0, 0}, {71, 0, 0, 0, 0, 0, 0}}, // keyCode: 50; normal: "ע"; shift: "G"; + {{-41, -103, 0, 0, 0, 0, 0}, {72, 0, 0, 0, 0, 0, 0}}, // keyCode: 51; normal: "י"; shift: "H"; + {{-41, -105, 0, 0, 0, 0, 0}, {74, 0, 0, 0, 0, 0, 0}}, // keyCode: 52; normal: "ח"; shift: "J"; + {{-41, -100, 0, 0, 0, 0, 0}, {75, 0, 0, 0, 0, 0, 0}}, // keyCode: 53; normal: "ל"; shift: "K"; + {{-41, -102, 0, 0, 0, 0, 0}, {76, 0, 0, 0, 0, 0, 0}}, // keyCode: 54; normal: "ך"; shift: "L"; + {{-41, -93, 0, 0, 0, 0, 0}, {58, 0, 0, 0, 0, 0, 0}}, // keyCode: 55; normal: "ף"; shift: ":"; + {{44, 0, 0, 0, 0, 0, 0}, {34, 0, 0, 0, 0, 0, 0}}, // keyCode: 56; normal: ","; shift: """; + {{59, 0, 0, 0, 0, 0, 0}, {126, 0, 0, 0, 0, 0, 0}}, // keyCode: 57; normal: ";"; shift: "~"; + NOSYM, // keyCode: 58; + {{92, 0, 0, 0, 0, 0, 0}, {124, 0, 0, 0, 0, 0, 0}}, // keyCode: 59; normal: "\"; shift: "|"; + {{-41, -106, 0, 0, 0, 0, 0}, {90, 0, 0, 0, 0, 0, 0}}, // keyCode: 60; normal: "ז"; shift: "Z"; + {{-41, -95, 0, 0, 0, 0, 0}, {88, 0, 0, 0, 0, 0, 0}}, // keyCode: 61; normal: "ס"; shift: "X"; + {{-41, -111, 0, 0, 0, 0, 0}, {67, 0, 0, 0, 0, 0, 0}}, // keyCode: 62; normal: "ב"; shift: "C"; + {{-41, -108, 0, 0, 0, 0, 0}, {86, 0, 0, 0, 0, 0, 0}}, // keyCode: 63; normal: "ה"; shift: "V"; + {{-41, -96, 0, 0, 0, 0, 0}, {66, 0, 0, 0, 0, 0, 0}}, // keyCode: 64; normal: "נ"; shift: "B"; + {{-41, -98, 0, 0, 0, 0, 0}, {78, 0, 0, 0, 0, 0, 0}}, // keyCode: 65; normal: "מ"; shift: "N"; + {{-41, -90, 0, 0, 0, 0, 0}, {77, 0, 0, 0, 0, 0, 0}}, // keyCode: 66; normal: "צ"; shift: "M"; + {{-41, -86, 0, 0, 0, 0, 0}, {62, 0, 0, 0, 0, 0, 0}}, // keyCode: 67; normal: "ת"; shift: ">"; + {{-41, -91, 0, 0, 0, 0, 0}, {60, 0, 0, 0, 0, 0, 0}}, // keyCode: 68; normal: "ץ"; shift: "<"; + {{46, 0, 0, 0, 0, 0, 0}, {63, 0, 0, 0, 0, 0, 0}}, // keyCode: 69; normal: "."; shift: "?"; + NOSYM, // keyCode: 70; + {{42, 0, 0, 0, 0, 0, 0}, {42, 0, 0, 0, 0, 0, 0}}, // keyCode: 71; normal: "*"; shift: "*"; + NOSYM, // keyCode: 72; + {{32, 0, 0, 0, 0, 0, 0}, {32, 0, 0, 0, 0, 0, 0}}, // keyCode: 73; normal: " "; shift: " "; + NOSYM, // keyCode: 74; + NOSYM, // keyCode: 75; + NOSYM, // keyCode: 76; + NOSYM, // keyCode: 77; + NOSYM, // keyCode: 78; + NOSYM, // keyCode: 79; + NOSYM, // keyCode: 80; + NOSYM, // keyCode: 81; + NOSYM, // keyCode: 82; + NOSYM, // keyCode: 83; + NOSYM, // keyCode: 84; + NOSYM, // keyCode: 85; + NOSYM, // keyCode: 86; + NOSYM, // keyCode: 87; shift: "7"; + NOSYM, // keyCode: 88; shift: "8"; + NOSYM, // keyCode: 89; shift: "9"; + {{45, 0, 0, 0, 0, 0, 0}, {45, 0, 0, 0, 0, 0, 0}}, // keyCode: 90; normal: "-"; shift: "-"; + NOSYM, // keyCode: 91; shift: "4"; + NOSYM, // keyCode: 92; shift: "5"; + NOSYM, // keyCode: 93; shift: "6"; + {{43, 0, 0, 0, 0, 0, 0}, {43, 0, 0, 0, 0, 0, 0}}, // keyCode: 94; normal: "+"; shift: "+"; + NOSYM, // keyCode: 95; shift: "1"; + NOSYM, // keyCode: 96; shift: "2"; + NOSYM, // keyCode: 97; shift: "3"; + NOSYM, // keyCode: 98; shift: "0"; + NOSYM, // keyCode: 99; shift: "."; + NOSYM, // keyCode: 100; + NOSYM, // keyCode: 101; + {{60, 0, 0, 0, 0, 0, 0}, {62, 0, 0, 0, 0, 0, 0}}, // keyCode: 102; normal: "<"; shift: ">"; + NOSYM, // keyCode: 103; + NOSYM, // keyCode: 104; + NOSYM, // keyCode: 105; + NOSYM, // keyCode: 106; + NOSYM, // keyCode: 107; + NOSYM, // keyCode: 108; + NOSYM, // keyCode: 109; + NOSYM, // keyCode: 110; + NOSYM, // keyCode: 111; + {{13, 0, 0, 0, 0, 0, 0}, {13, 0, 0, 0, 0, 0, 0}}, // keyCode: 112; + NOSYM, // keyCode: 113; + {{47, 0, 0, 0, 0, 0, 0}, {47, 0, 0, 0, 0, 0, 0}}, // keyCode: 114; normal: "/"; shift: "/"; + NOSYM, // keyCode: 115; + NOSYM, // keyCode: 116; + {{10, 0, 0, 0, 0, 0, 0}, {10, 0, 0, 0, 0, 0, 0}}, // keyCode: 117; + NOSYM, // keyCode: 118; + NOSYM, // keyCode: 119; + NOSYM, // keyCode: 120; + NOSYM, // keyCode: 121; + NOSYM, // keyCode: 122; + NOSYM, // keyCode: 123; + NOSYM, // keyCode: 124; + NOSYM, // keyCode: 125; + NOSYM, // keyCode: 126; + {{127, 0, 0, 0, 0, 0, 0}, {127, 0, 0, 0, 0, 0, 0}}, // keyCode: 127; + NOSYM, // keyCode: 128; + NOSYM, // keyCode: 129; + NOSYM, // keyCode: 130; + NOSYM, // keyCode: 131; + NOSYM, // keyCode: 132; + {{61, 0, 0, 0, 0, 0, 0}, {61, 0, 0, 0, 0, 0, 0}}, // keyCode: 133; normal: "="; shift: "="; + {{-62, -79, 0, 0, 0, 0, 0}, {-62, -79, 0, 0, 0, 0, 0}}, // keyCode: 134; normal: "±"; shift: "±"; + NOSYM, // keyCode: 135; + NOSYM, // keyCode: 136; + {{46, 0, 0, 0, 0, 0, 0}, {46, 0, 0, 0, 0, 0, 0}}, // keyCode: 137; normal: "."; shift: "."; + NOSYM, // keyCode: 138; + NOSYM, // keyCode: 139; + NOSYM, // keyCode: 140; + NOSYM, // keyCode: 141; + NOSYM, // keyCode: 142; + NOSYM, // keyCode: 143; + NOSYM, // keyCode: 144; + NOSYM, // keyCode: 145; + NOSYM, // keyCode: 146; + NOSYM, // keyCode: 147; + NOSYM, // keyCode: 148; + NOSYM, // keyCode: 149; + NOSYM, // keyCode: 150; + NOSYM, // keyCode: 151; + NOSYM, // keyCode: 152; + NOSYM, // keyCode: 153; + NOSYM, // keyCode: 154; + NOSYM, // keyCode: 155; + NOSYM, // keyCode: 156; + NOSYM, // keyCode: 157; + NOSYM, // keyCode: 158; + NOSYM, // keyCode: 159; + NOSYM, // keyCode: 160; + NOSYM, // keyCode: 161; + NOSYM, // keyCode: 162; + NOSYM, // keyCode: 163; + NOSYM, // keyCode: 164; + NOSYM, // keyCode: 165; + NOSYM, // keyCode: 166; + NOSYM, // keyCode: 167; + NOSYM, // keyCode: 168; + NOSYM, // keyCode: 169; + NOSYM, // keyCode: 170; + NOSYM, // keyCode: 171; + NOSYM, // keyCode: 172; + NOSYM, // keyCode: 173; + NOSYM, // keyCode: 174; + NOSYM, // keyCode: 175; + NOSYM, // keyCode: 176; + NOSYM, // keyCode: 177; + NOSYM, // keyCode: 178; + NOSYM, // keyCode: 179; + NOSYM, // keyCode: 180; + NOSYM, // keyCode: 181; + NOSYM, // keyCode: 182; + NOSYM, // keyCode: 183; + NOSYM, // keyCode: 184; + NOSYM, // keyCode: 185; + NOSYM, // keyCode: 186; + NOSYM, // keyCode: 187; + NOSYM, // keyCode: 188; + NOSYM, // keyCode: 189; + NOSYM, // keyCode: 190; + NOSYM, // keyCode: 191; + NOSYM, // keyCode: 192; + NOSYM, // keyCode: 193; + NOSYM, // keyCode: 194; + {{40, 0, 0, 0, 0, 0, 0}, {40, 0, 0, 0, 0, 0, 0}}, // keyCode: 195; normal: "("; shift: "("; + {{41, 0, 0, 0, 0, 0, 0}, {41, 0, 0, 0, 0, 0, 0}}, // keyCode: 196; normal: ")"; shift: ")"; + NOSYM, // keyCode: 197; + NOSYM, // keyCode: 198; + NOSYM, // keyCode: 199; + NOSYM, // keyCode: 200; + NOSYM, // keyCode: 201; + NOSYM, // keyCode: 202; + NOSYM, // keyCode: 203; + NOSYM, // keyCode: 204; + NOSYM, // keyCode: 205; + NOSYM, // keyCode: 206; + NOSYM, // keyCode: 207; + NOSYM, // keyCode: 208; + NOSYM, // keyCode: 209; + NOSYM, // keyCode: 210; + NOSYM, // keyCode: 211; + NOSYM, // keyCode: 212; + NOSYM, // keyCode: 213; + NOSYM, // keyCode: 214; + NOSYM, // keyCode: 215; + NOSYM, // keyCode: 216; + NOSYM, // keyCode: 217; + NOSYM, // keyCode: 218; + NOSYM, // keyCode: 219; + NOSYM, // keyCode: 220; + NOSYM, // keyCode: 221; + NOSYM, // keyCode: 222; + NOSYM, // keyCode: 223; + NOSYM, // keyCode: 224; + NOSYM, // keyCode: 225; + NOSYM, // keyCode: 226; + NOSYM, // keyCode: 227; + NOSYM, // keyCode: 228; + NOSYM, // keyCode: 229; + NOSYM, // keyCode: 230; + NOSYM, // keyCode: 231; + NOSYM, // keyCode: 232; + NOSYM, // keyCode: 233; + NOSYM, // keyCode: 234; + NOSYM, // keyCode: 235; + NOSYM, // keyCode: 236; + NOSYM, // keyCode: 237; + NOSYM, // keyCode: 238; + NOSYM, // keyCode: 239; + NOSYM, // keyCode: 240; + NOSYM, // keyCode: 241; + NOSYM, // keyCode: 242; + NOSYM, // keyCode: 243; + NOSYM, // keyCode: 244; + NOSYM, // keyCode: 245; + NOSYM, // keyCode: 246; + NOSYM, // keyCode: 247; + NOSYM, // keyCode: 248; + NOSYM, // keyCode: 249; + NOSYM, // keyCode: 250; + NOSYM, // keyCode: 251; + NOSYM, // keyCode: 252; + NOSYM, // keyCode: 253; + NOSYM // keyCode: 254; + } +}; + +struct lorie_keymap *lorie_keymaps[] = {&lorie_keymap_ru, &lorie_keymap_il, NULL}; diff --git a/app/src/main/jni/lorie/locale/make.sh b/app/src/main/jni/lorie/locale/make.sh new file mode 100755 index 0000000..f199fa9 --- /dev/null +++ b/app/src/main/jni/lorie/locale/make.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e -x +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +cd ${DIR} +rm -f test generator +gcc -o generator generator.c -lxkbcommon -g -rdynamic +./generator > keymaps.h +gcc -o test test.c -lX11 -g -rdynamic +./test diff --git a/app/src/main/jni/lorie/locale/test.c b/app/src/main/jni/lorie/locale/test.c new file mode 100644 index 0000000..7731537 --- /dev/null +++ b/app/src/main/jni/lorie/locale/test.c @@ -0,0 +1,58 @@ +#include +#include +#include +#include +#include +#include +#include "keymaps.h" +void handler(int sig) { + void *array[10]; + size_t size; + + // get void*'s for all entries on the stack + size = backtrace(array, 10); + + // print out all the frames to stderr + fprintf(stderr, "Error: signal %d:\n", sig); + backtrace_symbols_fd(array, size, STDERR_FILENO); + exit(1); +} + +void getSymLayout1(int keyCode, char* sym) { + int i; + for (i=0; lorie_keymaps[i]; i++) { + if (lorie_keymaps[i]->keysyms[keyCode - KEYCODE_MIN].normal[0] == sym[0]) { + printf("aasdasd\n"); + return; + } + } + printf("lorie_keymaps[i]->keysyms[%d].normal[0] = %c; sym[0] = %c\n", + keyCode + KEYCODE_MIN, + lorie_keymaps[0]->keysyms[keyCode - KEYCODE_MIN].normal[0], + sym[0]); + printf("aqweqweqwe\n"); +} + +char* getSymLayout(int keyCode, char* sym) { + int i, j; + for (i=0; lorie_keymaps[i]; i++) { + for (j=0; j<(KEYCODE_MAX-KEYCODE_MIN); j++) { + if (!strcmp(sym, lorie_keymaps[i]->keysyms[j].normal)) return lorie_keymaps[i]->name; + } + } + for (i=0; lorie_keymaps[i]; i++) { + for (j=0; j<(KEYCODE_MAX-KEYCODE_MIN); j++) { + if (!strcmp(sym, lorie_keymaps[i]->keysyms[j].shift)) return lorie_keymaps[i]->name; + } + } + return "unknown"; +} + +int main(void){ + signal(SIGSEGV, handler); + + char *teststrings[] = {"q", "w", "e", "1", "2", "3", "ф", "ы", "в", "ф", "א", "ת", "ה", NULL}; + for (int i=0; teststrings[i]; i++) { + printf("sym: %s, layout: %s\n", teststrings[i], getSymLayout(0, teststrings[i])); + } +} diff --git a/app/src/main/jni/lorie/main.c b/app/src/main/jni/lorie/main.c index 21fe64f..6776bb0 100644 --- a/app/src/main/jni/lorie/main.c +++ b/app/src/main/jni/lorie/main.c @@ -3,6 +3,7 @@ #include #include #include +#include #include "backend.h" #include "renderer.h" #include "interfaces.h" @@ -184,11 +185,11 @@ static void seat_get_pointer (struct wl_client *client, struct wl_resource *reso static void seat_get_keyboard (struct wl_client *client, struct wl_resource *resource, uint32_t id) { struct wl_resource *keyboard = wl_resource_create (client, &wl_keyboard_interface, 7, id); wl_resource_set_implementation (keyboard, &lorie_keyboard_interface, NULL, NULL); - //get_client(client)->keyboard = keyboard; - //int fd, size; - //backend_get_keymap (&fd, &size); - //wl_keyboard_send_keymap (keyboard, WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1, fd, size); - //close (fd); + get_client(client)->keyboard = keyboard; + int fd, size; + backend_get_keymap (&fd, &size); + wl_keyboard_send_keymap (keyboard, WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1, fd, size); + close (fd); } static struct wl_seat_interface seat_interface = {&seat_get_pointer, &seat_get_keyboard, NO_OP(wl_seat_get_touch_t)}; static void wl_seat_bind (struct wl_client *client, void *data, uint32_t version, uint32_t id) { @@ -243,11 +244,11 @@ static void handle_resize_event (int width, int height) { if (width == c.width && height == c.height) return; glViewport(0, 0, width, height); c.width = width; - c.height = height; + c.height = height; if (c.wl_output) { wl_output_send_mode(c.wl_output, 3, width, height, 60000); wl_output_send_done(c.wl_output); - + if (c.toplevel && c.toplevel->shell_surface) { wl_shell_surface_send_configure(c.toplevel->shell_surface->shell_surface, 0, width, height); wl_shell_surface_send_ping(c.toplevel->shell_surface->shell_surface, 33231); @@ -282,19 +283,29 @@ static void handle_mouse_button_event (int button, int state) { } } static void handle_key_event (int key, int state) { - //if (!c.toplevel || !c.toplevel->client->keyboard) return; - //wl_keyboard_send_key (c.toplevel->client->keyboard, 0, backend_get_timestamp(), key, state); + if (!c.toplevel || !c.toplevel->client->keyboard) return; + wl_keyboard_send_key (c.toplevel->client->keyboard, 0, backend_get_timestamp(), key, state); } static void handle_modifiers_changed (struct modifier_state new_state) { - //if (new_state.depressed == c.modifier_state.depressed && new_state.latched == c.modifier_state.latched && new_state.locked == c.modifier_state.locked && new_state.group == c.modifier_state.group) return; - //c.modifier_state = new_state; - //if (c.toplevel && c.toplevel->client->keyboard) - // wl_keyboard_send_modifiers (c.toplevel->client->keyboard, 0, c.modifier_state.depressed, c.modifier_state.latched, c.modifier_state.locked, c.modifier_state.group); + if (new_state.depressed == c.modifier_state.depressed && new_state.latched == c.modifier_state.latched && new_state.locked == c.modifier_state.locked && new_state.group == c.modifier_state.group) return; + c.modifier_state = new_state; + if (c.toplevel && c.toplevel->client->keyboard) + wl_keyboard_send_modifiers (c.toplevel->client->keyboard, 0, c.modifier_state.depressed, c.modifier_state.latched, c.modifier_state.locked, c.modifier_state.group); +} +static void handle_keymap_changed() { + struct client *client; + int fd, size; + backend_get_keymap (&fd, &size); + wl_list_for_each (client, &c.clients, link) { + if (client && client->keyboard) + wl_keyboard_send_keymap (client->keyboard, WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1, fd, size); + } + close (fd); } static void handle_terminate() { c.running = false; } -static struct callbacks callbacks = {&handle_resize_event, &handle_draw_event, &handle_mouse_motion_event, &handle_mouse_button_event, &handle_key_event, &handle_modifiers_changed, &handle_terminate}; +static struct callbacks callbacks = {&handle_resize_event, &handle_draw_event, &handle_mouse_motion_event, &handle_mouse_button_event, &handle_key_event, &handle_modifiers_changed, &handle_keymap_changed, &handle_terminate}; static void draw (void) { glClearColor (0, 0, 0, 0); diff --git a/app/src/main/jni/prebuilt/Android.mk b/app/src/main/jni/prebuilt/Android.mk index 16b6f9c..e68a244 100644 --- a/app/src/main/jni/prebuilt/Android.mk +++ b/app/src/main/jni/prebuilt/Android.mk @@ -1,18 +1,16 @@ LOCAL_PATH := $(call my-dir) -# libs are prebuilt with termux -include $(CLEAR_VARS) +include $(CLEAR_VARS) LOCAL_MODULE := android-support -LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/lib$(LOCAL_MODULE).so -include $(PREBUILT_SHARED_LIBRARY) +LOCAL_SRC_FILES:= $(TARGET_ARCH_ABI)/libandroid-support.so +include $(PREBUILT_SHARED_LIBRARY) -include $(CLEAR_VARS) +include $(CLEAR_VARS) LOCAL_MODULE := ffi -LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/lib$(LOCAL_MODULE).so -include $(PREBUILT_SHARED_LIBRARY) +LOCAL_SRC_FILES:= $(TARGET_ARCH_ABI)/libffi.so +include $(PREBUILT_SHARED_LIBRARY) -include $(CLEAR_VARS) +include $(CLEAR_VARS) LOCAL_MODULE := wayland-server -LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/lib$(LOCAL_MODULE).so -LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include -include $(PREBUILT_SHARED_LIBRARY) +LOCAL_SRC_FILES:= $(TARGET_ARCH_ABI)/libwayland-server.so +include $(PREBUILT_SHARED_LIBRARY) diff --git a/app/src/main/jni/prebuilt/Android.mk2 b/app/src/main/jni/prebuilt/Android.mk2 new file mode 100644 index 0000000..b7ddc2d --- /dev/null +++ b/app/src/main/jni/prebuilt/Android.mk2 @@ -0,0 +1,19 @@ +LOCAL_PATH := $(call my-dir) + +define ev-prebuilt +include $$(CLEAR_VARS) +LOCAL_MODULE := $(strip $1) +LOCAL_SRC_FILES:= $$(TARGET_ARCH_ABI)/lib$(strip $1).so +include $$(PREBUILT_SHARED_LIBRARY) + +endef + +prebuilt = $(eval $(call ev-prebuilt, $1)) + +# libs are prebuilt with termux +$(info $(call ev-prebuilt, android-support)) +$(info $(call ev-prebuilt, ffi)) +$(info $(call ev-prebuilt, wayland-server)) +$(call prebuilt, android-support) +$(call prebuilt, ffi) +$(call prebuilt, wayland-server) diff --git a/app/src/main/jni/prebuilt/arm64-v8a/libandroid-support.so b/app/src/main/jni/prebuilt/arm64-v8a/libandroid-support.so new file mode 100755 index 0000000000000000000000000000000000000000..76eb0d07e908693329b237968704b4e4032ead60 GIT binary patch literal 207232 zcmc$`34GH=(>N^I2{;LqTwLLB!kIuQ5D0{F#Dp^(wj|rKEL)aj2}lT6NGLZ6cOXCs zz0ZPl&azlWCzgbxhhNryG^B(`-w{*2Tv$M0av$He1 zirk!TeY$IK9P=eD_7(OD!Z3rcp@G&{16&eT5uVkss#pcU20%8bt#6ijDl=cHQ|S;o zP_6${VQ8*V(7qB=r9%DCn8XWjJMqFRm#-{&$IH!E`uZVi)K5_R32HxIxk{DOSNh~c zb3^%%+Wuy_7}`+sm53H4@>;fx#`{lGs7gqw{oXde&E9EazS1WrDyKk3Vs;)P4~pPchlK7&*~ zj7tB$itno8162HSAH6ESZ$CIx{^Qj7c2Mb0tN2mXyolN=ew)hYLL)C?ow{ETh~%sh z=Ee6>>FcQY3+jMA{st8bS=MM#-p-OQ`em>7fwX(6|jE6|(Ym{7c36 zQT0|D>}@Yn`HWNbAOMV#2QuPwsJa4TY2E^(RQyI&PN#|=tm1F0dK;(W^Hls#Z>;HW3KfVQ@s`5!w$2EA#vENjDtg0VE#V4!t`c~DCMa93b(x<8N7*zZk z6(69=@0;)5x5(36r5~iy`|O8N$4yhm_04XOikIKO?^O8|t9I^NM~vsCQ6k?zeTXG*lThbY#Ebs4{GL`VfWjun|KfrIIyFloa9-!-jcjMtO(G${sEa9)_vhvWJfJ z5{#6xq_p7}z+R>Rk4%@d(}2)hLW`6=TpW^xx+*2l_ZvQZ$WSa@8am{C?~|7X4b6gK z5r!W+tlto9uzNV_i4E>ISQ<7OgV6^87FY}&?8e;bLu4M5k}VG%ET#|PrJ-`atbW-F z{uLUNr2+l25e&5<<<;^^Im(AAN1(ZiS^dy_{n!n5BM}C>y>hv;hA0wd0VYeW@%>~m zTZC0}XJzqO+2ZhQjPEx@#s;OkUfTA6+mm1T~r&b_&Z4R?Gv@`;vP6fW3tFt2e2pt;A!rEowlnrM4lz6%DyQWYrX* z=1oYJ#*kwn$9Yj$6DW}nZw49JJW4IR1(u+eRrp3K{pUCB zxE=m^X=8i;2lKm(j4PNqbL`!Sz*|)Y{`g+x%+$SCX5>Yzz0~SxL}at05klqPA})6R z`0JK;ZtOlXv7S!uxVDO|xW^CMYGvegyz?O9+mpXVHZ--ZdOnk>{q@y(|Mynb?PA_-J>&C2xOGdfWG*JbW{a0YwwU#E>>4#*i5G-0Q=yQt@7{Fc+2H2S@Z9N zc%(aDiuJ>*Ay#Q>;fME^E6ESqz2i%V{P6y^ebNuFY-qK^IX}F5lu=qr z{P2piROzq#;eGoRHQn{Y`}Quvm-^w6AMmBSWA_%`#j(3#b9y`tb$2L;*64rMM{Cdc zveGsW+9rA16nG)PYy9A)0PpvMR{(s)4_*VXrlZ1J>AxP}dVX*bz$t$4=K#C?;4c84 z{OY>4zSw~{t@6we(=u#uPKL5 zhW!HYen0pkz*qd>D*$VfedC`D`vc&5e(+6zQ~cn+0e1Vr_W_>d2R{aQjUW6B;QfB^ zOMtI<;SyL|SnGm09#8dRE&sCzN&|*%1&{wTg2ATd>P~42t^i#M&|TJIMI~BY(KMiY zP^E6^i?Mj&i!NBf11;8Ms>icPz_8XOS}XzfOk{~RqRAA%LF~vZskk!g#n{e;4=SdV zDtyOFG(jI$ci3)*1U{&-ApUARQL2Yj`*coMSlZ zcgVAn>WQryuE%s4C5=}`A>2@qMW2gh>dJ6(hGr6V6Y%<}Smt#olLHMIH+qLA1YtoT zJ#k%=o7DkV8OucV8_*sNCE^hqfSuAe!|tVNFbnL*lX0ga3ueNRy(!4hD<~x2fa`y@ z!#D(F2V@uIRLBBk337kP>5vCOM)C}YT%y%0ydPDmQwlNXlA3%S`|pP=-G z`SE!4z#AY3j312FPxrb#omA|pVYPp2PrfxW;8^Py;OoG?o4|g!i*2r00HM5~l2X-Bbh`q!&FFk%8!Z`p~KC;a1iZj=D%rtX6_XI|A}mg{?`s<;Yf{nUz?T>zJ+sX^-T z*vzY7!^Ik`^-nOT>k*R_I{h|e^FT8JHy75NMCoV8WXknY$6T*5iIT&6j_C|-x>=Jc zh&hqhS9*Et7r>qZ{6h@(Y5wH!ERX@s6YcAVru~X8^2X@R5MS=jtbmb0SnfPsAVy}? z2`Wgwhut%P9E0v%N*a8MA2p<#At^2pD=^`ef(L6V_uhn8>FvSa$=DC;JX62o$0EKty(x+9bc#=(JHkLH|5WL`Wg{j|e=d_ep?tfnZZ(S5kRK zU9H2Oy~A~QP>6mxmKpohW6=fYD)@-i82KI0f;}WGg%a&yw0|FH@glT`AHkX-+wtvT zkS{V%W7rA$0{^FLG7Z*k6;|37_U);vSk;jE;aEY0$Ft41XOU0DHZO?s?OkM3U;}q! zRz(*0Yyj53NCrO9z*A`}jx0d?o(CN2e;xK8_B7`-oDad*B7gGAzb5Ojd%0kD$pP3s z5lZ@{r#c7OXTLr1DdA{OAsf?=23u6-;`QaoPHq6d*qB36H?*KD?9<_}?*<}%{$qUU z@wCqAR5=rTpd}XeF|yJ0_v?o1tAgEBnnE>*={W|Cjdwd*iWlK_moq17iKouma~VLbTMTQHyAxGp54^5LjT$C~EP3N-A@7;pG+CG@)m z_BZg}_|w5@19$KM4+Q%i1URHmq$?ylD&N?fMQ~r3uMfbs2*4Yy6Y|+`-c)elvn>!e z@9Gv*E6}B9CFwhBGY3!fb2JcACjkc9Yaz)ZfMsB{6|h5 zY65u}@uaz)oA4Yx#zU)#nEOS+yV~hsuU>4w4;!QJ(VO`In zH3$0D&pZ}2-V`13lUWaKXs@P0Y{T%XN6{EaFTOqU*mgkiF}^kMXai3nKcFikPRD_6 z%Z9#F_-sIx!cso8@UblnbQli)Gor9b=h*zVG12*UkoR#lL(+=_0R?-tQKg;D*w$Fg z@U#r}@O28?%0T_OR#UVX>Omb0^T6hx#%VQSH$$+eH}u%fCKVB`WtTJKcc@Z*i9 z+QL*k=f^}X;HzU#Qv(e@o~i)#2<&O02HLwoe^i=Kne$_@#xU;+oNcB;?1!`e-5b3D zU%~L>18qQ2bFG$aT}vN+Qlkkws?nZGNsBG`U0WyN<595%-=|fDwfl&=(F1!Lgc*L^ zJGpx4t%@*)wtDHE9Bk*^q1eungMo!FZP?C7?XjnB4Hg-M7q^S4gM}A@&+$NPNryFh z1~v@uxg+CXtYnDAJu6_AA~@3=9hE)`ooSYWuQT9qo)5w9)$ap)zKh{$aQcWO9L`{= zTn%$v)oS6%c*Ts)b!xOizFe345v80_;xLOD#?(h(_oQB! zA?X=Oy7WOwadmX&)HgT+Xs%S3%a|m8%_D7OlZRSu(W(#eQ)?&Vr!K=e`iizj zQAOAj@W;NbuwF%a9k%5v?8iGfhMf0nODNt#R?@Ij!T;FxwajYFYwG&iqFN#oEMtR6sY$M zM0G3^4p(z^6Z4~b?TjkOZ=OrV#eMQoj6H4C4j8{T_>*Kwo9PZp9h279YaM(5`Fe*1++VYvnIT^^jU|c%_h=BbSGxm=J>p zhk#Fwg!c+_Z^79a;zQ9a7$5Gxk$*uQ_GaXq^ueP(13Ns9>v~_pgEQi$&RDwlUf{jX z;GZ(U|INA=SODYSn+UN1?h0Wsa9(W!cMv!Dxo6tC2{V8P(#h49UVB7)D;9?s_f(Ua z2Dm0KaFU;aWon@wHv{287ohLBiFr|cKRmNb5N3(34L1B6=(jo0=fa)^z3W=ej4FzN z7~C+p)=ZE;O_)UWI$xnc7nT}wOB-C&3v`!ePahRm84HJVQxw<~%(qIbIA@LUU}e7s zXW*4!Z&x%tO^(4bgK9$^;^SpiUMb#d8_L>_$1>N#I>uG19iBWmi({pw&5J?rF!bOB!fsm&sv^iOuX`ha~$67W%MurHp8^tZ7wi~+W) zAAx7424a?WV9y)Dm+JPlD(Kxfm+Bew$wxYvI}c~K&T#&Xy8-qCbG#0|3Y{5KV-80Z zMdyOg3Lc33*9~oz1Qa`)fF1MTD|$8nTdj&K@iI9T&pcEgvou9^nhxt!1L_dla{7Ud zRfl>VoctR4g6=@SI&?;f3?A?GGq>PA0xqga&z5;n`5@m+@HrWH$AY+KMT%|XF<9$o zpz}i-EvX0j4%Gyk2D*&QY6W07p#$NL85b0s9}T`3`Nxs~um$iTC_Y1+eyR_{?yap0 zXLpEKpK5KTaRvh!QVYgNO>Ht0%8>Nvq^9G8%}pBWT7{&?Cxw6=4+LB~)Zv|Mq>smB zSbM}HZd?s>6X4%;oX#AS-ZJTi3HklFq#L~rPeV}I!|)V`G9AX&!Ff6j!=A>5VW;*3 zFN8y~As@IA?&7+ziBZWxARo*r9e4-B9i<73T?BH*rZ-7KW5A(a0{HZOfJizxJ z(lP22(+%5!+95VYCS%|)LNN=(OhxX;SpkI)&Dc(TW$a!otl_E$_^HR>L%(_MS)|Ns zU-Yd5;L{#yYZd(pV?ET?EZRBQR$6;>Dt=)J0a#C)_}}-?W51(?DZ6U@>OlMqQ_ZX3l-lywpX0LZw9|S7i8WHzT{*Y z^!q0p&w}xTp}p7TNabES5XJ)AymbitEy#AVM2mD)wICLc&EKf4S$ZA(%IX97sWn&e zQ@_LcY~$n_rAQYjhCI^-!X2bS(bo_=Ho|=W02xu7K>P5aDjSkhhw1WB>_GCNGsQJ+ zR1rF7Ao(`J9Fbl21-Y6c{|df+V+h!KB2K1O%cW+)9;|$55|uhWsFp6VQZ0TW>;kF}c4pzDMtcE`<&4@X^Gy`HgILV?|cNEo}$y?jnj#0)Gr}SD-}ik$m?NE%f)%sdxM$ z-+PQ`mDhE67j+rxvA|cq2UB8xY=EI%PvD2%ouKz6$AB-~&x#JiT;SYZ6og|tUySv> zH-T~IV!PWZbNA63RNgw^(OId3fA3or?zuR;1Je~DesJ$>y&X!Qtcb6VXAbBg8k?l( z;fm4+-Np1p`=5ELmsN=>eKr6G-D_YCw6GQda6bry_my~oM;m$y-Q{Cojp0st@4B`| z0>q|*$8a`(0(Pw4@ry=><}Ixex^(I4$+b#R?9k&iZ`G@xw{&%VKL zL-#=peAMd6j#9lg>Xt49%fF$`U0Oq%x3rx$=qS7g$UhJ7R#!v5{xapX=N-*GO@aLx zIz#NkF?h{~MWVh>LH?>>12KR@=a!9td!oUP)`-9g+Ev6(;W(C$k6=CLzw~T-1h#ldgY9e$b#$Lc??e(oe>X0zr2OBF9KN)7_{{@& z`TNbQFkS}S(?5ZAgm+0>bHKK*gN`Mb8!90fZVOcF@VBc-G%vKzK7~8#Y`Bl_g>&B_ zkbiFl!~GaIk0D##2JcfKhMf8Y-nk5dd%-M-zbjFkhxS2m4?_LWp1P&2)CBcU2OZA} z(vm9=W0`qy9vTC8b;N)0_^60E3a^&NO+ROsK zF)J`C9NrgXb`AzS+^vsdi(kV}g!9{{?|9{Yq^(qR3iRVI|8=knB>zP4TgXSIfsA>e z%Z+en&#M4sFqFYizGG;I=9c#kwsU?8R&X77Rf1R<2lGdB9Sn2*4CcBQ=2`-CLVgd; z5tY#1&Np{7XV|Y6q{~^|u^mXCdCxuDM!=f41X`ai;4EuttLkDl=;3qF!)NLFAwS@i zo9qQW90Iv#fiKOk8PWvl<0xM0oj2fCzQ8impuf@vI=O{;+h#-CUT6cKsOaPq=$o&~ zfOK;abOUmo%7^!gNM`ho0DOaG&r{E$Jn)4&un!B^36fO<`vBPnve}iOuN=UoV7jBe zcLXJ1KfZTpi07w%Jnq6cA>eZ|PPHq@un*dSbbC&}Z_Z~e{fvQ*UK7EZ)nh4Z|L=Ppwn3UNEK#63q_`&~aH7v}E zNa_ES{%v%&w>9|T89VFn1O2K_zq+@I{hI`T1N$$Nulq}nry|M<91tDg@#H{1l>a#$ zfWNWo314pvi&mOw5By0& zNiRJI)S6P<(Z9UxSqbe*!b<$xv|en*7BCM_nFoR*l(@ng9xnh!>8`eXf_FTZE_+UR zUcUT$9l?VSOs}bN6?>AgzxTrIUi@`+Z!H`<0m6Fe|GK)e zW--ufu-gYa{#@gr=fJ@_6R~2{e(43!-?@6Jj-W;Kw_m}A6P^lQ*yH*05|@kkmEHE_ zfQFto&&lP1x{{(9kg{TOwD*tN3me{j`T1>6dp_Fp0L=kS3blBU^7Jn~T93De+EDUp zCFdz>_;Vj<+2Cn~aC@VbmM7kJcy`R`sMM7w0&>(QFB*X9UVc8Fs9EooPo?~~#Y#mu z-+FpH2XV}EsS3!b=1Y}Tc~8J<<%W7^j3h5l-u7}1$q3eas(A2XM3SucwpW3=R_zVU zQ4^$`mmn{~=c0+I$=h_tbEirc0pt{F%iNByfQN^Rbp!d;vOHD3l_ch#%@~gJs@u1N?IarRG5S79g@NY{c(C|{*2`tZ-a!Ov+Jx@vyI@u4C zqsZj-Gs@_`e*R^0`EdT&*XpX4Uc(_k#j7(<2J1lPXVj&qPdLMaE%0ZATD z2W-NG37~I8`Fc{QD!yj>3JN`t6gi~|=(BBaTe7!MpUU_-SZRspMGpV#zchInsOV&$ zq{v+=Nf8HW&OcpJ$;%7Swnq!AtHh4tax^%xvNGjUEYBT~)#LdJ<_}}M8bu{7*R&S~ zcK;>;o!(39-3U<6QMkUcsASY$#RIoUNT~isf|YnRNHVx*@P-9oq_2>EHG~I(@*XO$ zVjs!SyLVvvUNu46zf8bOk9eS5K3!k;SMt4OU#sIO(xG^wt`1N`3+}UzgV5qlKKi;! zRPbS6mF4oNGxE_ZWzH))U(LV$U!_;|`w#uz=>L}4y;>i=R};Xgw0tgzN4esC4BseU z$#=Fgg*NAe&Fr>y4(9{w)eYk z@Aucg%f|Wq4WQQYsy(%v{|(1CxLB+-+zS}{8)y||Lmf`e#S5a_*IsU1Z>cDj`CmLxx0i6(gk6a~ z)EI?e&+|*qAs9jp<$q2c!2OhLdd2vXQjIojevRDl8iatdx9{RIg&4jtfhcQ8Re&1U zB@cE;siO032eqaYp(S`-_)d4P7xxeT6lQb+ji$w-QDDG~UP`~GcSM8;#iHxN2l3^; z31EaS^KD)gMmQy@aQS3Z_=T@sy#@J66|FS+9NL@wRQhCix1%O_^MS-tQZANTe5w4K zbT3ZtEfj4*B=ABYvA0qTe#*~B=T<-sH6RY=?!}JzXrY9666Hw%#RJz@0S>j4Yowg) zzo-ZbeT{Mo_{*1f4#Ub(-bxEFx}4@{EM;ZhX#EH99eBC(X8IPH93YE*4LDY^64i5( zeHdREiZqGhCCm>Jys1LTfK|HdtreGg%U8TSCzU*F(dPD)kK^$;wtoG!-O(|F<{cd#);cJusJb4eHAct~LebrA@0E~<5<3CFJ z*Vp|m^LhEk?3yy?a=(PF?P+o;tWhys}jl54M;aqSkZ4krZQCmsef>sRsMgPnZ8h z@$YcC3c)L{rP7zZX-vgx!<$75(55yAtrDECa>}iwoGjNbHkGPYUEY|JgSD8hEXM~P zFR}#A)jnHO8k8 z1Br8d9o{U9lgpHYzZ!8~mPa0iu!iy@CI3E`-<+O*inabyWZ#Q@_&Jj#T4!_wu9o=PH;a+F6jJp@5tV1Ty7|_bA0A!W;>nr9P81=-ly{JG*ukeS;CE$Wu z5E4?(Tdpj~J))GXcv2tJS7rIl{<0$Nzv|oD-S_;*^^XR2@OOOW_j2fWbjZh`2s#xq z(ku>H16d0>0CFJY3XpY>gCGY(j)fctnTPEA;bCViI;t3p)?+x{JORf8+u?YXUO3)t zG}MP_aczM%I&7^rItU9OLPG!H{jX{8}OjHP_BY9#uE*H3dOKgtR-&7a_|;-IyMUT zU=wk(W)eObpMp=tr{NaObUY8Afzz6qxJ{Ff&%)>6zu_O?cFkPep(()U;UD6HWuJ{yk>AbsTmTVsTmqiXokg8n&I(T z@gw5jkDm~qtjUQtXzs^9h#$XUbe;SSvo_4$&`(pep}*!}Xyax-gf?sTzILQ`nRXjC zPkU0kSbIvlUVBEnO8c{RsrIgRwf3HNf%cL1g!Zhm-?N8$Z|m7Zy|;N?Kmhs=einIP z=CLV|XB{Ylvgp_>%xdZ03<9$ESB2guiAfq3YyaB6k=Ufy;F;J=EYA<~Bl;aE{MXLV zWkhy=V0dVxl!kt|jD0^s%1Xe{!`%!_EzGXJFX*0q%rWE#Wtazqr!}B*HJi2lP*WzaJ(IYnRvp zL5XP@SrYUs0e%_7F#rA0uytV&9cojD>aD^IGh?v}EkbHx8)J0wShQPLfAvq)k=U`YTPtJp;g8#$u-pKw z7l5HDTf@LLU%=s-VbK&fgzt}Z*f%MuJVr_3KeF6 zq7S0S`Xs}u|rkIQ(YKQQk^5170sw-OP0Y*}-OR;!R zrGw8hK*oAAd|F6EB2?;1bgocm3Xu}r>|3JCJNVtuu3@RI!@56<4@5ymzym55xPkJlr~>Z{qpv2xGe&TO&*zpFWHrItL|2lHF>K zh@?{EwnduzwtEz5v2|~F#$vJdJ7Z<~eSC&?RzA7FrY=MqBtk%_0Tu!tIC{*-eKiF{ zkACpT?T0(3+50aY{Jnj^it!cLv^BH4v+3)XPh$rbefB+@@%f$#4ljc(huhQ|yzTt^ zwTA4xvAx#NJx?Fk8n!Q}t<&3D&J^toWT5boLNt7S2%l`yD8^!&!75;d^?3Wc-_}3T;o(oxiH@beuRYPJ?BUfD$yi_m!Y2aw2+)Eu zpzHRS5eDxqRz*rC3q3o+=eNUtPoQH8=%YVS$`cC zdbl=rf%rDkA-Al6rB#}kSO4QmaY6rJ*1&K#37ZxSx4ze`Q5|-xl3tlLfW@Lh2fvwD z%o;E?)dg+Y63b4{YJ>j&Nzs_0`tt14q;2_#v*M!V@Bf;4cKOIl6RWQnb+y2@V)UP@ z7p)j`Ys=XcWAE&%zH;1yQ?`}kpIlzFa>Da_XIJKU@EWUfwc*UFi52TD7LfJiP6|ml zw`y{glp3q2L{QA?sny+!S5K=o{M_p4`bjm`09qrz(yeAC7*`DXT^Cb!C2eu zmR*2uZr3pQUhznndDfP|sJtC`MeKbw0XE=IYrg+K50{G2E&YT>F98Fp zX8&$cgtm0r89KjGyPrb4QdM6Gy~H}7&D^%YhIRO9K?*hwVyPAvLXn_`6fp0(Rsm^; z;HAQQG`zL6FLEg15K}sQ-t1xG(9@N&8(i9V*-dHjggrDe8(P!rjbI?H`S1emFMe^yDBKoNUUb>w`4>$ zHodTFF*|76wVxfszH4~a`9bGuOXLp&eMg-CG)gN%xA7AiTp4DmHnQBNQ)|y3U1QOO z%%kNS@rXFXIe*N<>-DoR0uGpJI$7ISdsPxOQ9ZZcaqjI0tSIcWosXjiDQ7F}rwX}) zzq-6o^*+1)0`|Kf{qgHi469xn+mE+^G0JqmXDLFr^%EM7T1eC7E)Qus6wBAVG7ntQ zbd45pfLG2#=M6&+Bi<{?FTA$U`F>pSqKeUTi?tbFobPWL@=efyWy6oB4p{#F#Tf%ujQRWU zpN8?zo;F@JG5EdM)l;L!q~WIT8k{B*&s!qJhy!a$e8+1=**%Hrq0V?DcNplplK` zInin6za^(-Px=|FSI$XORXHm>ok65{<(x3$|6WdMSnF2ESgRKsCRNmDW0Q0Z7q@`e zyv)!!utw76;^6p=cPE9kl#4qDg!d6Xjw|RMmA>wc2k1R*@qqj12P_-*?C|tzcgIrn((xEVMTdK?!tn4SRouLlHg47AIOOZgtsov{V(K1 z69_Cta&~XA&nIWi^mRTt)70rr2!n|#a(0i3Tl2=03%U<909`M6UBNqdb2Sx1=K_f2 z#5BeLW1z8uv5GO=Sly^MMjK;{^^J{;amIIz&5bRMt&EArw#E)dgR!$Q#n{!@-Pp@W z8m&f~ku^GuZlh$Bjs1)RjA_P!#th>i<6z?u<51&pW43XG@qOb+<0#{3;~3*u<2d7Z zV~#P`IMF!CIN3PGIMq1aIMX=SxX`%BxWu^3xZJqHxYk%?++^Hr++y5n+;05JxWl;9 zxZAkL_>J+9@tE<1@ucxb<1fZvjTek1#w*4@jDH$$82>WyGnN@& z8Znc`q%{SY0!TF6ebv1P}^)U4`rJ8z~dYk%~D3irRn?#e_)Zdh58feNe4K@ui zWtxVYMwmvLMwv#N#+b&Na!nIWlT1@h(@fJ%GflHhb4+th^GqL_7MK>A7MqrsmYSBC zR+v_rR-4wC)|oyreP-Hh+G6^`^rdO5X}jqw(+<;4(=OB3rroAJrf*EerhTUUrteJ$ zO@~Z}O-D_~Oh1@@G@Um6WIAK|*>v9YtEt3v#q_)Bn(0r|Ez@n&UDJKjL(?PEW78AU zQ`2)(ndybeW5NiW&=6W8fCwZi5ETg>5kv$NA;ddGC=o_P5LJn4M0KJTQHQ8YL=*Lh z`a}bwG0~K0PP8Ce5(z{rqBW67v?1CONkluMJ<*X!CJaPpB8BKmbR)VGsYEZLH_?|M z2$G-(GhrcU!bUKJop2Bw;UaiKAVk7VNQ6xECk7B{L^?5$$RGw2Lx`coFd~x}PGk|; z#0X*(F`5`dj3dSq6NyR0WMT?2jhIf%AZ8Nz#4KVC@c}WHC?Mt$9}@G41;j#P5wVz9 zLM$adB9;-$i50|3VimEPSVOEM))PgN<1Z=5oN>+;w9lB zFcK#d9!b z9$BAkKsF>Bk&Ve%GLCFQHYMZ9X5_nMbFu~5l1w05k*&!@vJKgmOd{Kn?~(1v4rE8N z6PZHxAbXL0NF!+?36dhsq>W@qJLw=f(na#5K#HV9%4C0X0GUn>B!`m2$uZ;vGKZW@ zP9dj})5)1+J~@Z{fSgMfkROus$;ISSayhwzTuH7b*OKeW4dh0$kSroUBR?m%k~_$q zQVKn zhEyY}G1Y{MrWdoENV72hx&jjpypBYsRh(RY7w=VT0$+QmQm}dkE!+42I_Na6SbMzN^PUI zQ(sX#sGZa<>T7B@wTCLE_EGz(Z>jI7@2Nx75$YKA19hA_L7k#bQ$JB>sI%00>KE!) z>H_r}b&)EeE>l;itJF2>59&|qI(37(N!_AuQ-4u^Q+KF))P3p!^^kf*J*J*erPOn( zjCw)AA5Y9$bAY*`ImjGr4l!3Uzhe$FhnpkJk>(oaTISm3x@Nt(p1Fa!p}Da+)*NSU zYK}KIGdDN4Ft;=(m|K}!n-k4#%x%p{<__kLW`jA!+|}IO+}qs8+}BK)EoR1SH#^Ln zxt}@BJkUJIJlH(k{Jwd#d8~PydAxaoIoCYVJlQN?d4+kEd9`_+d4svg{E7Kf^JnHw=FR3U<}b`&nzx#_nZGjcFz+<)GVeC; zF@Iw&HXks5YyQssz4@T|xcP+nr1?klY4aKLFXjv8-^>@ym(5qqf0`efpP65pJ!Z_J zu>@KwT0$(5mKv6tmMBYYOFc^iOG8T&OAAXYOB+jD%X^lNmSjt3ONyndrJJRPCDqc$ z($`|Nm@K4)wQv@fg|`S6(IQ#;Sq50rEdwnXmO+-mmLZm*mSL7`%V^6O%LGe~Wuj%W zWvXSmCC@U$GSf2KQegSevdFU7vdpr=veL53vf8r7^0DP}%Vx_LmTi{pmai;3ExRnc zE#FuUSiZ9yu^hGhY&mE7)ly=)Y`J2&YWdxA%W~Ut$8y(l&+^dn$nx0o#8PT`YI$yX zX~C=-tJWG|4Yca4!PXFKC2M8tJJxV(gte-*nzg#MhP9?O%39l6$6D8_x5ii-S{qqo zt#Q_-)@IfOYinzwwT(5&+Rpl(wY{~Y)nHArcC+@d_O$l4_ObT08m%TPX{D@YtHo-w zGFH2lwK}Yv)n(gbc>t^d0 z)~(j<)*aSe*4@^<)?({E>wfD2>-W}!)38YobPKu_ok+K(lj!&84s=Jl z6K$Y7(CfoT z>CN;O`V0C?dMmw+-cIkJchbA)ujxJXH}qb*nBGV4rw`EI(%;eF(+BB8^kMoaeT@Er zK2D#YPtvF8AL-Nd8Tx1X9DSa?KwqV=(SOi?(%0!5^iBFU{WpDwzE3}(AJb3hQu;Yv zMq@Vkv#c%9R?!w>t7NNed&gGA7HSK#h1()*k+!O~YPRaO8n&9YC|fOC9a~*nv@OO~ z&(^@!(ALP-*w)n6(w1OrZA-MZv9+}&**e%d+LCRZZCz|#ZQX3$Z9Q$Nw%#_%X0};u zRvT?&Y<8R5CfWMg2G|DKhS-MLGHt_c*|rh3QMS>xF}Crx3AP+tu5F@ix-HK(!#2}4 z+cwAcfo-m>z&78uz_!q~$hO$F#J1G7%(mRN!nV@(v2CNR$o8pilWntYi|tF>HrsaF zSGJwDUAC`nyKQ@H-`Murif#LB-`c*jeQ!HxJ7ha-J7PO#`@we7cFK0z_OtD*?N{3c z+eO=D+ZEeY+cn!Cwm)sxZ8vN;ZMST>K zY-R-WJ~NUT#f)agFk_i<%y=e;nZ!(CrZLl*JZ2`7&&*=GoM+&EMyij zinc2F&{JQnGH-4^9l1Q^BMCwvx(WvY+=4&zGSvC+nDXlSIiD( zC$o$Bn%TpA!|Y{>nf=TG=3C}_<{)#3Im{ekjxxuXADH9J3Faj8BXgShiTRm1%ba7* zGrusuG8dTNn2XFMri8i7Tw$&<*O)(;Kbh;y4dy2E7juWX$J}QgGLM)iOeyn>dCrtE zFPN8%hr#T)U26}tSFr2sLH1yKh`o~i9eb!f%pPu!uvfR&u-CHJvDdXn+hgqY?Dg%9 z?6LNEdkcGly_G%D-p1bE-qGI4o@_VRyV$$gyW4x&``G*12|Hys+wFFT-D&6SE<0}* z?UG%#_qPwQ!~fOAKF|)oTeT0i53vum53^_5hucTkN7~2O$J)o)C)jiBx%R2{8TNep zEc+b$2ll!40{eXX0{de7Qu{~tW%lLvmG)Kk)%G>^_4W<+Pwk)CH`}+^zqD_)Z?kW= ze`Vic-(}xz-(%lvFShTq@3$YYe{28Fe$al%e%OA@{)7Fv{e=CD{b&1m`>*zk_Dl8> z`(^tT`|tKY?0?#C*l*fz+5fWtZNFo`Yrki|Z+~EaXn$mXY=2@ewLi0$*#13YMutV8lY$iLL&0=bq?JB^*r=CL!_nQT5gi=EBRVLxE!vIXpi?0j|syO3SPE@qdo%h=`Y z3U(#Cie1gFVb`+j*pJ!u>;`rtTgZOGe#(Bve$H-UH?v#Vt?YL8D|RQli~XA2&F*3M zvc>EH_FMKl_Ivgqdx$;49%X-EkFzJ(lk6$>G<$|U%bsU{VSi^1gJ z_Bwl$z0Ll`{>|QD@3QyV2kb-k5&M{Z!j`g6*=Ou?wv2tjzGOWt=75i399lMSBLLFg_a7TnA(oxk>!%@=_<*4PT?Wp6Z>(D!*9Wjo2j{1%U zj)sm#j>e8yN1UUHqp2g_(aiC#qq(Dnqot#jBhk^uk>qISc+b(^(ZSKt(aDkQ=ih{G)IPGuw#g0sAISz+ws0* zq+^t0v}3GeoMVC`$1%w<%`ww4+cC#6*HPe@=a}zU=ve94;MnLWbbRXg%<;KnlVgkH z3&&TEU5>9EyB)=jeU1Z;Lyp6aBaWkv9~{RWCmg37KRM1ges-L7oO7Ia{Nni4alujI zxZ=3#_`~t1?IqN$0&S+CS=94Cf%{VCOLB zaA%e?+d0DdzH_8=lyj_eoO8T$f-~1S**V2I)j7>M-8sWK)0yv_$8Im2(2G$Qn|jIkuz}wM{*Qr<}93*qd6OA z=U5JY2g323z=@ojlQ@~{$Mxq1aB18?ZZJ258^&dF!?`SO1ou8Sk{iX1=EiVixpCZh zZUUFX<#H3b$=nofDmRUr&gF44xS3o&H;bFi&EY=a=5htxJnlnoKDU5d$SvX)b4$68 zxMkc5ZY8&hTg|QE)^h8(kGb{S25uu)$Q5y)aG!FYai4RWxXs)a?hEcqZY#Hq+s^Ia zc5=J8uesga9_|}%FIUX%R})uLSG=patA#7U)ymb{mFQ~YYUg^- z)yb9YGPpXsy12T#dboPJQeC}VyMwiJ&xJVb}GP`J(&BeIvF4pCA!4Gg;f=hDA zu70lmt^uwzSGsGUE5kL&HP|)8HPkiCmFXJc8tEGCn&6t~n&g`7n(E4P&2Y_f&34Uk z&2uewedJp1TJ2inTI*Wp+UP2D6}difed_w$waK;FwZ-*?YpZLQ>uc9;*B;kiSFvlK zYrpG&>s!}%uJ2t3U58vpUB_HMxQ@F{xK6r$a-DIVb)9pacm3kJ;QGyV(RImH;=1g* z;=1bk-F40NhwD$*4c9H#ZP#C}zg>4+cU|{f_gxQMk6fj$r>^I&GS>@NAYXy6$OrM2 z_{#h{d?+8zNAlJ9ntT*ro3F#yUd@A3I@6Gq&`|?KK#FM;*xAQFT;GMjS=Xrsb_@K zAK{Pk$NAIzPy8AF7yeiN0)LUe#9!gB^4Iu3`0M-){x*Myzsuj}AMg+P$NUriDgTTw z<0}d}AxH=jDhZ)Nm=GaU7itJmLR~>G)D!9p4TN~1neeXALTD)@2(5(HLK~s2kR-Gd z-V-_sodko>Rp=&k7kUUig;b%J&_^%|CV>>pf<>SOo4^PT!6~=|UJwLP=qL0Sh6tI$ za3Nb5A&e9z2)V*UVUjRam?lgY@`RZ}zA#7lK$t5O2pHh!`-KC-x57c;kZ@QyCj1~A7fuK# zg&&2}!cW4_!dckCaNO&TY3eSZy;f3&0@CX`FD+Y*x zVns1n3=u1dp<D8`C$ViPf5Y$m=dHWyon zEyV<}mDpNL6x)bx#U!zv_@3Ba>>zd&JBbFdvzQ`w5xa`r#O`7bF;(m>_7zPcAyT4Q zw1~856B*GivZ6zDiY}2C1yK|wQ5O4&{l#=~pqL>J5(kSz#GzuQI9$vUv&HwtQQ~NE zj5t;tCyo~u1KkzfLGB25q`RiOw!4nIt~=UY-`&XF*d6PRb2oK2b2oRl zaJO_PxD(xN+)3_s?)Tj7-5uO1?yl}`?(XhhZj+mETivwV=C-?8x6{qJU2fhjxJ9?y zExY@<)7+Wv;qGkr2=_?$DEAomSoe7MME4~3WcO6}H1~9Oo;%+?%RSpY$NhnOu6w?F ziF=uQxqF3st$V$DgS*gO;zq@a`Z@KTf@4FwlOWjZ1&)m=5n52~gq(G^H6fA{Em88m26)98- zmm;J{sj5_6sv*^sYDLrm9C7C6QL`yb_k?ayHIV7jVNrEIx{iOaX_}NT&6WzJ52g9i0%?)7L|Q6+BrTJcODm+6(rRg)v|jo| z+9Yj}zL2&_+ohe-*U}zouT(7UllDsor0=AI(jn=HbW}Pfosv#VKS^h#v(h=~y!4Co zt8_v7O}Zpqk$#u1Nq5g<)x+gu59!XE6r_wX&xl|^-l(ceyTtTiV z>*OFgSgtI;BZtZ1a#gvSTwSgq*Oa5=IP0} z$eZLX@)z=#@>Y4fyi@*K-Xnh_@0It-2jp+%@8yH?A^EU;L_R7XlTXN}fh9&R9~t;SPTpR1Hs~839uws3M>Pb16l?}I2U~)zKmZH_+k)-D zPGDECJJEJ{#1Iz>`fs?^0;52YLI0MWEXMs83 z9B>|(2j+tdz(wFva2dD)Tm`NM*MS?rP2d)A8@LnP1?~p_1NVS?!F}L<@E~{yJPIBI zkAo+{bKrUK0(cR;0$vAifVaTg;2rQj_yBweJ^~+uPr#?(GtdN|gN5KL@HO}e{0x2p zzk)x&pWtus5BL`>0)3!A6bKcEN|OIjfWDTBq$k5fk5cr7jy`NaL5gLAR1yI7UCfZk|7n+ARS7B(xHh^ zCNvqE0!@RaLo=W(C>xpui3>|@vLC2vJ&`IbNbQ(GXorTUp z=b;PGMd%WA8M*>pg|0!@p&QUm=oWMvx&z&X?m_pVhtN~#8Du~vQ~*7P3Ly(}pcl|9 z=r!~PdJDaS-a{Xuuh2K>2lNa24gH1u;bL$A90(VOOTZ=Ja&QH>B3v1+0#}7=z_sAo za2>cF+yD-OgW(Xk5gZD;;3jZ0xHSyGZQ*usN4OK*8SVmigS*2$;a+ebxIa7q9t01C zhruJ@XgC%g36F-yz;W zPl2bwGvJwUHarW?foH>W;JNTTI3HdJFNT-HE8vyz8h9PN5#9oCgLlHa;Q!zQ@Im+x zd>B3gABB&>$KjLk8Tc%G4n7ZGfG@(A;LGq8_$qt{z6;-jAHmOH6MhaC!Zz%{FW^`3 zYxphv4*mpxg}=ey;UDl%_!s;e{sR}m|E4xb01}9lK*}SPkSa(uq&iXysg2Y@>LT@! z21r9B2nj(NA)$y1X^b>Mnj$TbmPjk4HPQwFkT9e@(gEp+bVa%$y^ul3Fk}Q0fkY#t zkkQB(Bn}yi#3SR7@kj!ah+v2t@gM|3A{0U+48kJ(KMq+&6huWdL`S?x8j_A=Ad`@( z$TVa+G6Ts%W+K_hEF>41jm$yjA$dqXvH)3#EJ79|OOU0=GGsZj0$GWyM%Ex}k&VbE zWHYh_*@o;yb|L>Edy##}e&hgh5IKY#Mvfpykz>dS

rmIfI-<&LQWKi^yf)<)}~b(4@CAtb-jjlo0qU+F&=q7Xvx((fq?m%~;yU{)9UUWZt06mBvMvtIJ z(PQXw^dx!;J&m40&!Xqh^XLWi5_$!_hTcGLqPNgH=w0+4dLMm&K13g*Ptd2Ri58&G z(L&ThZPYpV2SqSM(eD9sPm+M1P^b(LZPr>WBGb#jpS@ z5G#(Az)E7Ju+msrtQ=MztAJI+Dq)qeDp*yl8de>vfz`(9V0E#2SbeMk7KDXhjj&M6 zg*C>SV9l@=SWB!G)*1t_wpcr?J=PKHgmuQcU|q3pSa+-!)*I`C^~L&O1F(VEU~C9B z6dQ&O$3|e`SOgY@MPo5oEH)Awg^k9>V&ky!SOS)aC1J@}3YLmN7>pqpieVUzxiJq$ zU?fIi48~#{#$y5|ViKlcDyCyzEDf88Wnh`uWNZpH6`O`l$7Wzz*i0-N%faSgbFq0? z9+r)3TaK;7R$;5LHP~8g9kw3ZfNjFIV%xCo*bZzbwhP;h{fF(r z_G0_6{n!EQAa)2lj2*#_V#l!K*a_?;b_zRD4!LDN0u?U>#yN%t!?qc__``82QA@&G+j6K1gV$U!GGqD2fIaY{Sn2kBu3+yHK3VV&c!QNu; zu=m&p>?8IG`;2|TzGC07@7NFQC-w{bjs3y?Vnvt_^TYk|Vt4=^h!@98;3e@=cxk*0 zUKTHhm&YsM74b@VWxNVr6|aU@$7|p<@mhFoybfL$uZP#i8{iFb7v30eiZ{cX<1O%( zcq_a$-UbKoFuWb!9`As6#5?2N@a}jIycgaZ?}PWn`{M)f!T3;o7(N0I$0P7aJPMD- zWAIpfBt8lsjgP^{;_>)6d_10jC*n!?1RTLp9LL?b2Pbe6r*Il)a2Drq9v5&Cmv9Bw zaW9^Rr{k0HY4}Wh7M_FW;7vGN`zz^bw@Wc2K{3w1LKZT#h&*JCs^Y{h)B7PaaieJZX z;P>%|_+$JD{uFrQs3xIs7M zhTXW^?e@3{H|eI`teba>Zpp2 z)78_<)7#V6)88}1Gu#vD8R;428SNS4iT8~6Bzh)zl0B*alCZD`@!%e}$K#)GPj>e=Dh>Dlf1&$HLF&vU?Y&~wOh*mJ~l)N{gf(sRml-gCio(R0Of)pN~r-E-4( z%X8av$8*o~(DTUi*z?R&;Cb$`JdWpu=cVVB=dI_x=Y!{y=Zoj7=bPt;=a=WNr^w^; z_!0g@F(QBnBuWq^iBd#qqAXF7s6tdFsuQ({+C*KV9?^hkNQ4lLi6%r-qB+r$XiWe_ z7}1XCKy)NJ5nYIGM0cVG(Ua&!^d|ZceTf0YKw=Ovm>5C~C592hi3lQ+h$5nik;G^s zju=afBgPX6L=rK9NG4K5c`P(#9`tnaf~=loFYyWXNa@JdEx?bk+@7;A+8eFiJQb- z;y&?!ctkuVo)FIohj>N2Cf*QliFd?%;sf!K_(Xgrz7pSv@5B${7xA0;L;NL*2p{1` z`jY`sY(%=q z#$*$+DcO>2O#)>>_m1ZyO3SUZe(||2ic44P4*%ClKsg3NuBhPX=FM%k<1`7$;sptaw<84%p!BhTyi!!hn!2!BlF07az43$Tu3e=7n4iL zW#n>l1-Xh`O|Bu=lIzF~mjAb*m-$lv52@-JCL`ba;@ zpDIQLP=Qo&ssvS%Dn*s1%1~vga#VS$0#%W!L{*`xQq`#HR1K;oRg0=k)uZZD4XB1x z5EV>?P@$BIYD_huno`ZE=2Q!+CDn>*O|_u_DvWANwWHco9jQ)KXR0gJjp|PIpn6ih zsNPf`sxQ@#>Q4=z22z8l!PF3HC^d{4L4{M1R1_6W#Za--NNN-{ni@mJQDdoiY8*A5 zN~Dsg2~;wbLZwn51yL}CP$-2_1VvK}#Znw4QZl7bDy35ssSGNUnnX>Zrc%?WENUi| zP32Iz)NE=lHJ@5QEut1v%c$kl3Th>_ids#rq1ICCsP)taY9qCY+ClB2{-gF#d#Que zQR*0VnmR+BrOr_os7usk>I!w0x<*~6ZcsO=Thwjp4t1BhM?It-Q%|U;ltGzP0ri}+ zs8`fG>I3zW`b2%EzEEGOZ`2R!7xkO^Llsdz%I{yxqZl1P2hzpq5_Czr6kV1sN0+B7 z&=u**bQQW9U6Za$*Q4vx4d{k+5FJd1(2eL&+C?{^o6^nb=5!0XCEbc{O}C}n(e3FD zbSJtq-G%N-ccZ)0J?NfvFS<9~hwe-Fqx;hX=|S{hdI&v?9zjRYk#rOtO~=r&^hkOX zJ(?av$I)ZyczQgYNGH(~=wv#D25FSWXqnnx;9Lrv+N1Wm=^*+DoU=>GVW8 zgU+NU(^KfF^fY=pokh>2v*}rME0|V9`UHKFK24vY&(i1U z^YjJ!B7KRzOkbg|(bwr4^iBE}eV4vR-=`nY59vqrWBLjGlzv8=bOHUGE~IVx1^tqK zMZc!s&~NGY^auJQ{fYief1$t9-{|l35BeAVoBl)prHg1E?Z@~t#h3slkSWfTWJ)om znKDdSrW{kAslZfZDlwIrDojc!4FO z8Oe-h#xP@4l;+B!^{!pD07TC&YWS+GUu2J%thuBbD6ou++c1ox0yT4UFJUX zka@(MEj(9vzVJff#llO4mkX~HUM;*m>%upMZwucQzAyYx__6R);pf6Hg(ewM#g%nGmqt>RV*tE5%RDs7dq%39^D@>T__qE*SN zY*n$UTGg!TRt>ABRm-Yv)v@YY^{o0<1FNAGWCdFxRwFCaa#?q&8-$zORJUD+G=9~R+!b+YG<{#I#?a8 zPF82Di`CWYW_7oESUs&?R&T41)z|80^|uCC1Fb>UU~7mq)EZ_Dw?vL;x`R*IEsffi)J7Gj|mX5p6G@>qmLT9idw zjKx}<#an_UT9PGOilthbrCVMr%}Tc>S{YWRHOZQ6QNeUD6U+v4!F;d~ECx%#axmn; z4&tB==HSk>(CMKwLbF0=hGvJ(3e5@44V@i2Cv7%7yZw zLZ}!jh038ys2Zw;>Y?7yw9xd>iJ=*xnW2+HCx=c6of?`HIw3SUG$k}O6bywz;ZP(L z4c!vtae~?gw+(6AsBLIlSKG#Io3w4(wpm-kA)Tb)3Bk$1DZ#11U@#O62P45~Fcypl zQx5G+v8Gzntm)PaE6bW`Wm~hX94ptFZOyUfTJx+tE8m)LEwC0^i>$@g5^Jfo%vx@( zuvS{Dtku>UYpu1;T5oNzHd>pk&DIuctF_JAZtbvkTDz>>)_>L>Yp=D>+HW1O4qAt- z!`2b&sCCRbZk@1BTBoej)*0)pbX&AM*gux?tntlQQd>#lXr zx^F$O9$JsA$JP_;srAeJx{S*2uUvXcFe}YjdUuj<%Us+!{UwL1J zf2wXJUu9nvUsYcvUu|C{xqOX%O?*v# z&3w&$EqpC~t$eM0ZG3<)%-8lGLEhfi!Pn8($=BJ}#n;u>&DY)6!`Jg465QL@$Jf`_ z&)45Kz&Fr0$T!$G#5dG8%s1RO!WZs~@J0Hfe9^ubU#xGWZz(!9`e1#uK3SiwFVzbi zzg^4@umkPlb_u(rUCJ(Pm$A#*su5H(`>)Q3~ z`gQ}mp&eug+aY!%JJfdBjqN6OQ@fen+-_mFv|HJ&?KU=GhuLlIc6NKagWb{YWOuf^ z*j?>zc6Ymn-P7)6_qO}keeHgBe|v!42j~m*1Ns94fPuguU@$NQ7zzvnh65vja3BJR z1fqawAO?s9MgpUN(ZCoW4j2o>1LJ`4Kmw2mBmonEWFQ4d1wa4-U;qJ700VHq4R`P24bTBEkOrg!6M+mM6PN@{2BrX0foZ^WU{xrGJ<1+!kFn$Iv39&Y&K_?k*ok(MJ;6@4Q|we5v>_X|5gWBJ8@JuI$0lsjrfk|~ zY}V#%-WF`pmTcKpY}M9m-S*mPcDg;$&agA>N%mxWiaphyW>2?g*je^WJKLUR=h(US zYsUSuz}m)J|~W%hD=g}u^VWv{l^*lX>Tz$#!hum)HQtOM2q z8-R_#CSWtL1=tE~1GWP@fStfDU^nm|um{)+>;v`#2Y`dXA>c4@1UL#D1C9eHfRn%} z;52XsI18Ku&I1>Ki@+t|GH?aB3S0xO12=%1z%Af5a0j>x+ym|d4}gcjBj7Rc1b7NO z0}Q|f3V`Q8Az%SE-~caxm%uCFHSh*_3%mo~10R5oz$f4{@CEn^d;@gH>!dm9&O|4} z$#f<;>+JRR279Bu$=+;lvA5dW?Ctgrd#An2-fjP9@3HsV`|SPp0sEkR$UbZzv5(rv z?Bn(c`=ou!K5d_|&)Vng^Y#V%qJ7D}Y+tdj+Slys_6_@{eapUW-?8u7_w4)j1N))< z$bM`;v7g${Y{NF~0{gjLXj`^zJN66vrTxl&ZNIVK+VAZ5_6Pf;{mK4pf3d&X-|X-9 z5BsP6%l>WuvH#jdw$Ju+{GDP>fD`BxcV-97378u&@1LTSA29!)ue9)=tF-u^x3n~1 zS-|pt&eF<&)d6b)*8WqM)(30|*cdR`nc_@!ra9A{8BUfn)7crYD`0oPe*t>}_6F?x zCqx|xI2dp!;Bdf^fTID&0*(iq2sjmRI^aye*?@Ba=L0STWIMB*94FVA?aXoJIvt8S z7Ii7=TGXqkcTta`o<)6%`WE#o>R&X^$#c3Dbua2v)VV0EDBo#U)V^rGv%p#CEOHh* zOPr<7GH1C{!YS#La!Na8oU%?ir@T|aspwR4Dmzu2s!lbhx>Lic>C|#+J9V78PCci- z)4*xy1UbP@h||akbzDwkr-{?lY34L{S~xA8R!(cDjRQDgPFts))86UebaXm7ot-XD zSErlP-Ra@#dVRtc;cSS_%6pnqVEz?y-z0&54> z39K7fFR*@KgTRLWY9PUZA%TqoLjzrbjRTtmHVteR*gUXBV9UT(fvp4E1g>yaI;))3 z&KhT}v(8!XY;ZO@o1D$g7H6xo%>e?#0^0_*3v3_QAuuYiV_>Ji&VgM5y9Ra(>>k)7 zuxDVez}|s<0{aH`3+x{_AaG#dpuoX_Ljs2e4htL}I3h4SFd}ffv%}fx>~eNH|2cb{ zz0N*ozjMGj=p1q`7Q0mJL9wbq)q`9?9fFDnmk!Pko*%p*cwun$kcJ_RLZU;U5IE#m zNTe&u743>~#kxkiM!812#<=2KV_osCajx;M1XrRf$u+^1>`HN^xB@G^a^<+@y5_m^T!&pp zTm`P@u0ogPD&06QqzX_UXaF2`jyOl1W6p8sgmcn4<(ziTIAE|3m-B{(t;l`9&2w=k)g~GT z+F^CV>W0+|s~^@NtYKJCSa4WKSfjAeFjrXPuqI(m! z?mG9J`_2RBq4UUj>^yOvI?o)#F`Zx_1ZV_=0xqC2&;)1-Gy_(*oz*U<-I8`o+bwIi zvfb%+SKHlaceCA{c0f^quh3WE1P6z;eeP5WDs(KzcK!g1fhE9Spa>`dECrSULyCqL z4J#U6G@>ZHD55B`D5@yBD7I*1(Ws))MR7%Ai{gvM6^$=SC`v3!DwiL0rrnX9?0g{!5jm8-R@ zjSFyvx!Stgx!SurxH`HzxjMVLxVpN!xw^Z0xO%#Jxq7?$xca*Kx%#^XxCXigxdyw2 zxQ4ohx%^)gdlB#=@I~<#C0>+#QR+qM7iC_QeNpa3`4<&lRDAK6dBQwn3Yh0iA!9K% z<1nw7*UVSu8}pO-%M>v_#*Zz=2C~K35^PDf6kD1t%a&uyvlZD&Y-P3zTaB&7)@JLl z4cQ>J5gW=jW}C20*;Z^D7GT@5?br@%N46{5jqT3%V0*KD*uHE(wm&<79mo!12eU)i zq3kerI2+DJuu*Ib8_SMlN3mnrICd->&yHiqvk7eCKN2qapV^kmf-JER$*0EV|6x-O=l;v8EhsynVrH; zV`s24*=#n4&1L7XbJ=-p9y_01z%FDLu}j#c>@s!*yOLeau3^`*>)7?|26hv>h26^T zWdCFLuzT74>;d*LdxSm89%E0ir`Xf%8TKrDj=jWQX0Nh0*<0*w_6~cOy~o~XAF_|w z$LtgK8Ediy>~pq|wb>W!EA}<}hJDArXFsqX+0X13_AC31{mv#BiAIt!!ALezj8p?O zAOkiK12r%MH{6EDAPmx=4BB7}*5C}@5Dd|f4B1c&)zA#x@EU1Gx-rqnFfxrv#$;oP zG1Zu6OgCm2S;kBw+n8nK7`eu5V~#P`m}le}`Nn)>fw9n7WGpt87)y<1#&TnYvC>#& ztTxsdYmIfrdSipJ(b!~cHntdBjcvwuV~4TR*k$ZC{xkL%dyRd@e&c{~&^ToLV1Kf| z*x&3Q_Agt+`dB~CpDV@%awWM^Tv@IhSDvfDRpzR2Rk>n()J-J?7Z>}%bkL%A3;0AJoxWU{I zZYVd58_td3!np`8l8fS^xfm{%8^w*`#&b#B1TL9N;Ziw}gE*K&IF!RUoO5#oM{+dB za4g4hJSTB7r*MajBgRqVm~q@VVVpEh8K;di##!T>ao)IKTr@5jmyIjNRpXj*-MC@g zG;SHUjXTC&1DsDBmhFi<6<2G@dxh>pQZX36q+rjPR zc5%D8|F}KeUTz<^pF6-E;tq31xTD-L?l^aXJIS5mPIG6tv)noEJa>V+$X((tb62>l z+%@hxcZ0jd-RACace#7qeeMDGkbA^E;hu3OXK@bqf_urm;$CxaxVPK~?j!e!t7FzR z>zVb<24+Ju$P6|^%tmIY=`tIeP0XfdGqbtb!fa`_GFzK%Ou!5?+nVjn_GSmOquI&q zY<4lbn%&IqW)HKc*~{#0_A&dK{mlO60CS)@$Q*1AF^8JN%;Dw;Gu(_YBh4r?+Ke${ z&5`CPbF?|ej5EiY@#Z*lyqRDonn~saGuccrQ%%r>OxQ$B)Wl5ObekTNFiDd#X_GNo zlQVf!Fh%n-_m%s>{p5aezqvo$U#^JrB=XtGveRyq8bsC-NEmBz`hKm6uG}R7};>Ox^UFX=b`P(abP2%}M5DbBa0DoMuip zXP8;$Of%b@W#*W<=4^A0IoF(L=9&5Cd~<=h&|G9LHkX)7&1L3tbA`FmTxG5{*O+U~ zb>@0=gSpY%WNtRMm|M+l=5}+3xzpTb?l%83_n3Rledd1ifO*h7WF9t;m`BZH=5h0c zdD1*(o;J^zXU%iwdGmsK(Y$0{Hm{gh&1>d$^M-lTyk*`t@0ip0>HG|SCZEmE;&b`A zd>+4mU(7Gzm+`Ckb^LmM1HX~q#Bb&I^85IM{2~4rf1E$TpXD#{m-(ywHU2t(gTKY! z;~(%3`N#Yd{uyuZCU5aC`8WJq{vH3G|HOahzw+Ps@B9z`7yq08%NOy*gg~K$P*Nx* zlorYg<%J4DMWM1#MW`xN6KV)`gnB}Kp@9%AG!mK!O@)?1YoU!0CbShg3Y~;5LRX=i z&_n1W^cDIGcg=g|ee;3&(0pV*HlLVJ&1a@znr4Cd+$=OL(>5LRh56EaWxh7wm~YK@ z=6myl`O*Ajem1|DU(Ijkck_q&)BI)rHvgD^%_7rh`W5&W6e|cQ2rMXGP@g4zXj3hEZrE2v-4prBzvP(g4( zNI|25&;nOMv9Lr~Dl8M03oC?` z!YX04uvSP4EG7ns#l;e0 z8L^yLL98fN5-W>U#HwO7vAS48tSQzK>x%Wn`eFkySZpMQiY~E<*j#KOwiH{7fEXsW z72ApJ#V%quv4_}G>?QUU`-=m_f#P6sh&WUnCJq-zh~Z*{7%j$#vEoQ^lsH-(BgTp2 z#7UEX=0AxD9z!o&8ox7nZSsGRJTrSq35JAcOS_VyVrs@r%ekChKYQi8@{#A6l5ww- zYSWvi#m2qQXbCq}n~neOZN-0eL$iM5bkFU!{5D>Db~RN?Trb_7)MN4;`~iL!_fMFb z@RNU=Hy$jLcqVaq&WSN6C#L1b=Wm^VAg4xJ%j`bM$0F{>B*bjU*_g9AXGCsE1WQ~n z5t(*(N!ElG(ai;S;!N-+`GPnaKRA_-+7Wdct{r|s))wxj#)}DJqL?J6im-@^nCKA+ zkrXMB78#KhIgu9yQ4}Rn5miwWCyE(jrZ`2MDozupi!;P5F-Oc5=Zf>hJTYIKFD?)l zii^a>;u3MGxJ+Crt`^sb>%W^t>yP24W-6nBaLiF?I;;(qafcu+hn9u<#^C&ZKD zDe<&;Mm#H?6VHnm#Ear3@v?YTye3{3Z-_U=TjFi;j(AtRFFp_-iciF+;xo|@O|eis z!wU(ASR-?5>Wkz(^9tN!V@^d^Og%Yop4uj&ZbHY58WU$s3?(kQ*+nB$#>M=K1*aLK z%ZCRffOs$MMQ)8GJGCBrVp=3TA~_`6EjF8VZZ?|uI5T*1rG+PB@}^|rZD(9(|4R_*3Fa)F)cGYW?JxnQjgSU@$<&L z8}DSDP5uHaGyPHzrVN>ywXo*QptMi()`wThU$dYbRD-p}7vd}Nz4$@=D1H*Zh+oC; z;!p9H_*?uV21tQYajAq54{sj5_6sx8%(8c0D>uoNPNN=>EaQVXfI z)J6)E+Dh%D4pK*{htx~zBlVT~N&TgP(qL(bG*lWUjgTUwC@DsYmBvVM(pV{88Yd-4 ziBgg@K}wcVq*Mu%APJTb36)5Rl4yyMSc#K(NsuH-mJ~^qbjd5FN$Ju=DMQMXx{j_t zu5&_KURvae^o*DUZ~z}RGB|Q__N3%x^XkKGM-gPf_ztmiC@6_|4SHvGlcF*ScaRPY|j3W6?>{WNC^tO`0KPNjXxkG)I~z@dxOGl(*(sAjebV@oc zot4f>=cUWi73r#UO}Zi7lx|6PrF+tS>7n#UdMrJWo=VRoLo%fT>A6%WS&}U|(o5-; z^jdl=y_4QcAEb}cXX&f-P5L4IlzvNpq`y*;464CbjesSvTgV_e!h~NFeBl8Uft*}u`?(kB{VN%v(_;eYv3=BnQhOawFL#H%Q4=y#5Wnb@l)&7(W;{USQ^^Aqf(q`2drWB7FGPt2YC zOHuyO(^JaC&Yc%9^Ky0C@(OvS zyh>gzuaVcv>*NjcMtPIGS>7UVmAA>; zmoLhf<*V{F`MP{dzAfLC@5vA3hw>x&vHV1SDjTvX7s!_ULVhK`k>AN5Y3^;#Xybgx3q-5|uLP4r63-c=kBBciy7(bqT@5oVfSOTd`Z-9(*fUA+5xisHledKjSx! zX&TGSg21!|g`<|vD-!zTPE9!*TPLn-+~U!@W_5snWp~Kv6a68n`k10AFUAd6b~<9| zf&*Euu|m?M7%e#>x7h5og=kW_^j=Zz(yNW*7lwIehSygbD#1#K5~{eA#!3^VsnSeo zuC!2EDy@{(N*e`G!j!g3d!>WYQR%F7ReCDDl|D*erJvGY8K4YO1}j69p~^62xH3Ws zS0a>1C0dD5VwI7~C}oTir;JtNm2t{=B|%A4l9UNbvXY{tDxd->u!1P4f+@J-Ry+!! zkP59Z3ajvns%VO?c$ExgvNBbfuFO!fl$pvbB}d6s<|^})g~}pjv9e5AsjO0f>>Dv- z(<0PL5fR~j`FGsc*_V?`Bw+mSv@%$cIA>lTuNh@iS7L7G1Y|bL-p+UyK5`Eoy*uLo zxGB9?a@+h3alY_lSqHs6!B3e9^Cygax?pX3^O(O`L9qwZmnZCZcgfz8F?M#d*t+f# z(fhoKqwCOK_jGMo+~06tV(5fT8W8S3ZZlkL>W6V<^R6z~&i|!Ca<@m-Pdkz|B(5+j zKB94Ki#QQnlg`Hr$tRO@a|R?dbT?KjM%<4m53g3%DC?Dt$|hyAvQ62p>`-%le?qb4p%h@8k}lhISA56dneH#zctc)k3Nj6AVn z_T~81S^e{;#??v7jTJ^!7-eO30W;8r^X>}M2_~TyKM=kF`;?{WLUzLmXXRutC3{*_ zo#<8bI;Sm8-{qY@t__g{KTxxT`-^fW&P%(aHAs!j>!l2hwPJ_k{;8#sdo25$zL004 z(fRR{x+8^C{PXAKznRxOJTUfww+r$tyL$Q;Xi>s}v^FZBwpH7!9n_9$C$)>(P3@uf zQhTd?)V^vzwZA%09jp#jN2uXyj5<;st;VV2)C4tAouHb)# zs+7vAoGPf2s;HW(t7+;)HABr*C#h4^sp>R!x;jJ6QfI2O)EsrTI!B$W=Bo?Th3X=8 zvARrMuC7p5t83J?>Na(|xhi*vi&Hi%>NIm@`T)?o;Mb^g`K_ZLbCJ!Nklx@q0D9$HVW zueN^?8ZUYpyVr*Aj-R?HW%h;%+jC#eZxOr4b2I*L)QpiM(>|mfP92f*5j;8}JE;sk z+C9YGCe8yl&$u&Y)+lV|Yy3&B9#=E{dkpH~W0#H;Gp}WKMvlreV@F1mioGdJpIIz_ zw|l<_&#p8*by?T!UZZX-yTeaQG#Di5Pwa;9=GcU3(MeR!>Dc>}Jf+vN=ANART8XQ? z(?@QPXwP)mEXdAW7+7@lAwq4ty{ip5G_G^Cas!IwR39>76HHbO^qkjY00`R831x zS)CL*@)e&vvpT)nvo2muh|U~7;q3-1ggb_&S7%!<(1v3(audA@u4%TW7y@Fm*ucTMjtLRnrYI=3O zhF(*zrPtQ$=ymmadVRft-cS$L8|k6COK+?<)tl+f^_F@oy|oVLVR~D=o!(yWpm)?~ zrh^NA<{T&2W(6;M6Zg_vI<0iLWD=|8@)d%+;ckqWcFW*;HP#>fZ)`#dr^r|79Vs6#reBRZ;MIYUE&f-dQ@uIQ?+>ALRK)AV$G zqMo5=>XY=z`V@VtK24vl&(O2Q9OV81B_1XFyeXc%F&(rhu`T7DKj07^GqREAo zh{?oy&##29k&oj_j2q}lbWh>4CLzeExLsL6G4$*a`9mgGLH*^%^tbdi;TLlUc_u9? zIri|V;;A3zy%yI-)R|~9H>WEL+owJCrbWkr{Oq)x%$(OT`O4drwJB4CAM)sF9rK$f zZ;sB$h(#z^Ou@ysiofTU_xbeeaaEEpOkSHYoNpL;DSR#eI&0{^qx3L!4R~Yr#c-D= zae5QIao(BmrZXSqu=9sO6XhE@Zz##LP+z1k)|co@^=0~UeTBYKU!||s*XV2Y_4)>V zqrOSstZ&h`>f7}l`c8e9zFYrK-=pu<_v!of1NuSzkbYP{q94_d>BsdG`bqtiep)}H zpViOl=k*KvMg5X~S-+xR)vxK-^&9$4{g!@PzoXyP@9FpT2l_+(k^WeJqCeH2>4t9V z1^RQnP`7kjck~zfOZ}DpT7RRz)!*sw^$+?-{geJ#|Du1@zvLCuIPc8 z$x#(D<3$15zhq1J#iXO!Zta>kFC5Aup=k@^=4Xy^gX8ihC0^i1&3~pmRgOn(rxqx$ zQUqm%H=lhwe?YiIjSr8Wy)h;Vbih9oi)YM=4I8(JUoroF@&o1wKVY1^=wfE?ap|!y z#h&5Y++)*k{u{i!7%xUW$!;*KP2R@{E5=FMLc!6IDgBl;9NRdulPJa%cqgZ}0H-G} zNU0Xtfw?e!chvE$C*DD$FK4cww>YY9?C){E^*{Pwy-4@zeqMiXF>io3&|BPF!duc? z%3Io7##`1~&RgDF!CTQ=$y?c5#aq=|&0F1D!&}o^%Uj!9$6ME1&s*Qyz}wIpRmZwqfrZ!2$WZyPV*4fD43w)3|4cJOxecJg-icJX%gcK@HD zvtUcCYs2VtcXxMpcPFTTh#(-SpaME}&FSvoV9bou-QC^qba!`m*Z2L0=eqW@?|tvJ zfRVr`U^FlW7zd08CIAzGNx&3fDliS04$J^%0y;nsgaP3|1YiJ+fC-2M%s>=i0ippb zU;|=+|MZXYqWupfu>>-OjIoCG#xjlO;ojJ45#6G$N9fEobE;==w`a%RFR;1_ zU5j*DYI*3J>v5{HFxz|!dFT1!y^>Q{bRqXs)Mn#5!+^l_@Zk}Qtbf_{(0J1_bGkF! z+|!ts7v?ltm%A6Z9vR%OqBcP9PR=0d61;hzAk?58wq7 zfg~Uq@Bw}x0Hgq^z$_pQNCz^2Odt!$26BL0AP>j~3V_)F0Du4lzyJzh01glU2~YqH zFaQg101pU&2uOeoD1ZtC0SyQNg+LKd43q$Kfq6hFunyP)><0D#SAoaCYv2b^4XgvU z0tbUb!QtQta3nYi91V^E$AaU*N#JB~3OE&<22KZOfHOfIs0SlJ14tEjjzt4;=1K{Z z-0ve_yAoZO>)Z0U#m?`gYp>!(!8(0NYFOXiNqrBNeV+t}DU zQb!v$MvTfK3|%9rFjjwF9|>AOD`*2_Ks)FJ-C!IT4<>*fFd6iLelP`01=GPyFbm8E zbHF?>A1nZ8gCGcj2#A6hh=T-3f)q%DEXac*D1kDlfa?Ea#SmBs7J3Tm!BJ*MS?s&EOVrE4U5Z4(n2yH^| zimBR3dkg1$e-pbkehBn@VjGG4C3@gk$ zJL`#cub7ZR=#V(KcGX@S-#FqBbs}|fM6LAx8HJv2IgJVj=ypqY=brN43Lne2G@f;B zO8$+EcJxlVeh-mn);Bq47>|vHoa$ye-z&5DX`J`&b8= z{y6Xtcxr3zPO?4?WEy7a7P#Xx7rFvsC;bK8GT$~}7uyosMVi6kQhRM>{=$;))JUwk zpD4KvP?p`LbJEM^AcU_3DQO9^kY_i-wnrJw0n9*w3&7*`BwI^V2Ys}s)UcUbKDSq zif(m!i3j&)$yE#EW-atp%~qnvYUh##uyewB>rP8a^mFZ-_F7j1E5_C&-OK8uHBVpW zby$06m&mb&w+p_BEx3-3^n&ZTN9ohP7UVJOIQvO&o9r)u7CtllWJK5KilD3T8gkB! zWuM0{<_-%K+lwuAaer!E-+tHrEPecX=O3+B!hEuQ>6>6p<7{IOE+=jbJQf}YkB29~ z6XD75RCp$=gY|F(90{A@DA)?y;278rJK$K@1-s!mI05#;NpLdkgHzx%I33P}v*2tv z2Zmu3#$X&KU=pTb7Up0c7GMchU=KBZSZz@2fP#B1Mh|R!TaGO@KN|Ud;&fRpMuZ8XW?`3dH4c+ z5xxZH#?>X-Ce4MP=Oo4%=j?QK_pC-&L|rdk?Q4^A*E%CqopYp}_Z)Y{rmfT+vz$p* zqt+#u?Drx}v0XfGvl6mBX_NB)xn3H>j0=K`r54effkwXZx-3f_Xo|&b7@WB;^j~Bf zcU`!^`9r(vcNyVgJp4uUA84JWeqpz;C%zH3doHJbv>_j^B<%`x$4|I2?E7-I#^t-e zIGRL*a_iF3HobcsG}{_5P19y-xPOK7zUOY*op9KC8NLEvg|ETa;T!Nx_!fK{z60Nd z@4@%s2k=AqG5iF63O|Qmz^~x9@H_ZD`~m(5e}TWk-{9}?5BMki2mS|_M=B##kg7;E zq&iXysg2Y{>LU%2Mo43%3DOj4hO|W5ARUm7NGGH-(iQ22^h1UrBao5EXk-jB78!?( zM)9U^WS47yVL!T4^_ zRcMZjFm{Ppm&#KY_y@im<4x#?`7>qYlR`7)MExA!cGIz}J~=B~KT?GhzvDG_(_4`9 zEq?`E-J>t{xHsganCs;XEzEVTc2N-nGp;2kA<2jj@guX4Oe71*MskpRqyT{s7(o#n zArKOw5e|_M6$v655<*IlIY=q809k}AMwTO+kgdozWEZj<*@Nsy4j_k+!^lzO7;+Lh zk6cA=AUBaa$V22A@*H`AyhL6jZ;-dhd*mbX3HgG2MZP0Hk>AK4MdeZ+W_WYSxTV>@U2;)({-7}miqIvQe;_rnbo-m| zuNg;Jy)D-K+ea2niXMcC<1uf_qk^D0MFKpW_KJJGyl!L9mDx~I7VG9E|lL@vhd&AnrV zeG!HEVmsfcFwjsja5gR@p^xvVGrQ;;OV~$bWapjAZKB&KmCqRGyBRrMKI&unVTNPG z$AtC56x*zlHi5V3JM9q^e_4kErXTADq@wfDp*yl8de9ZhtyHh<24aJ-!Pro2 z7&aUmg^k9>U}Ldy*m!ILHW8bQO~IyO)3E8-3~VN*!}M4f7J(TsBWA)Pu_!DCvttg- ziMg;iEFMe1JeU_t!U9+dmWrie8CW)!i{)bl*j2-zXm_4mB8Gv%)FD|JhH0hS69YL1LN}--;GkKDXVKx8JdZOTM>UDx9=VduDo%A> z0e(2&q`rw-IMrQt|912%#HG7aMrfKPU}UWF#M$Z zvWJF-q7A8f;dxfXvQbRe#rWdGJJKm)uh2Byo>518uPyUGLHatBxO)CBSO7je*B)i% ztLhFKW@7*bVh{#nD28D;MqmuaV^OD;JB6Lb z&SK}Vi`ZrC3U&>K1u+P{R z>?`&S`;Ps zGsZJCqS&_)*c}#cvd^;SMg6En_=0%oP-bc00?3kIBHrenAD34db zE8>;#%6JvLDqan*j@QI%;kEHPcs;xU-VkquH^H0Y&G8m^OS~1{25*PA$2;I1@lJSW zybInH?}qopd*QwDK6qceAKo7yfDgn6;iK@;_!xXFJ`SINPsAtTlkw^J416Z8!}WL= z9*#%g2Hc37a5El-N8?u9hR5Iz+=<8HF5HdB;|aJ2PsEe(WZZ}Q@c^EJr{c5lbUYK! z!n5%lya1n#gE)l4c-ib*S&0$1q4wq~_P&<4X?x?rz%_P=Z5A=s@G1MR>udZ0-Mu1+ zD77AAKN=opgL<7UtK^iWwqscCtEfi0e;!u%#-%bXrTr1T6K#W-I$r;uoLXGl zSI$1(xx{*mzQPWQpY943Q`Uc0%H7L!&Cn@pc6bkbk!Q1)Nmg8{c-c@7x!@Nw6LdO0 z)jEIHdR$Jpk&p(KAKVpvacagSp=gEp_?H1oYGT$aE`mn0|ylt@u+6;28pyb0S4$CDyu!{ld10i$dQHO0#TfMi|B3&`|KNY|GDKOT98sRAKvW_s z6IF<+L^Yy1QG=*S)FNsVb%=UIeWC%;kZ4RaA(|4+h~`8Kq9xIaXic;s+7j)E_CyDw zBhiWILUbd#6FrEYL@%N@(TC_u^dtHc1BijdAYw2vlo&<~Cq@#Zh|$CtVk|L^7*9+f zCK8i~$;1?5Dlv_iPRt-82m@gvA_+4QMOX+cVIyJ)2jL`Q2{#c(#1jdGhwu`KL=xdo zZ{?mY)E3S{mytED_lEaAyWGuE)|u*?X`U9>jqjfIB49N`N$)fLDLuI=T!Q&svO;an zS>*mi;C(NS1#(lcMe>~bhV&K*e>C;e?I>zRdmnsUk*G4Dq!Qi<)!QXtk4S9 zY{^Y~j05nVOomzSHAb`(>T2iRMMV>Y0+T`iFF}mF;?(@(Bc|HAT7LPHqxxjF$n-fI zAd}#_?pV)5aai^zegJdKeF<`iT@Gl}IDfi3}o>$Re_d90DaU0w)N9Bq)L= z1VSVvLM9X#A;$Kv5we8Y$mo7JBXdcZekCy zm)J+_Ck_&ah{MED;skM;I73_{E)iFVtHd?pCUKj%L)<4G5D$q*#1rBv@r-y*yd+)` zuZefW7vd}Njrd9YB7PHph<`*`vI1F=tVC8PYml|b+GHKFF4=%=M2_)&v)jVf>ekwa zxhEsdq%dzl-ke>-csm&9c#@apo#>9pzX#mP%ns9B11z_*ilc#q_?@=a z<~l}W_{_k=$Q5q22!tDw-RLq>D`Sf70DRRI9dQ5=)R?L*20{T?&yS2)+y&4>(uDVIuo4aW78Mv zXiqo@Iex}B_gr^ima@@J$>wBBvNhR;>_B!RJCj|=Ze(||2icSCP4*%Ck^RYm85lS{}mG3y+&3{MO1h!ee^BYT_fIfvRBw~*V&?c@$}C%K#4L+&H@lLyH| zr^z$qS@Iltp1e$6A+M6x$m`?{@+NtkyhGk4?~xD4hvXyjG5M5yMm{HBkgv$sZ(AP4@$$5 z)>1v~PTl6{xu!?K#{ORg#i81+V}Oti5bX`E3PU29@W8e}|0b=vZkeIBrM?kzchRPV z-_XsSy9C%_?7$nT!N^BV@ON^Yjvkee7}}8DD}BEq55|iZf~&0Ap|H??;Ct30LzY%t zyfJ?Q9TkYxT?XTGpR%8vXN;?LxkcY%Vw28=)iuU)ow1ml3Wd`m-WnH2meDBxR_igp zA)y1+k?KTsrn*pFscuwvst47R>P7XY`cQqT{?q_!AT@{@ObwxiQNyW`)F^5+HI^Dj zji)A2lc_1xRB9SEozhWyDvS!JA}9l8q9Um%Dw?uVHY$d)Qx3{WB~TtJiSkn^)GR8U z%Ahi-EGmb}rShnJs(^whlp-jSqA7;rD1j0wiIORm3Q`(XNEK1VR0%bQnn#sV^Qi^Y zLTWL!lv+kDr&drasZ~^MTa2}>Hw5LF>gG?0Hzv-}O-|O4Y@y!J+C408l{7d0AXJAd z4&UI-G5jD;#2)ee^0ni_ZL9G0NDZxh@*HtP{4d90#{>ODs&zs<+%^5DGb6li1Z#FV z7D+QGMb5G7J)NDGEEB@NhJS~u7;=3_Ld>kX`nUR0aHQv`sfu+&%r{b~nHPkw4J+*<_L~W+F zP+O^O)DCJVwTs$K?WOin`>6xeVd@BVoH{}MN1dWhQ)j4i)OqRxb&0x4U88PNx2W6H z9qKN1pL#$&rJhkQsF&0$>NWL-dP}{dK2l$(uhci{C-sZ^L;a)5&}HfJbOpL1U5Tzt zSD~xY)#(~^O}Z9co32YYpc~SS=*Dytx&_^mZbi4I+tBUk_H+lj6Wy8aLU*Nm&^_s1 zbZ@#Z-H+~152OdvRV8;;*X)}>M&TSh!J3ixGBk!d6(P=A<#-+cko{#%DR~e>CtH1M z+4XES>8QvW_P9Eg_ADJ^?5^93SkmSajbbd+djHYT1!IYB8(VeOUSrkJz0@E6^I08r z4RY#{D{WuxWth1|wL(Jbe%}PkO81EDnN)+6bfizzm06sjS-&y`MfnAEwXHm*~s%75W-|oxVZeqVLf6==<~o z`XT+8envm1U(he<*Yq3uE&ZPUK!2n^(_iSX^f&rD{e%8V|Du1>f9SvTKe{Yajw#Pn zU@9_|m?}(FrW#Y7sln7_YB9B$I!s-r9#fxbz%*nUF^!ofOjD*A)0}C+v}95ZACSID z8PTbwL3x?9Wf6&nLI1H_!C*P9HAm#PMd^##wRYf{xEzZbBFy*sG9JD5RIRF zoPUT9bRLiBk~!PnM8ClK%+bNtH*=kIAh)!3GS1_3-o>H0=L57p9vww<}8^$oihq|@)2S>&Kp z);L+(ZF*^2=%^CgFZn~-CWvNQF|C<4Ok1WM)1K+TbYwa)otZ97SEd`&o$0~!WO^~Z znLbQkrXSOv8Ndu=1~G$~A*s%s6H|Gl7}NOkyT8Q<-VZbY=!K zlhHAHCX5MZA{YZ>WK2vXV`icl3lq&)85l{KJ!4F^Aw(6g)6m3qBhMQ61GG-MpO@`YX1*|AnQzQ@<_GhW`NjNZ{xE-;e@q#+ zEL)B(&sJb7vX$5>Y*n@zTb-@J)?{n3wb?psUA7)upKZW4WE-)K*(PjLwi(-;ZNau= zTd}R#Hf&qA9owGmz;+$vKK++;IY2xy5qnM z=yO)h#89%wH6jetk1Kf}?BVOa(n124#?9ze^u?T8rSBx98 zimf9OmXzF2@8-Ql^!0R0|IXfG>qtNHZv7upd&IReyKm%hof-S!Ss8JF=*52zhUZUW zC$m%7sq8d%Iy-}%$?8}=8^(sS5v+kVvL-f?HM3Eyg^gydtc{If?W}`!vazg-b+i8; zFxJC**+e#pO=kUUfK6dj*;#BFo6csinQRuD&E~MVY#y7>7O=BffCX8Ig;|6}S&YS5 zf+bmsrCEk$S&rpdffZSam05*V*&wU2A-0e$VvE@lb`Cq2oyV54^Vv1*Ms_!QoITIJ zWUF$mIKBS4FD5s?M0Isb`{SywYn0;?H^fEr$MO@snEfb4SW4sGMr}*0mDo}HBS!H~ za~ZG_cPxCW`-aP4nBi@gQ5KycPcV(iE=Zl`&kbK;oWTFHoC+NA+pOJZU)IeoxD*Jp zzJzNA%+~UAu6Vl%h1TD|aOYNFrKayRo4hI8?exkuUIp(DWVAOZ}Cq~$W6 zB(Rz-Q|glNG$u@c*ApFP(}$Ut+v_~9`@G)s`p+9YAHogghH=BW5!^^_6gQe1!;Ry{ za}&6U+!SsaH=Ucw={P+X#)WecoPjfPk(`-};w+q%vvDz;opW$b&dtSf@mvDu;k;ZT z_x~e|3vel1DmRNu<1)BRE{n_N^0@+THV1GZ2XQcmau`Q&Bu8;9$8!QFauO$V3a4@! z7vc)JVy=Xn!_DR9ai!dRZUMKDTf{BqmT*hCW!!RZ1-Fu0#jWPnaBDeUS3@@@ypHal zeWIbEu1MEP*Kdx`ni$zdw<~wFuAyPFuBT;qTEI}pcQ5iWR9Ji|8OUxte~@mzuFia$ zE>WlID8y>@nQBKK(eZ|PhQ)@ZhINMc!Wh1p;ftY@p_gHl!Nw;T+=g-yRU&Fd^o-~q zF*;&Q#Eb}gL~MjDVm&rH0*QblqzE+v2{(efb%%8)b%%7%bq{o}ba!>l^`CU@^l|zx zx{mtJ`l|Zw`u|@S^h4sK^)dQ&+1b34Ak2}Sk=FV_uxpUlk?gDp_yTo1Qu5eemYut7226vOY z#ogxaaCf@y;xVWzMtVY)D1Sbo^ju;pPZ!*+#T4XYIXChT?C)3CQ;mBXut z-_ecqMd{=9XY~u_Px56H1j7HsoGdLWhQk|JeniwXRA%ZJUWGTcn8Fw6BEvW90@M;} ztF8fjk%DpuSj$s8z}4X!!}o^o39rT1=Iiiv`FebPz5(BmZ^Sp|oA6EfW_)wL1>c4b z=OcJC@8IKkFQ3RK@jgDlr|`4*G(LyV<@5M_zJQ<213bt>Ji?%xXyugdR z#4EhYYkY_=-i1* zCVm^go!`mt=J)ak_=Ef*{wRN(Kf#~m|Krc_=lP5LCH^vhJUkS>D12%70(Kd@oL$9k zVYjl|*+cAM_7r=LJ|6Fd`-%O^{$PKz|JX8I zIj#a%nXAFo=IV0wxCUH9t`XOiYtA*{T5_$qHe6e-BiEVh#&zdL;eZ>lz+y*;NS3X`S<(>{v-dH|H}X7|MLI%GD2CQoKRk< zAXE}63sr>bLQSETP)DdM)D!9p4TVNRW1)%ARA?qN7g`8ygtkHlp`*}A=qz**x(hvp zK0-gCzc4@;Bn%dY2*ZUD!YE<1FkYA_OcG`YGXAZAAIxbz3o=Oj;+tM}Zmh?(` zC;gQw$nE4-a(lV2+*=+hkC!LOH6zAZ7DcRySR1h~;-B$+#MOxR5%&ylXPwFZZ2uDe zJG}RtZHBUr=*)L9Gt4W^3;$mL-4k^*>Oxdka}RSjbAR(tb1!pmv&}r*JkFeG#?8rQ z!dzg^H+#)~bCx;Xyw<$L%$YZt&zYB-x0qG)0`nE~b@NU04f93w4)bU8JM(w*WAhzz zx{xVk3pqlrkSF8|vjsqa1VlguOdteGpan)?1y0}vL68MSPz6m0357zDP%M-PbA)-q zd|`pGP*@}^7M2K0g=NBWVTG_#SS73#)(IPgjlyPOi?CJLCTtgW2s?${!X9C-uus@8 z91so)hlInz5#gwCOgJu_5KapJ38#e9!WrS5a9+3|Tof(|mxU|BRpFX&UAQ6K6mAK( zg*(Ds;hu0`cpy9!9tn?y>QObL{+QpG%S5$`Y8o{ms!ddUlrIX7qN7Tppr{qaP3QlM z%|&J-AR;0RvI4;n0g;hHq!?L^>_GM*8;}#of5;=G2-%LTLrx*5k%P!eWDBwoS%u6; zjv!}|CCCG$D*6q1jMPReqqmXI$VKEjQUm>kTte!i&Cp6{1GFJ}AGw0GK*LchYD24_ z3OWKEfc8b_pmwx3sz)cI<534X25pQw(Vplqv_G1F#-mS!r@}Mgx$r`GDZCP13vYzC z!aL!;@Im+}d=fqjUxcs1H{rYRL-;BD5`GJRgulW+p^R8oEGL#1D~J`vN@8WPida>w zCRP_~h&9DpVr{XGSXZnk))yOy4aG)cW3h?YRBR?T7h8xe#a3c#v5nYPY$vuCJBS^{ zPGV=Vi`Z4{CUzHlh&{z#VsEjJ*jMZ)_7?|;1I0n&U~z~zR2(J_7e|OA#ZlsDaf~=t z94C$!Cx~9OIhu(2&?MB42G9*?4!RlLf-XQ;p(;8T#nA$E8@dvmjqX76(IT`IU4iaG z_n-&Sve*;!I$AlZ3057ugZ@FUqAjo?SY50Vb{V~g*2cP0-J;-Vp$l630Pmuj~&F$VCS)?*k0@s_8+z%+lAf77GgWG zEm$G;1bc+lz-wj>!QW#;@z(e-e4;o>oGeZer;5|W>EaA=rl=G3Vwe~%Mu-N{D4N7b z(JV%Z7BO11iZ(Guw2KbWDaMK}(JjV_@nVt)iJYj2^TY+>LUEC}L|iH^6PJst#5Lkt zahgi|@n_;z#kb_(l9G{uF(8Ux&}daeODf9p8Xo!VluN@qc({q9W0iXhe)4{@SZJ zMp(vL216!Gv?ajCoWx6lBubK`NI@wi6-g!1T&Yx=FD;Ok zNK2*V(h6y%v|3s#ZIZT2d!)V6e(8Xe7q>lbM_h5-uDAnn=i{!$J&t=AS2ez4e6RTG zj*E__nROiw!w173!wbW6!!JWUVkOUBE_G~;6972|H>e&cE54dYGYZR1Mg zD&rF49pgFUU1M|8Gh-XmA7ca4Cu2KPdsA&wT~lXMH8^B7x-UJF9!pQ87t%}Vwe(hcFMW_c zN}r@J(pTx5^h5e7{gQr5|D-Z&SKGdUAca zf!t7TBsZ3u$j#*Datpbo+*)oUx0O4{9pz4PXSs{qRqiHtmwU)PeM~kJYr1GcO&d)+O_T{X z%{Kw2t0vi$Z@OpNYuaZDnu<*?P2Wr>O|2s@m|mG)n=YH4n(mm6nBJM5m_C|5nNFL| zn4X)ym>!#gVynn1ku@UAMs|p7ANki*CbDy6&&a6Ap^@gu9+5L6U6GbZTjY#LVj=UCmC-On$m&jLUmWs@8!N68l1D%)g-?35E^kL;C`Wxt#*=gIkUfegv8jL4{r$%IVF zj4a5atja-IlS6W$TqGCEbLDw*sXSj^ATN}c$V=sA@^X2Fyi#5*uaP&%8|6*%W_g>u zUEU$@ly}Q}J}4iO56eg7qw+ENgnUXqFJF`|$(Q9T@>Thod|kdF-;{63 zcjUYBJ^8-;Kz=Ack{`=YDx7%awoGs7B+az1aM%jvN#WvYiVw-E*YFlL6 zYg=PmZQE#DY&&S%ZaZSTXnSlsWqV>P7gIi_b4;h0UNIeFTE$d~X&w_5Gb(04%*YsD zj5Q`DCMG61W_rxDn8cWj7$l}RW?oD>w>{=)Ou8f6fjCG9?cf}mqu4RmvBI&|vDLB1 z;i6(4YtuHQZAsgnwj=Fu+QGE5X=l-AC%>0J$RFiT@@M&r{8j!Yf0uvAKjmNYZ~2e>SNPiizrcz6(t<+KKD)p55N&}^#(nx8nG*Ox=&6MU!3#FyfN@=aM zQQ9i)l=eyorK8eG>8x~7x+>k2?n)1(r_xL5t@Kg)D*crH$^d1cGDsP$3{i$E!<6C5 z2xX))N*S$;QN}9cl<~?0Wuo#ct#Nw&^tS2M(p#msOmCRpE`4Zv$MhcQL(==Eho#R< z|NobrbYFT(I*{HR>1cUY)WK5D;x6_Sdy5l`lZumzeZ?8Y*~PPqp<=9nhdL>K=S0WUHVpL2@q+(X06pIqASQVQRqu3RP;#6Xl{}*?aI3-?5 zP&|rPNmP=QWW}fWm4K3>q$;zNG$mchRI>hG_s>ysl{_V1DNtrBfC4Iz0xO7uDwu*R zghDEmLMx2IDxAVAq9Q4>qA02oR5T@|6e>kZu~MSUQRXW1lu~8BvOrm=EK(LLOO&O` zGG)1vto%5WiQ*m<6InLM4-Oi29JI?FQW6qn-EzUNvonjltwvYYnEE8KR zwtMWf*v!~9vBB8ovD;%W$9{>uRXrHt%+E?wj_V@p2>k6Stp(>$jq3WR; zp_-xEp?aZ)p+=#`p{Ai`p&q)?X$@TieMXS!FUv>xR{GBS zF8kK{zWKiUKKQQrHu>)RuKIrZUiseoHu^64-ueFeRwyf#Rmy5*jj~o*uWV2@Dw~we z$`)m-vQ62p>`-k{!>mVr>E^ zUb&!LR4yr(l`G0s<(hI`xuM)tZYj5wJIY<-`aaqrbmj_NVwu{R{kdzv>VA zZGNY}!0+}q3mo?!_22c^3heja_tyCT zHdGs_jnyVR!x;jIh zsp?d{8m5M;5voBoswOp3HLFpoMU7Uis!fei?W#j{sWjik2HKxvTFQ|c{E zkiw-1DNOQ8QIbotN;?xWq}dW8Q4%V#QkcW+h;&3bhTB#f!)zAYtp6*x6Ks3HZjP>w zo{kJ;gk$)efDN{w7T&VbvdXg9;#2)&n?YMz>}7O1mT zKm}Dug;hjFRZPWILM2s7rBy~{RZitqL6uZlRa8|Cs+t;73)LdESS?ZKsB_hMYNRNT3x?bI&Zd5m^o7FAqR&|@YUEQJXRClSn z)jjH7b)ULlJ)j;`52=UMBkEE0n0j12p`KJvsi)O5YN6#n%W6xhWr^jYWs_yS<(g%m zrDAlY=sT7w(T^O1wl`a%7ueo{ZHU(~PaH}$*vL;b1#Qh%#|)W7OK zwM?*Vuw1ZwutKn6uu`ycuu8CMuv)Nsutu7w{J-3zh@RgO$N5V0Ewt zSR1Sh)&m=ZO~DpmbFeko7HkK$2Rncr!A@Xjup8JN>;d)!dxL$zzFD$vcryoc^nSLVuN&1cSf}&~}FVdf--%a0@{xQ9F zMz;)WMyHI98C^2^Wc14DkHs}hvgK@$5U_#In^ac}yNkL!G9}EOjf~mn-!L(p{Fe8{5%nD`)bAq|S zykLH?AUHb+1i>H_go8*B4Prq#7z!2zj|a~MF9k0LZw8+Re+64;ZM5bY%`(Pj*fPu+ zrVL9)c7{I#$e5cUWI!2k2ARQTlxD2RSeYSZEYG-@u`AtQ|Fo&wK%PgU=APc`og&jwEo?+wpZ&rQ!}&mB)0?_tjl z&qGfw??KNWPd{&euhSdr)p=ds3Ens_>TT&Yc@w;2y&mrv? zRd2HQ(EqiIzrC#!+a&(*cGmi9Ben6`6m7a@(xNq|7SJ-ZOf6f>(Q>ssEnh3pW@~^3 zX|RT9sD^2{Mrfo)X|%>@tj1})CTOB2X|kqhsut8VEufW(I-HColgU`JlB_24$tB5ik{2egN=_F2;w&*uOcyi7EHOvS7IVcsu|NbwSVTlj zBt=#{t)0=%YUi}`+6C>Rc1gReUD2*;*R<=}4eh3OOS`Sz(e7&ZwENlv?VlnE0i9} z3FU_JLiwSB(CiQp0z*&;4j~~lgoVfu9b!VfD2Sq1B$kM0h3c-xuI8@Ru6C~f@phJ7 zZG7Pt4^qckC{kByKnsOXEVu-BcL^>5LP8QCK@x&XlJS|ky9;%9cb}QMd!cscf4{&~kzvO?BO=A1LDjZhXJy-DzmR{Z{#yO7+E_4FU@CCTd!P3q?_=I*o)xb$ zUynDQ$KthA{NPRIIr8jzY@QQuxGaMg%k$<%@Zxz{yab+**UanSt>Iz3L%jRE2fXLJ zS3HN##hvUkQs-&aIn{a91=S_hWz`kcRR%*vRHjw( zD$6VDD;p}CE88nOE4wTEDo5rxl!~U8-HCU9MfB zU8!BAU9DZKU8h~I-Jsp5-K5>D-J;#5-LBoK-KE{5-K*WNJ)k|TJ*GXbJ)=FRJ+Hl@ zy{f&gy`jCOy{)~Yy{o;ay{~|cTU>GnO7y}ppCcs!=9AE~F2P^>jlumS9V zg@8S<7;prf05;$ZxB_l~JKzC$0$zYO-~;#qetp312RRqz^k9lQzN1@D17ioG(96@O9n{T;@=oL(&%2O!Deqd|tvp!;TA{7L zDh^Z}sn}Dop<-Lb%ZhUqCVW%AIe#JFo?pdJ;?7#`+)<%0B{gE1RMsA07rpiz;WONa1uBLoCeMSXMuCTdEf$Y5x4|g2Ce{Cfos5Z z;0ACLxCPt>?f`dzd%%6*0q_ub1Uv?w08arDpa2?p2D}8`10R5oz$f4{@D=z0`~(Jp zA>bGA8~6kK1^xjnPzTfn^+0`a7&sgp0gePmfuq4OpaEzI8iDSaX_?8H`I+9CNtrpB z8#0Gy8D^zrt;@o)&SzcC8lEkaHOTr)zL)$i{Vx0|WQj(JEJT)~v7!xmwxUU*$s!k# ztH@0>Rpc(3EwT~K6wMQbi%LcDq6Cq(C{h$C3KbQJ5K+Gf7AZxjXqjk*XuD{iXqD)O z=&tCj=&k6pXjtu6k!kI$+9|b;wFohY|H6OcpKA1lhQh&`5yFwe3BnmdE1|8>TIeKP zB8(J92?K?`!en8A&=@oU$AaTPQ_u_?51NA(pe1MpP5>u@lfcQ~6mTjy4V(_n0B3@; zz}cWRI0u{y&I9Lz3qTvt7PJEwf{Q?V&;eWwI)Y9h8*~PjfG(gb=mxrj9v}zw1ie6S z&zhJc}97#I#lfRSJn7!AgNv0xk+4<>+#U=o-Nrhutn8ki1d zfSF(x$UtboTrdyhf%#woSO^w@#b60o3YLM{!aQMvuv1tklnFb8y+T5`RJc{ROL$P| zD)1773qk}zf)qiepjOZ%NNmVz$Y=;^D`=>0;5XDZ$Q$Y#F4jD&acFH(E7VGLySh!? zq3%?7t9#UHHK5k0VKt&g)hpC1)f?37)tl5C)mzkC)!WrO)w|Vu)O*$Y)ce%~>VxXT z>J#cS>a*%|>htOg>Wk`2>MQE2>TBwo>RamD>bvSY>ig

c{FQYEn(BpQ&G{U#efL z%fSke4_1OzU^Undc7c7M286&B;977UxE|a9ZUi@ho53yMR&X1*9ozx#1b2bE!9Cz! za38oIJOB=W2f;(&Vekle6g&nV2Ty<}!BgOA@CmAHh%HXYdR775oN%2Y-M+!9j2c{0067 z|A2qNe;^Cefpj4~NFN#o4TnZRuhehU@6{jFU({dK-_$?UgX-VvKk9!>*qE+nxMqZA zlxDQXP-CPq){N7bYRoj_HRc*i%|y*)%@oa4%?!vCljg7`$pS(UfcWno3QT##Qq|_*QsUd$aakEmixbcDOh&O;4;Vo+36AkAy}+qoFa7 z0b~RjLt~+FkSSyajfc!33&;|(f+j!{p-IqWXbLnHng&gWW)A_BB3ZK8j6A9p#&%qN`jK16etx+W1tWjP$rZGWkb0T52}JhP%R{Z z>Y+xc2~t5WVrOxb_%glIjXW(=3dH8&M0d9jk;PyBh zUxGX1F1Rbs!M$-G+z$`H1Mwi7i-+K$csL$~$KeThGM<8`;^}w}&cpNZ0=y6}!i(_| zoR62{Rd}C3Ezk;<3NXP&!3x0+!A`+m!3n`O!B)X>!7;%t!9@Wjcqw=;papLPF9dou zp9H@J{{$vAteRmp1~nEnqibf@Sk{cMv8w5Sx*!-rAQZwN93r5l&@yN_v;tZQt%lY> z>!9_}252L+3EB*8fwn^1pzY8OXeYD_+70c2_Couh{m=nu06GXAf(}DRprg<+=s0u& zItiVEPD5v)v(P!{JahrN2wj3MLsy`y&^72fbOX8x-GXjIcc8n_J?K940D1^Lf*wOp zpr;TCQ4kG1gPub#pqJ1q=r!~PdJDaS-a{XtkI*ORGxP=e3VnmVLqDLO&>%Fi#=T}n z&9oY?8rzyhHJ&w2HNG{Rn#DC?HR(06HK{f6HN`dMHRl?hi$&sEu}rKGw~965)#9b% zjpDW9P2wHm+}6U@%GSEphStW`<*lb$_p}bQo^2&tFSSyw&ssmVPEh@BecAfA^<(RF zm6gg=HBmKM<)~VqVynDWJe5S%E_f!}UbD02fpDD6OlB^dB%3CiA)76;md%mPlg*Xc z%f`r@WWKThS(q$ZRw(1knp7fC1~!31&@bpW^auJ2{exJr4y+67!TRtpcsM))9tn?v zN5f-a1K1EYf{kGlcq}{)HigaL@vu2;0b9aW@C0}wJPDo*Pl2bx)8Ogw40t9y3!V*I z!*k%d@H}`vya2X=ZDBijA-o8-haKR>up{gQvteg=3G4#9!fvoT>;ZFNPuL6ghJ9dP z*bnxH1K>b72ipz?fidTwHiqDF7iZ6;Q3RC4H#aG2+#T~^}g`RSR@~2{?a86~boUOD|PEc}`K}tuZy>gz?S?Q^4RL)S=DeILIWu~%18LBK(wkuD zQ}!#jDAy{lDU;z8I2BHV)8Py_6V8IO;T$*@&VzYyK3o77!bNZ~TnRV9D!3Ewg4M7F zhTzrkI(R+20p192f;Yok;O+1ZcqhCI-UlCm55kAw!|-wV1bhlU4WEI}!spl7`Qno5vl$(@*vPro?`AoS{xl6f2d0u&4 zc~E&(c|>_md0+Wj`9%3%Y2Iqu`d2x+bzXv`L{FkG z87~0i{C`p$1O9YZoNtz^6QYMi|vL%%g zzNAO8TCzs6SF%xpN!ChQBVk|Y6 zj**T)Mj@k-F^BE$Yf*+G7XuI%s^%#vk_}# z4l);+hs;M7AU23CVuvh3?2*NYBjSXx5ocrx;)1v$9ta2VM7)pyBp3-nLXmJJ5{X7) zkT@hBNk9^jBqSM0K~j-4Bpt~>GLbAK8_7X(kvxQlFQihZx6$l@x zM5>T#M1a&FLPUhrB4R{>OqI@;T1%Hmy`^5#zjB>M-A4V!w{pMM>5VfQXExe4E^M6J zxS(-Kqg&(RM#n}@qhBMpF{Ck~F}X3Lv7oWOwWYPS^-k;K)^rutKs2mr*wV1IVS9sA z%FXMQVp3F!OP5QxO9!L}rAMWwr5B_ZrDvokrMIOorDct4d50S=HQa1?*6_69dBdxQ z_YGefeoBRPtLrw`1=b_=d-0ukRcCXjy0f=)TW5Y}X=h*uw%MV2AUkrl{FWEHX+S%a)a)*$A={B1$WCMzvK!fh>_zq= z`;i040CEsHgd9eWAV-m7$Z_NZauPX(oJP(dXOVNrdE^3e5xIn1My?=Nk!#3xqs~j6mpkuwp6Yzt z`J?k^C)GLF`Ky!e9M$!w)2wT9*VHbXF1xOoT?@NhyS%zwx}3T^y6n5SUEWlP+B#Y~zz%f>l6On>NOe#3K=lB5h&)0b zBTta02#HV#jXXo1BQKDb$SdSE@& zej|U7zsNs?h3cTXs2-}14nv2dBhZoPD0DPB1~otpQ6tnCH9^Os<4{x73>}Y}qZX(o zYK2ZfC!&+k$>fpPeNb`QtlMLNSK2Sy58B~?4loih28@9DfGw~H-~ckBiD)4d zgpz0_R74xmLHxzX5QfA)?SS^6_LBCR_OS4YwySS*-((SHli)4 z0#%}|=uB}t+J*L@y=Wh*Ml~pmA}Ed$=u&hUx*T1Bu0mI%YtXgmI&=fN3EhltMYo~b z(H-bcbQiiC-GlB&51<3+LG%QA5<)EIZ7wV1rpuVUd>W>DXfoKrQ zMT5~0G!zX(!_f#d5{*Km(HJxqjYH$n1T+y%LX*)HG!;!l)6onx6U{=i(Ht}v%|m%; zK3aelqD5#iT7s6MWoS8Cf%4HxvtUbUnHe-Gc5z521(ABj{1|7N`V%j7w7}jz!qQwumac)>;$&KTj4!$BEB2m4-ddc;Un-# z_!xX1z5ri^{SjXz5aA+0NEi}@yaWv)J17o{g&xCC;pgxN_znCEeg_Z2BN1c76q$<5 zL=NJIaJTwKT#2{h?RX!4s~^J&{678we~3T9ALAtc3V(q=!(Zbc@EL>+v5;^foCyzt zL--LCN~6!v=jaRcCHe||jlMzOqVLf6=m+#8`U(AvenG#Y-_Y;q5A-KGhz_B@(BJ4E z^e_4kWnns)E~ba+W5clF*a&PSHVPY!jlm2sL(B*>#!RrW*f`7-GsDJX=9mR$iCJM2 zu!-0tY%(?ln~F`treia(nb<6BHfD{@!RBJ~u=&^m%m%Z??68H{BFr9hz!qbUm=ngv zoUtXC3+9TsVeXg*#=$%>FU%YB!5m2^l1)03OGp>em2@NBNe_}kdXiqGH|azAl76H= z89)Y-K_r(9CPTr-BgjZHii{>>$XGItj3*PwL^6p?CR4~%GL1|pGssLbi_9i- z$Xqgy^kURb(64PIi!;WEa^@_K>}#FXo5&V*ywo7KCxJU@Qa+#lo;~ECP$f zqOfQz28+ewuy`y1OT?0}WGn?s#nP~JECb8LvaoC{2g}9sFdmkV6<~!}5mtacpO0h3{J#;DVTHDfK90#jnGm%;mnHKxI|7=VEoguxhsp%{kY7=bOtmSM}WKC+)wlNwS>0whR6BupYC zN@65V668{H8M&NXL9QfMk*moyOXOwp3VD^hMqVdx zkT=O&*?@&ma7 zTZyg0R%2_hwb(jrJ+=Ych;70)V_UGT*fwlCwgcOV?ZS3rd$7IOK5RdB02{y#Vu!H9 z*b(d~b__d?oxo0Fr?Au58SE@}4m*!sz%F8!u*=vL>?(E*yN=z!Zeq8v+t?lKE_M&Q zk3GO1Vvn%L*c0q2Mq(63W6!YX*bD3>_6mEAy}{mM@38mS2kayE3HywF!M?bye4Pn2q-`F4QFZK^(;X1f3{*nAdekQ+=U&(Leck&1MlN=<6$Y11d@(;;`9g{3d zhtj3=D1B-eHJlnjjig3Vqp2~J0cA)TQO1-BHI^DjnNnudc*>lzpe!jXY63NpnnX>e zrchIZp7#mC{MxEVekH^(h-OWX>dfKS9H;gj(x_$+)5Zig?z9dS3@9rwb+@JKuw zkHKT{csvPD!!z(qJPXgp^YAjf9IwQyaRFX~3vm%%i;HmyF2(C`87{}0@MgRPSKunV z4e!7^@h-d@@4 z>Y}=-9;%n>qxvZ|rJ=MGK!FrQ!4yKF6h`3`K`o`0QOl_n)Jkd!}UY z27DvF3Ezxw!MEbu@a^~xd>6hO--GYN_u~WjVf+Yw6hDR^$4}y?@YDDi{2YEBzkpxC zui@A6oA@pKHhveshd;uf;uKEf&+(V|8~iQ)4u6k-#6RJm@h|vS{2Trq|AGI+hwwl6 zKb%GA5W0jOp-&7Wh7%)*k;EusG+{s(6Jv>Sgc&iOFefaD3B*KV5;2*WLQEy56Elff z#B9Qvm_y7Z<`MIW1%xeOM=T=jiH+1IYBRNk+DdJswo^N(ozyOBH?@b_OYNifQwOL4 z>L7K9I!qm*j#9^{LK-rdQ3f`o>C-5Q8e|8dQQEdUQ(~9*VG&8E%lCiPko?1QlF^L)EDY2 z^^N*Y{h)qQgVYf9i~3Fdq5e|;C>E_l>(Y9(K0S;cPLH5R(xYexVlm-JI1y}O3E@h( z6P|<@;Z67uzJxy!Km-y&1eXXVLWoczj0h(ph-e~)h$Z5Pcp`yFB$9|^B85mL(ui~- zgUBSZh-@N<$R+X!9+6KJ5QRh$QB0H&r9>G~PE-(lqLQd0stEy6LkI~GQA>yk2_Yrw zhGTYGCOwOuO2wC2NoUd7 zbPk+R*f&nM1RN<_ygpnl~i3GklK#;FKu3iyOp^=abII+|I*>* zdb@b94DZc$&b~YBcH8Z-b9=eXccbqCyNABF{IUW<1AJf344fAz4eSg&XBWs7bL+T` z+$L@dSHUH?2zL*6H#hcW+{+cAMCj7cWud~*<)NlwW?|#Q%)>0gEW@nAHizZDET9YN zBD$C^p-bs9x}2_{`E(^+MOV`Tx`r0gBD$6q(-K-r*U|NK11+QFbR*qFH`6V&f>zS4 zw2E${+vyIvlkTFs=^nb5?xXu@HLanwG(dwiM8h;fqcle2G(j(=m(k1V74%Aa6}_5X zL$9UR(d+3A^hSCUy_w!ZZ>6`<+vy$jPI?!;o8Ck3rT5YM=>zlteULsxAEuAcN9kkq zary*(lK$xH5ULlj+F#_KUnvaR;lE8vhMtsa+}MGBfq|i3p@)4e*wIz(W!EYaLZenh z1m5#+2`!P12wNGvEMR8w?8?~WoC(7@S)O6MU-2xKrfzc5zV@#kj=%@W{gm{{E0brl zx8hfm_oVzzEz9q3@rSaiv1-ARn8`SMdgfcsqr`8nzr_HNmbhL%`3uML#t0p8uM+$5zzrX&mB)x?Mq{_pNSm_3%Q}O_TF7= z%fw1?o}{~db3kjE+#5>UEE$+}hB!Lw?5qp3&Jy}92b^|#og<$5{o8ajyR70o!TLWP zN9>Qbzo2)OpETp!1G( zMdvLmOy>*hn$BldvCa_dhRz`Cmd+iWdpZwvezQhCI6TGR!O$E2 z#}BVt;Xjte8lCswS9*j$EDOgT_x|_VN!Xh^A!2UC+KBk5>L@gdj#?JIHrg#FJmzZ5 zoftCyW1@c2h$M$3$0S|~oNX;zoVmfuPD8DK*nN?>HIEx zG3vj+5wg?x#n7{u0nQ2iju};q#uqO;>cnEfWt>JU0gE-3TLO2(5TUFsX+Agk%CP72 zXNAkdW#P*3!;HJvIU>~YU_=l{FS0eV&avNdm7^kRSkisQ%{MGs6<*7Dg6G7Xc4E>l zoVLcqI30_b8C&X9=_F_OGwzO^vHKX`$A?%;#=kK)4s`O2Tjg}v>2};nr{=oZaV(aP z!Fa<3Q9W^|Y~H$f>jiY}4SS}J@j4_E3zyh9y50;-lYcIJ9riF+YPi$*romT}&fNMg zta92eAlmzYPDkGW&WQYM%dqhvi*?s` zRp!oIDmK*i+ybG=FPCzYdpz^}rM0hfqa%F{3c8j}4{f&}!CbMRbvi?yRf(OpEY=zS z-}*pisIk_tHtvAeeqR=AXE1L*X0l%X4MYuVbN;#r<{ar<7B9{9<*-;ft4A4Ko`2Sc z`JBlymp+%_u1KTEiJN|UT6Da<@phYOz<{GiiCg%8zecs7-EQQJl+_nI#72$=lM4D9 zE}Q7hb(#0eiHhoA47=-%`aKsJ2O36<4K-r1HW;lN6J&VA#AEEBr`Fmbca!ng#V$3M z7BC_`!zi0L8%tNv=(LHQvBT=f;%gmH=edscnhUWf8uu|*_c(5i?uOHa?`^&KrSiA3 zNvV~2j&i^`Bj%uNckhsqv60Z|m(fF~H({gLw+yz#@0xSg#KedRdo>9fJEAeptkx(p ze5Gw{@??`KCf`iHo1h6}jnp+48+RE?jOwHGoOd%Y|2xqKm*3;MS_-|TjZk7i^aQp? z!gfhP3MNCnif^gYLM}!nIW0${~ru%zuFW)MEf0f)}#IkmGnUzThEz+&t9A&H= z<&{&kfB8%wV@3Js`Qkw6bz2+|RxvB4e%jamyET+*4e?O8BK%{-K;%M(7_pXcjBT&$ zOT3b}dvaeolzuE@+?@8j!NpdEzC}6i|4NvfpmLahN7a3fY4G@zebr6vD^oS`{o=Qh zBD2uhY|v@3q`#Lh^ri5sOs-7U$RacqFh` zw^}6J!;OY~d1!U1ByD{0q4G_{W*(}S zm9F=JfZCoBo;!$L%YJ&@a{dtzP$Ko-uJ~6~>VIPi9Gm4o(O(rN39Six?SID8I3$bx z$nT)vJ8w=}P+EN2Zx7=oE7SI+O zmvuR7uZvA~PxiBH%bcGs+v4?H$(&y~BXW~-LtKyKj!&B&PY{5sBJZHjo8l zcH2<2tLR42_ab@m(c;&|f|B(m=iPNnhnHHH%1b}EuPohGI=;-ZY+jk7?1<_>8CiC( ztbur0_Nr`Fxnp^NhqtG^{7`w3hrnYGA4+ZWu&Lz%>5kED z&Y^_sWgPyKgmCuq!dLCpDO~Z>#JlP|Ciik<(g7w3@|gIz_$t3M_nh}VCdcu$_=ETM zSe?`{OcvohiBZho)a6X#AlkGurJ>}CWO{R-gvFYcw#g$ewXb=IdF>=Un(D{ot~Ca& zme%n^{%4tf!E*Bp+fe7k-%-b6C3wxtr0YyQzSRv{ zJgX~hVzH)YC1;f}`7#T9OVo4f|I3OAY+%=3$$km}4N*BO8nVm_SgHOzXFY${rlAH^ zE{ipi$?ssX7Rr=MkC(VHSsht2vpFiRHIMRm$(xH{wNZ zo0(-}x@AmJUa%%u>^HB`a7=Vjy~kk0A2YH!yJ>Xs8tx*eDvO^U>l-H)st50ThqPR2 zoX})$wA11!yUsq@NzzC*S~j(FR+J7a28u5^9rl>q^fs=gX^j7>(v8eHTyLs(yit}= zl-#0q^eOvbm)K0F@SCrD(0*%*f}3}_C)To9+G1guZ`q?}7OS^usb4=sbM8&`@;Q>~ z>+jg|ITGR}sWsZuuhyuBun?l|Prh zSI)87#;_KRTeIRz6!8Vd0sagR@QGlb2Q5f%MO#w>b}}@(qd6yAg-jm2l3|4;@g!)^@Dc8;mL)dAKWtQ*I0D@?5JccfN~?K~TLg;|Z(b?VB@Oxn0o zw*k2U|AlxH<5WN1b)(OU@j~Y{jcZ=jt=CU1j~uMr2`6` zmf169F1O2^d)!+NiL-i2TE-~W_LwS9^gLH=?qTkz-jA;9dQbFjlrC1OrWo}RCEkpq z>A%(HR2$-M(0)J8-q40|Sv+lf)81WiJeg#OLwQ`kzPIfz9sk;^`cu>cT`i2h*IK<) z^SykZkJ$Q-LORZl^O!rSM8fDSOT1TTZ;Vlr|Q@S{8y4NvtRo^Xy)^qgT-JO6^` zlwLRA8uygZ<-7$&{VveF;L4B$a2TUJFkrgoCQSc(cESnvww{~Fe|_9x$XD1X)Qss% zvJ{Syj>y`=<4fumMKYa84(6YnW7&m-_~@el5CgOTzk%%``j%~2_H^mYWsjHDGZj+D zWkz^w!3iv7djGO%%iXLNFL%NAE#0}ihp83eOl8P1Y&}y;$@M*oXSzLene5>ZamaZ= zhb~j)(1y%XFE6!Vb^tB}5#JW?Pwa)-dp-jV&DqRe{eifPFt0omBH$k23i&^|LB3JJ zc-6i3AxomRUd8SzWZVdTZEySJj6b79wa?F@@(rg_=qtWbQRVm3x1RsOVnxLvOUUUo zr^Rw%>`#js&cDoEET6KgEv{OIWXyCvVxE#PJNU2Z+Ht2$cbn<8tY))Vam{LO9^amm z8uyD6UGdfLJsX3p%LnrpJCApN!GKL>SeXhgI-8PTSQcRLGlKj^LmiWXgxE1C&zgaM|5{|33TtZ z8R&xH7b6X$mPhDC7zMX+d?M@^x{5sVLd3I(#K_-~|Bbr;j+!!!lMClCr?Rx!QpH&t zbv)|Hu!nvt^!xOC^~IfNo6(4*=#|k`BcC$Q(&B&)euwWggNnrp7q)p=dX7$_SBfk32A*_wY>g^37rWI2^{wML?}6+ZOFXb z!oF=o4GabgSO3VCPfbq`O4nLRt=_v{Opi#>v(mTHab9Zqkp0*EI(xo6uxgz(Iy8K zcY}jr+!KepmY(WMJe9)^`zNkF-pz3{+PmX^o2SIhj(soEv!8G2=#cAZ?9ga`)~Aa% ztF)NcAF_y7A$l`8hj-24slyarW#ZK(u1f}-A-Cnue-~e=*1C1)&kxvLFs0yx+o7VI zB{!Xwev6Bui_R7eD;{SxHV-TaExPR{E=njq;t9Ji?f=~Oy8V2cs&9(yfhu3Us&q{G zTP};$;Mwh=U*_)RkvzIAFmYC?kI0Qb!MDceQ$=K@vQk~y9XLC%Hfm+?n_=SWpPUSK zaIgjUX~uBRZJfu!Gdr9-*JOU-T&Q-hR`xqr6MnBtqx_o$Ii7bzhleG4#tEuwPOY+X zE2zHEwt?Hl{pEVmBRu#Y=Op(_&`_^Kf=@rymTUPqa(eWOD3Q>?!HAjjB|;!T?ws!W zF=$COQhk`SKlpU;882<{=ByF@^0+CYPEo7qn&?VZQmwa;iZ}9R)~DuGwYEh=99Qwz z+A{Cw<__LYeV=MW4Li7y?tYIl3&5#3uEJ?O`-YC80Vz&O{${-;8BI1!PSO1+nxA|s z<*#_qJ55?D9qY3rWgvZZ`bFs=cdJF0R4Uyp-Cp#dZbbd{y6}dq?9{9vM%dh#UgRSv zHXn5>Kb&>h=|sY~+@Cqw+=mTwBsL>oCHtlsNQ}~-L;i{!cv6w4BkA&kyD4ufyfjbN zJcoa^S!PKm-?3b( z7#QsKux*`Dt(#od>K~zG$ga;@^BA^hQ+%wdMc6F-#xQ))_CeJq&Wh%50ha?lJ9{vk z$sl!D#)7_PpBs7e_$Mm-ElV+iVLLsjgOiR6KPHv=-eAvX=q#f`7cs<(uRe(-2g;|< zM1pF|+sp1*yh3)d7jh3Us}?_QIQKxWzB;5W+v|7R9Q9;|1@^3YK^w&QOaR7>;@Ih5 zeT?%j$S3%hQE*`_fxxjhH6$QWd99Laj{hQ+rZ0!jwm>k^S^O$++F6dXO ztUDIAAIjO^H#ViP-JLsFHPHuQ^y5n)YvZG7C)>9NPX+I(zxUnNJnKE;7ulX4oZJ2Y z^lxK%&hMMeHEVWbG>5|_e>@PVJY+qT3g@+-N$f6~4*yMF2!8^5LV}&$Zc&IR!Q!mFHy37CM%*jE zTh3xlsW6M(<$WOGOJZAsId(h2k-x=pqxT!WR|ycoV(qfvwi#qyN*|Eq7`e~IChD*9iv z-;8tOHntV>eYyV(R>n^l{$|Wx1Kqe2wL=zv>yDX621i@k`Rk}hJ0EG=#NC>7*s{s8 zxq4YL$xiXu%FgJkO_sN1TUPg9bl*8z8{FpdHL}nn)B`mY@PGMOHX4`FJ#YLHN+as? zE4Gx}a)0M(%h4?}C@=T;rWYj`V4rc61>EECgH9xs^>Mh~-IF?w6pu?hlW>b2ZT7b! z+m|0qE!;Zp;LLpm`GuhAGsmxz$LyxITh2p^iO>l}o7j6wIL(j!F8NuPMwK>}JSw*+ zAI0}*aLtIh`h&g(Me#oRrmHI!^I!R{@_1Y_`)5ROUj3V- zg=t?rQZv$mA6u-fvuh9%w6)C+HY28)VrAckm)Mp}I zG+eASsro8j!ua>U$9q==RjuP#N=kaZ@jnMWt@LrFv>L$@$3n z${FHZuQu|G@$?Ze!9apefzL1Ks)Fz2fcO1LE4o6W*7__r;gJr-x@ViS81~I3_1N(?{$hVU$-LK6|BVpLf#! z?jseK4K6eJvR9Z?)y)k%8;DB4cN(MWbdlIGiq2Ts1&^HxODpy;j+l482J-n;M)Gm; zOo5qP$Irzr{(rqLrhcx8QYPPRwqL*8)^C;kL&8xepDebq+ix|Ko^_7lE&XfU>X*<| zsBJ48*8Hs^x0%XpZPxcc#3ar9Y&L0G!X%-%`Tv)0@}x!RU&-VhY*&0x_-osh!vib= zHZwHqSq!JSSCwBokD=458S-fqL&*EwF{u*_%t$=m`7ZE%xNFy)xYz`K*SEN>UCu$5 z7`_zE5Sc!A?dd+s(0VR(FYY-3Z3=nD~8#?$_%&zEr# zZ|e8wMsW}07HXZC$&8znqb}mcs%zD@jAL&N_p4^H_8E6+{;Xgxz$th;;{%C}r-NT+ z?gOntK7oFTMvQ`cXVfG{jqSrIsk5PqkdqJ=;tm@lP2xgEh4zq9JAFk;L#LtT&c`Nl zF<1029vR=ybi$7?{pj!N-Q5zVpSTS_$aD)Is7a;+_!B=P_9N7+J-SQvCKMi5Z%n$a z@0EB|z0djPu<^rdhVM5|NT}i;8+~!~;W0(AZa>eD!DD}oaWjZ9$TN@{yvXb{5XbK_ zcxdp>pxkh~;TglY!iDH6rM{7o(QTt1V_V}YqiLxF#$(b`O(INcOs3>ZOj=E}CV}k3 zCf7|Cj&&QG8?&jI8YeJio66gTN#lFAXTcHK?Ygh(hYu#MBJ8_b8=j@P*i~Lx3S!GM5yiYv6y>e0i^U5n+ml8r9S^d*!4#SeSo>$ep z&0=ra{NQPpD_!<6`yCd`(| zS71-*mWmCkKeeO9VRXWtj9$G$IB0SqhgXVRz+7VBj9Tjr_Agy9hV@JR1H z7ks6=yRtq0h58lavfZn30Iq^uhOcrQnhP5t$&4b0sQ-!2Bvyt7YWkNi=l@&Y8#b=z z{3=E;XK<+dXx#qpt+V!Z_Xm&iZ>Wzi-&XWGoOZNn$3(8qvaW9yvt%U8Vl z;<*iX(gjIg9u>+-;jfLkhWptT@^s9y)2+rI4X@cJ^zV0w4U+$8oE`5Vw`@KrdmWcu z>l<$#iy2*V8W#U4?h}t}v}HRAKE~~j17a)VybZJlSJH!`YK*dNmK$xrlj|PE2~4o; zQa~MhvEw_xruTQwzMQ`~g>k+MD$yNwaMWYRHHK@V!eXbyna1&IY`fYDwh4C2^jj6m z)2+MZlbVm3y!F$s8Xnk_GN!4&KobAedSTrP@2a{hWxFdYdhd=M+4tLh-Rg}-gGRi{ z<&(k#k3|eNyfGf~N<*jSEw%j;^dwM@!yg-Wju4L7B?2EBIaYk=TTA{cxd^ zVaoQB{FsgG2QGCntJszSaAH}AZDUC6`UFjK?I;#2+BI)hb=5|ERMUb!QGnzLQb?7ANu8_s;!kv$ipt2tu!EB`KiubPj^yN$#myM{H1hrOin z?MQW6Y>nf}7W`=_i}lOdD(l{&&%P{HTKu|kYZ7v}!*NF@O>z@6cBELm)CGBzP+}32 zdOi1w+9@ZOzezFIa7HN^%r|7Q{ze&3?Ml-Fu1=QYp*>S2y2#bk6_SE%r<{NAWyyS` zo~cgyNEOoY=x@m=gvFYOa=6JvRowBEKM^4QIU+N9IOl3~enNcYo}_WF8$16p=lkDW8(l2zT}1$h9pnAl53j|WaWUVFslg5vTegZCn7V9y@M>XK z3{#7_(HYS-3D@ar%&u#i%djY~i-o})@g33YlKi$2HOXz(#HEs3%Hx9V%VR`dKMgv` zN`94XyKdE|>Ngz+f)^_GXDn^q!*sXYEQgh`SoLiaXR}y;GV^P0!+uyd_?`QNQl61_D7kH$I(*v~2!B@JYj$F9FI?Tp)F4&N zJY9NJIo9h%^?i>T{z^tRdzHEF!c1m2)?mx5F0V4{L#9Prx}SExogQCfALnQFcbp#d zpmbBk(bP>@#%)6OdsaY!QAD=?)RfSiNMbc!oE)+kFytZ*Q=K5?kFB+x*_7-tdWuPN}I(j_O@VC<{H-Pt;~?=1?t@| zo2t)r?V`kvMo}f8ud{jcO0H5rGivAJqNsmkeouR*yJ&XTu*D8dR*flj${oWX_w7-8 zqa3lbQJ15xMm=!99<@4nM-&<56Z0)Ds+Jdd`I>ZA)V|Fr?-+Rh0=zo@mw4n3FNw5^nh4gu5{tT)W3SiFxC>!uETN z(7-gdwqikC0xzYsG&ZKV+AuAyn<43~4m7lQXtdKK%y2*jS_j6x3tbp%QLTtu7sq1V zwsiH1_IL8z!P{x#9DkA5=CG2ti5C_h5&uc_DP9TujbSBxh<_K)YoE!E7#EPR%Db$j zy}~D98@s;bd4jo_USh0Sj<0p%w~*At^@&+dPZA#_x{v#n_%FpbA#$0>=X(D#r>RM+ z3y!ms$~fk;l4Iif%!jp{O$s-Zm&`AHU~xC;m&JCA)usH>xt2H02b28EHYDdHKWDGw zGTjAdZE{}q_2gycv9nt|##%Wz?=^2qzY<-O(wZktF%s*0r3LBh-b~5Na-47>Y1ObV zDOie0*sxT;iKeNSs?1VXO`2QGO??>DlKLw3Luz~4;AH11CTW&w0ck6z>`%R&_Pfz` zi4K=Lt!lcmk-g-Yn_YTa5i|PJ2mG!Ztd7|e&SI^N;aiMK|C-*|Jed9~ed&_l>70Uz zYQv19I_jT~TsH@~n!0AR7F?Oh+|9FcG7bV|WtACT{p_|i8N1UmJR+lurv9ubu)fuc z>&|Pl&urldEpuE>d$_QB5_Znv*LrbqW*qFuY~*%xW5g?~pGGcC&dr+D?31@r@bF9a8go+k zW9~{wHy`z#9=yP9sPGu`+?k)Boqy5$UC-_OSAH`JBFo(SbPAp?URs(~Q11A&a7@wT zwyMJ81s9!k3R#5?9y+e>Y?<4}{H(&@w%~`{d%8qaI~C6;~HuoU^O!zUwZ%L@O`n>9NUfPm6zZ9uzy5w9on!6jhvD zV%=C9W!{rCNriB`wo0Z{W6g zRhBJosV+Yq#Z0CwyXNW4thA65Q{Cu!p*EtdH#ua{&vHX&tb7q?s0=Xk@QU;Q*zZ@K zS|09EU0%`a=0TMEd0#K@^@{U$@%rew)6>)Yaa8>Ouy>zPP3_^j=o1p6h(>JKX%g%@ zv0}&GXL=*O_d+0ngalF{34w%`fY{5j_ujiM`?B}mb=h5Z$^Gj-XWxCw-DjMA#`$o^ z*!hA;$w<&S$$X#Z{f(!O&mMnUFjHTwU#@rPPwOx1ujudU(c_!K_*`Ml!3q6xb0+nikv3yj?z8f}daPkWZ3jae=ET}`!}yw5+5khgA%FT_ zIn_WnP{&S!TFJ-goCXAduMi1%H zVcVxyO#eRpb6$shlp<;*TuS!*giHM5N~j54Fv=)|MPwVPdO{UYtT= z6s#GvzCaAbpo57Y!P&>uuI-GI^7Vzs3ojNf3lA{gqh2i>V%}KT(zGM!_Vz7z@w;V| zni0Mjh22bN%rlQD8f{)_?xW4fT`~5UxmDFAb4o04QfrcP2Y8u~ow5=JM|lKdNIde_ zn}2(2nf+hiLo*QIv;=N;_S#z?cAuE|`qk3b83!9p@88_{{_S(?L6g=uz4_VHhQ9%f zNjp1I61*$;sfu*OB;OJ6swR6VVxl{fSR;>#`LEv)yv;@+?Q6u&?7*TBn!vw=xX`E5 zJo(TF{@Rz6BhGHUoW|Oitn7u0jwa;JKGLdwCzpksxS#=5nDQXGxes|FyBVt0oDk_e z-inGzO*x=#=h}MnpT`9ue8)M%I<`b;cf}3lQxHjo@-#hdKJG*1_Kxvyo)mOsbv>9+ zU(vSHwsXi#Ll;)RZ3j{w9A-Pa-n((ub0vEvCH}A0(H%go|sc*;TrOsiU z7W$sfWi@xBVs3=~zFFqkzj!T(=GUj-rXZ#)D0z7Kg!|)_*_emhI<<`hj|)7TDc}v_ z|9z~#-~IJhzi!PDh{{4OZ(Q;1F`s`l{#bV*8dSY|x_{R?ZO1pamXF=Gwctec)n(ge zXd8DrX3Lr=?;3?oI?~l)P5XOKc6{9{`D4Ne@Jk^-h^WoZzOer4`J0G^^_z+?q?G!^ zKgWRk|MgQuw%F9%4&I`@DeV)$@2F_RqDcve@km7T?6-IE!x-=W*=qksX3s_t;PHRD z5jp&8$i7IzqQoQF@3n2#q>MOnpn0>FarNONjS1cA)uny@Ku&3+d3@@~f$D_R#J2Mc z9~Ib+eHJ@D79pB1jSnUCJ3V3s@@-;#i|m%&U$mTro&4*eBM}P`%MmLOD-r7v8xWfi z+Yvhu#}HQ$*APz-pAlaWixEo@%MeEpN5S77N1Q-h`Ten5h{bg4w-@MiR^{!jqC%S zgaOEbNC=sU9D*E*9EKc@%tDSpjzo?^jz*3_jzx|~PC!mXPC`ybPC-sZPD9Q>&P2{a z&PEcDL?j7GMpBSeBn?SNGLV3YM6!@T# zqz0))>X3S5E)uLOMdl-oNE5OES%@?vEyyCI6=_2jBdd`Mk&BS)ksFYmVmilkiRl`1 zEarI3wV3NMH)C$a+>Sw@kSG)?4%Gu?LAg;LR4K}f@}c~w0ICudM1@dQsA^OV3amIl zg;5byJ*ojU2i1t0i<*a;k6M6Qh+2eNf?A4NhWZ1w9JK3r z5w!`m8MOtq6}1hu9km0s6SWJq8?^_u7qt(yA9VnA5OoN37$Gzm>cQ_xg24NXUbs3AHB%|f%$Tr>|2miD7J#BPk;6uUWgOYGLzZL!;9cf{_D z-5t9pc5m#y*!{5wVh_e1iai|rSM2%N3$YhtFU4Mty%Kvh_FC-q*c-7oV{gUYj=d9m zH}+oa{n!Vw4`Uz2K8}47`!x1h?DNo;$;1r848{z>48;t?498?)Ky(h1jTw)bfSHJygqe() zf|-h$hMA6;ftiT`gE$O~!D9#*B8G%9V~R1Q7%!#@Q;%7RS&!L;*@roZxqv}pW3VVJ z8XJqnV4Go^W8<(bu<_WI*jC``UTbUuwhgu|wjH)TwgWa1+Y#Fd+Zo#h+ZEdl+Z~&P zO~$5RQ?Y5-9@um&4x54PiS32$jqQW&i|vQ)j~##=h=s73*g@FA*df@V*kRb=*evV_ z>`3f5Y&Ld0b^>-H791k5Q?OI9)3DRAGq5wUv#_(VFcyy`V2M}~mW-ufsaP78j%8q( z*c>bi82dy*r`ndC}xCwY?ICw)k2nbIl+ zo65|edrF%+JN=iy$92MW!=>Z;;fCNw;|Mq+j)WuQC^#yPhNI&c zI3_L!$HK9392^L0;rKWKPKXoX#5f5K1blFEoC2rBsc>qX9p}b*aRFQiSB0y_)!-K5 z5D*fIfm%kf(eF@~XxC_R6d7%V=0aN#+0hkj|C3wu zwD`2rw6Zj3nk%hOTJN;~{!@CU^-5cVxR81&6_JMeA3pjopPiDnEUj&in6zeTf;3W^ zGED`3Vq?;}rwvW(o7V5Y`L=?lcCJ`^)ui0uXpzbyuSVSZVAyg(YDcc(e}{} z(Zp!SXs2jraH9FQx727_v_~{Oii>7Mdq#Ujdq?|3`$qdk`$q>v2S%Z2W^_<=aCAs? zXmnU~cr+_IB0BQF`3~cw6QUENlcJNOQ=(I&)1uR(Gomx2v!b)3a1Cg;lCNvA04Z#o|B0xll1d$;MM1^P& z9b!OCCm8b}N2AU%`|8K68UA2LEF zr~oR2%#Z~tf~=4YDuzlRJLG_zkPC7{9;g&5gS?Or@qJ%ye@&!HF4OXzRt74#Z<1HFabLGPgt z&`0PW=+po32>y4^p#S#Y%dbEGug{_X?HTmH|N8%v_y6sA7Wp4K)BgMS{%_C2#Q)Hl z_}}^d|K%v$2^@#Jfn#v`@1rmhhr+eSwZnDAb;R|+4aW7wjl#{urQinQdf|rS#^Ji- zARG>tg`4od_`m+|-0y#W=s%x<|9l4i^BMThXW;+pGcXrUq@r@hg%41=3VMk?G1Edu zcQ+TovWkCSgwwu~NZo%p|7om|_oOe9iD>qIQ zkxr8zud9gQWsl(&_}Tb*`00fAwBgK4;AMCm`!2t=Krd(~jaBT@TjYFN5#WH`xz{-V`F>cZ|i_tk57!FITy9;N0;+#BYS_35N!8d82%oKr+grnvCirDmK+K`3+u@2dAlra;F`i8jtp%l8k*W&)x`sL z!Z25orJ7s$!MX{wDtKn-eHia**>In{jS8`Hc`4ElQnWlv{XyMZ!^;2D1Y3sGzjLy@ zeE+NJO`6rllcu8$fAEpz{)$a?m5R0GQes>1>)j;g7S<opaH zr`&X}!N0s_#~ih0MZ@*dCG@E5Y$>+dMJl7ADHpl-g*(NgF%fK~rm++GXBEdevO_5M?UPhLGlaE!ARdjWlE~1;P+mPQ0 zEGmdEh*}mErCOichLyYpYeb~Z`L4}Akh=}IL&Vw|ut$7xog{oQ(yO79GYjrZ*}*=| zS(!J>G`e6V`(;Ud#ldhJu)ma1kHll~x#YQ2Iqe&LDl?9CgcV}9ZrD zoXZ+0vn3rKS|D_tYftUFRO`?F|rA2gZiPmP>;$tS=NDlY+Y?}&r=9FgoZ&!S&M(X}B=QOT>SHo-IM*KqjdBRlUCrd8z6OlqrC6|z2 zlGjjOjQi~2ycxWKd;(v?PZlvHGnEI`hYYU_ZwkKHV;#+%u;+8=eoZt&Z^)VR7QRjF z&vr;Pifs0KsZrs}Bgh@rql8DKsq`jJM$J-557ijekbH-EuX$$CN!w26X;+Dt=NnOe zK6t(=nPRWzz{3cS$s@^E4dJ}!1y7voE02Ngj~5yWh+PES(hXFL#YDKsni}$i2f;U$ zPpgRRY3zE@0!xiLKOzXOviNhoVW+jDTwhF-t83nqx>8nq+WD83oTd_dO_9xtyVq^K-viZ0(muw{FD_?yc< z!6OJ61PQ@P%p!?M%c-sDv5eC>-?*CuUj!e722nRfZ>7z!#xNkSeW9+*}AB3min zXy=(?);rE>Zckp8aI$2*jHdm|aMHTPyU2du{?-MTmieDm46i;OmesdgPzzVXt?<*x z(=xxO2Gq@TZLwzcAj>SvCO0{9A~*_jkR^MacvuI9qcIkdax~=;s`qWI7zNqUV*o3 z`C?$~o(vhQa;wJ`{-|DBH#;0#-_USv&Zv1T(rVIYa&yXM#%JL@oie}+?wmi9IEplb z@{^WrDX8MlyD)!JUYt(vXk+}zyTM;E=cZv#P^?1LpM>Ai#PofPoE$m-xS+KZBOM{% zDF3XvY#eFRIwv$X!UX&YGKQ+-JmI|Ne3vz-^YUW~3I1@+UGFa!y02&}VGW^zh>)G2 za2dOq8(0e7Y~do&7(WGFIG6+FtgL%x$3+rP&77u;ptTM-+7?`-#Iz zcUhl=>%>pQ{bjpUD?R7KA=8z{St3l$>c;&hk~9vkCmbT@vY+v*#Ucq${v`KgUJqlW z$XQ%h>MFk(D6C3oSR+|2EmvKJFTo@6CHRq~FXZ>+ht!+2myA=)6U-=+z?#jD;r8WT z<#p#b6AhHGS?eWxCC?=DWI|Pus8x+8X#%8Zf;3fi3K;2Q4SVx184nhYG`F-5w!d)Hy5|Q8 z>XP}bd5rSD^S)WWR93KFhEec4@@IM`^F+>4mXBYe#pw1KUj!Dg5T1KQ2Es?#Jg0y? z!;@5ubv6*uY`I8UF;}9^9c%7ri?w$zKUt{_9WPxKN+x_GjbxK$R{c=JEFik|t$FM` z#LDD-<&T1|kiD##!c3W8_1thTZ-7PRSW-c%3OBSRUL`9jQI=OULb=9; zOdL*PFUkQ?Gr`H!l_;q8QE;%!n2c`EsD@-xa5Y9_TKP0rlM9G$Zjq$pdn z+pxQ^-CRHS9#_vR5xRvpg#l54sF}2-w7=9OEtV~oCj*yakJ_t=(=xQ9b2D;fxyOyj z0uC6$NX&1|_bhFSmRm>I!uBhGiJ$J_ct3cP{iFR9f1Y0eTmOZ4VvmovS>nd?WpBD>&&Fp6Yk{LP4GcQKA(!;TjIqd`$v z6Tuao^Ea;-R(+tYAa@Lnpg8F`?h4TmwO=nND7W4#(R(L^C{+o-sS1X<`A6n711_Il zvRJmF;$~PYnl9_CIO^(He<0lCb?YqRFRVnkpPpkJC_O?PMtVTH$aL^}@)LyPB>9qL zX}{X&B=}&2n z;<_PdtTbZHH1l0^#F}E8WNTJB#6K!52&F7|N-&a6lOK@d2&<^C8F=OxLpe*#?oNKl z|G;O9T%vKJ-J&z%=aR3|hnzEtpNbB;$GJZEx$%ps#&Xws&NkO3uupd}Tx$0o_jk`x zuf75q(f~lATcqurbA$+^QgG2R)YH5oC3F~{Pnb%|BkTCnMLbzQ?dFQ)&{aH_eKK%P zGRH zcnqV7m0;h<9?13ZQus3kLxfT3TlF37S$m1&lC#{qBY+4E2>HV|=ih962)`xwWcDkn zsG3#(b>3}lPd%ADiRxi7g!6?Lg^Sg1bZPk={aLjKbxr;(*Hhw`(icERor0%?HUyQ- zOvg{o3(NlC4f*iE7sIrNMO}{4NJRL|El1PWmVB`+Zg*X z`>E18Kda^;?KopBZ!N%9?8>dG;l|_sbi(5Th~AYa;ajA9^+#hDi?-yWqf^=B(B_5{ zMQr0&3$f^kJ0bMkTx}WVx}TF>&>wyeH?Z#U_6kQ!-^re-Riy>qQGU4UL-k(`9hDjS zK6y`_bocrI5}ralMJ%WO!%E~1<~q3Tc|&32wjx5Nxk8l(^ zOlAB1xBQ-p4;6E&3+iI(AJ08XqKiJ7I>@~0GkJ#t>uU1CIL%xJ7I->8gL7(b8oPvY z7%}oKqVI}{_(`my@i`WRYJ9#(Ccw-$!+Y=V(6ku*Or zjgroo!|Kkh0CYl4f(kW6MW7+D#65s_(Iz%^OFK@HX@2YRm>v!G80jq6@0O4Qu@14j*Zso%;M;(AivlDpFgE8du0iWGm8s$Eg|jSKe#jDTlB@WmHflHR<@t^!H)foO~Ht7 zY3WCfU$|CW<|~jrP>hCk;2ByKD+6z(W0vrj8}rUdeYmTF(3p%zrF+6d@ad!(@!Z(+ukkukt9y@x}d|&pj&x zM~aSBDRSEa!(og_AytCaS$`Ey^t>+ZLne|lC@y9h*UH<(pDr{DR|`XuORCfAO~!Sm zs={mLQ?`PVW%kwHo&Mc{k`Om?vp!y#Wo;mgWv}Cv$*!q}=EoIOmW*0(Qr6Kjf?RHV zHAl*u=XmF;w~yu>ypq>hIb0p1dyp?T%e_>;IdGSI zPIT0G!F<)(3-oB`x?h#{pL>v^<^?2dO$Yt*z{S9*dc5RQek=GIe2?CjDa|>}T0ul{ z=W-MICIEaamuRJ0%`iho5y3IX(com4FAO{h3J4HvdM}S z^%ghX(;BZMt>jJSwvq+SW=At$sqY_6M;=wULwycb7^)jFq*0W7+GfU5fmYZhSIhKS z?^wIq-iFI0TzhBOh&K|m86s{Tw*~KrECU|n@zt@yc~)focfvsi&9uA_M_N|U##35^ zC&V$Q8jcq|v+W9A3eFDg$Dbhe&O!3lMsDLfI$uV4?lsnxnuux#v_SLoX2t8Y`s3UeOpf8Gb~f>Ze825)n=rC# zexW#38RK#@d90hNu6gfGn`|8c$2*AFOLl$!Ym-nGCB-(RvquSwts4S(>NbA7&0dEj z^Wbg7Zp@K}VfM3CINpN-H`&ZX+tzpn`ztDGkq@$U9&&A*pt)eDnq+$A&k7Et67hYA z$4RHi%UCw3t+zQPzR!g_(FP?DLNc zCe*JbSh->5PSy_Y4beBzLGdl=48=7?yk?uWHn*2?y~SUGuupfNa65dd0^1n3vMLugk_jBN>ZR_Cr+?{k zUvE-tii8czR>(2=F0i=wocF%>bkzf3rIqu_@=jS`_d=1x=p&5>>!RcGnMPG%wY4;S z%Tlpm8(u3oDq)wF!t3B0gjD!6@inVK;*jsrBqtu5$gd1}=;FZivYb5+K0r}{?H zd0SsXJvkyfrTHs&aQ-t#pWu=(eeQz!{QU8Z2F*YlxBd}43}24lPTWY^#p%Z1lsDRZ z(K)1gd-zkhMI3F%M$A@2$9OnykvLpMElto5T!XMgSP5$abnfud`? zsPyR%1>RH)ifkc`&p8Q#L>*;TMXf@qX{{3)ei&XAA??NXnPq1~8e+|Sx4GOtsOE~l zKOsQL^($3J0?i!f`3q(5=QY6faKc=b|DZ?iK`4r~kwU8D|ITIjmb?VG1KbDBgonYS z;c@T;mFFN7Dv8{p0GHux-j20j8GgAc)1;XCjv_%8ez zj>G5RAv_Du!PD_m@g}?%AH>(=i|`7(9$$sm;Y;yhd?(^1{9XK6{5AYd{CWHh{9pJ- zVDm&5LN7vlLLUN-5KHKW|AbE^^d|HpG~wUi+Ym5>iG-;Hl#EIs5T+4w2sE&-qL5%G z%prIPTL_y7CkQ7An+b;qR|t0qj|r~`4+*acUkU#Z;)qCM3^9?|f!Lndg_uelNgPfb zO&moWN6aRYh_i?kqLBE-q97`XTB4okBwnKhh(2PFSVgQM))B+RrNlpoi-{|VtB9+K zn~58Vn}{2TTZwy#M~NqhH;MO%)Y9j~SH!o(e~3*WLKaVIPr{OVlKPMakOq@Rknp5Q zq?x2yBrb_UQj+pX3Q``agk&RCfWAXDDVO9WRgqQ%mj~C7){^#s9>hV?8PZkK9nwS6 z6Vj{td!!Gfe@I_QUr88pb8?ok6*+<2n%sfhh1`QYkeo>#OwJ-_lc$g;lRLuG$+O8< zh+MLQtR;717Lg0cPI8#Mko*UE8R$Z6Aa5fdCbzX-58oyKkiO1+O@2mxMg9gNieo6* zlzx={l+ly{lwp+KlrON6g$O4aZ^H+Qp$14V#*H6GRhjt z5z3#G6_nMKL!dLUkFtkyjq;fCgwmSYp8AvWn(~VBjq-ppf|^YgQD;#HP}$VUR2r2| z&7uyba;ObdJ9Rz9PhCJQq83x@sq?Aps8*^AbS%oKE2uZ9N2zzIN2s@`kEoZZ?P;H> ziL@r_Pij}%S1L>+(C+3Ap$(%AqGi!kG%;-;O-)nMN@;em$z>s}mKLNfqphQDqivxb zqV1s_q#dRmp#4cZOFK`yNV`gVP5Vki(4!#a7e{YSkEgeyx1)EWC(@5oyU{b~!|7Rc zm_CZ0O~=y}^aFG+T>v(d_~27rz?6gt>`%jQNat3y8|- zu=GF#HnIvqm&C%dvs|n{SUXsUS;tu?SeICTu^zFWupY4PupYBsvfi>ju|BY3+0EF^ z*{#^^*eUEZb}x1odjxwtdkPz7li36|9=OeFww5h~O>8qez^-D~vKyJJ*}K`>*n8O9 z*+<#?*vHw|K@;UC`y2ZeJHUCtj^}jXbmXu($(*j7Hk|gHG)@;zXV6cX#UXKE&P z#~yO4X3dx-ld_b=`_?iKDs?rrW3 z?oI9k?tShv?sM+n+;`j$+_#|j@`c;PMe*Wz93Gn&&uha={B2Ta@y7F}@n-R0-asCa zM+1H}lPBP5czL`6u*=QKE8+QhUS1Wij5nXxz^msil;(g)0;{h?A zALXU;`TWlO1b%NmmY>P*%J0DM%g^Aq=8pt&-*~=~U%=<_XYi-+XY)n;iF`4C0$)-PB0=s@I5bS3QItVa=PyEk( z1n}#>@lk?Q!FT>Uek&l^PZf+6^b+(0p8Yt%XhA>05WyJ11i>Uho}fU$03Es<~xk8bU zCFBd`LaWdz^a+cF)xsKKSa?b364nZ@3eO973(pCo!ehcq;y;DAgr|ikg@=U4g^j`! z!j_`f!gs=+q8L$g(Hr4ELV{?lXtt=E7%vKoDn)kDYLQ8_L=+VHL<>Y)MJka(v`_S0 zbU<`W^iXs{bV2km3m5`&~r;*_`~{_;l20?BI0cFAGMG08#6 z5ny6okld79m)w)wm%Ni0WG$p9>32zNlI`Ck*QjSzCl}Y7No>VB+ zOI=d0v{LE=I&3|#VGl}oN>2bGc8~Okbcghc^oI1Fblh(%_O0|E>1SzcS)wdSmLcmY z%Zdz;jgt+NjhAJ~hRdb^eVH#~%0x1;%qP>!RswHXDGLC3`48D5nMbx=_C~fv_BZgB zpUZa09?9;=ZUb@owQQ&Ctn8TVscfz?Nj?R*%GvVS@y$fzyu4MuP`*pvT2Ub{1|j;B^5%+b@-#(;;=a74;*9)~{Hgr1e3+uG z0mV{)^iK*0u{u}VQv6f3kqI?h*&Q7{#dLZILR z@z|kIDmE$BDgILI2d42w#XcY&KVzL#+*a&X90ua?0A-b8p<*tOj<+c8D4r=|lwFlk zMGMte#e2n5MXYk8A_>^X?UgSTEtGAQ2bDdP?Ua+0EtLl4FlC`~s#2(ADy7P4$}D9X z@Q*8ijOvr$%EQV-${oth$~DS6%Ja&*%2mo6$`{J-V8c^l={IFtRiY}h zF;jH*y{b+%U$qoS%BxlD zRhv{BRhw1YReMy&RHsxIRd-c?t6l>8_Kj-a{O0O*>h|icK)das=BlY`p<1bSsw>oU z)DCr{x>zk&=c%jJA@vdUJM~5NUiDS=QT1*0I`u~NKJ_m3P4ye~b@dB%vSzk-n5M60 zj3!IdSu<2KSkqS1QX|sTXvCTvjakFgRBGxpk8~c*SFks-g?6jvxaNswhvt~(Z_ORe zY0Wdu1dZC|ZPJ6oHqov0nDg|+G0 zsJ6Q{OY79G($;HFXt!%GYWHf_YmaC*X)kFnYlGTl+C$m}+VQ$Jx>@?awO_PN+Htz~ z+DzRW?I7K0?O0tq-Dhp7&Y~;SIdpcNPRG)H&}no|omI!sRqCpAhjdciX5A9qBHdEm zPTeuxD&1Y(W!>MpOS)^ice>ZQo4PoCy#AZ6jUK6Qt#8tG)pyb7>$>YZ>67)4eyo0w zo~Re;8}!xs_4;@EHToU;&H8nq?RH9kTYp_2m-|!SEw^*7B$t}&1s<(1cUCSfSDhQo z{hsU2tpjT9n%t|oJ9GEtUdTNG^xCt)u>Bhtw*Tb*0FG@mx0NBm&=qL5{SEzqOFYOh z$}rk64s_wB7-kw6hJ2tlI}Hx7*{j+RHY_$QH|#WQG8{G>GaNCTHC!+}Fx)fTH+(gG zHnb*m%xjU?EiW;zd)|<|fqA|2aCu|%;5>ZZwfXcsWu81wpI4Y?%qz;X0FQoi-r2m} zc?WyS#ZA`O17#esTUU!F_rD$^3Kq zm-64`-OGQN|1|%3{_Fhr`ET>z<$uZloR2o5jIqX+My#=wu>;VqlZ+Y0e#X(pNycAo zy6Hegonp)}DvV;#tW$w~IE6-&vD8>*%s2XtJ|k$18Rr1&aT%~44*~7*uyLz#uW^TQ z4-g;E7*8567_S5G@s6_?d(dMo3oAJHzgE8LJ$`ofxHuVHPVk%G)(@jHwkvPgU z)iljC1=xrTlfWc2$xRBA(j+sfO?s07wD$^4R+HW2GI>qqz_JYg)-30kHUQyphiRv2 zm+6q{jOmK$g6WRwKJZ$fnqHU&mVP%iFKAYPF6dp5UXWCP0}a2f1;c@EJN36~t14jq zmSKwv%mtMNo&_#%Mr_diz{^8a?*0fa?Wzua?x_#@@uQ>eai#O6U!^hTT2Wu_F5ESfU4IC zD0@joLyLM94J#rPS%ASeyC@#`dcTxCNl|{0tVj=hJvFfQ<`vZ!Ehwr0vfiAc@}laZ zATanEicbCZ_09ol?-)?_o)@*Twzob3)*j!Aur{-{vwkT0T-4Fp%KE9OhqWj0>XNO) zt$nRyth1~WtrROB$aMrO!^*RYtu(8|ssdX)|=T=)6Syxy$1A}fO*c`VL zICKYqKX=G_&3eIl%lg1Ns_~8Wz4fE@ll7YwV~eqMvvshwuuZnjv<G1wN0_* z*=RP{X0XX^S{vRbvenppHWt`jYO^)kb^)tyiEXRxIM`ph+BT+mv2DHWmTiY^fo+5B zn(emjk?oG{yY0R0zAd)6MRAYf)Z(_qnZ?P)amDe)X~k2DrNyI)hZc`0o>)A*cu?`k zVp%b#m{!a!W)|lZn~RmjiehVVQL(G|vdvb!E?83RE%p_I3vR`s;+o>x;&5>#aPsCB zXO)Zu3gWDi*(GoZp@djMEuoY!fJw|Rk(Ve+WF>_q&XUp+5OgUiD+!d;mdr1iS2Cw$ z3DEjBmFz58SF){SM@eq^(UM~&CxORz>A!e+L4H*=_?WwcB25_t+bOygmnr>mlMAAgw3U;0h{*T0BOCeqqn1nW1wTEqdYvtF&4<`M8^+%u0!jPIHW*XcR9Qczrzkx^@WZ) z$5O`<2hUOCSn1f{*y`Bl*x}ggIN&(s*yT9kIO90)xbC>-_|tL2ao2Ir@zn9n@!jz+ zo?)!BnX`qnl{3Ma=&H`tlv)EbTtah$; zE^zL4u5sRXK6Ku7UT}VNesF$s*0@lv@6NBzJ77o6EoYqTx^t*&h%3=G$d&2Jc8zcm zT$91>n!c`%u1+qGYmRG`Yk_OAE9~mws&tisoi+NBgK9alQLlnPTyd8M+_T%e*Z0WRt) zAf*O?j=CQBsKvLnC`JzjRKYBkdWQi=w5NBJ zcanF4m*i!7xn7}H<#l+Az4N_BAn9%ep03jy@m71+c^iPKTj5>m-2gT|ZuB1Z9`RlR z_T_c&ZSPla43Kp{0$caJ7wu~aRNZ#IiM}Ks&esR%y5oJ5e4~J|o8_D3>+a+GxWL*K z`!qhKPv^_`75IvME}s`{Rj%>X`xg0D`u^~(@vZl5^6m2N_3if^`0Xv;_C57|^nC%9 z(L{fOzooyczq=pjALbwLXZcC~DgJ4Gt6$?+`-Ogw-|2VzSNIqCtNhFSfB5J4m-vtP z&-f4dZ}?yOKlq>eANk+;+n3+-Kk$F{-|^q{w=8c~-lhD$Ke0TaykmJv`QY-^k&N=b zAwamC3cSl%m4wP^ zK+qId@+9*soYR`ta4-JzRIJO ze^#EVyjl6M@<-+O%9oW*l`Vp?!4AQ;!Op>U!EV9iVAo*FU`B9oa8z(aaB^@$aBOf^ zaC&e`5DwCV?4U3x3W|esgA0O7f@_28gWH2Qf{%j_f-iz^f@PtP!PwB(;J09#P=`=z zs8uK_lo*N+^$ZOQ4GoP5eF@@2gb*=A3SmRjLt{g<5F^A5$wRu3DYPPN2suNxkRxOd z`9r=?Ftj4HKD05kHS{3#C^SuYGZa(RwyJa0pem?pMis4!Q6;L90CzMGn4{%YzA7iM zMppx6bk%=xMh{dStU6J3s_L(*D^+)^?pNKc`cd^y)u*bY>S$H_>VDN7s@qg^tLfE~ ztEX3stEW}hRgbHlSxu;(TOF>hscx*!sXkY|vwC~=^Xk?$->N6o45;Z`lUCEErbo@l znxQqLYS=aW8f%TVhE}toW)0ZLS6j2Q=1R@gnrAhSYp&HCuDMhr_n@~Hfwr}mw+SJ;Swc~3^wUcUDwftIPEw@%#+q+s{YpgA(wbka-T5F4I9knI3 z&bqQXe_buuhgx6PP`9vd1=xRQy8CsH z>mJmlhI@qvga?KvglC2E;hEurFgwf*bHco^G;9c~!xiEBa9ubOUKL&*-Wc8#-Vojr z-WJ{w-U%$wQ{fZgGvV33Tj5rb%i*tKbOaM=9%%Bh&UpR$Rig>DzI_Y4D?HD#1XMXN+acwU?dco8(9(g12~wQfrEKC zaxC&^&MhjsmFs|;Hr9Ey}mxT9;|t; zUsb=peq;T%`Xlv+>yOnxuYU>Z<#9l!Zx2NJ)ZZ3;dP53O=Lh_jyR21enwcAW%PA{-xa{>Jpc^e zoxtNg_gmk62$b4KK;XUKICAcLu%+>BV+UZ$#sOKjC2(h(17o(uTr?14y8=fx9hkBZ z@Kgr@Rdp;7Q~AI~H39wfDX>1@&W!_d=Sxt`#{hjZ1NetM<|PA{vctT#z}FlHq|GTn zr~IW(ih)T<01l-ASdnGGOVj~Tat=@wR{|~Z2rvJwT(Vi(?qg{UYwV|e8{cA!Kv5C~Q9YJZL zHqn~sP3&m9l+32~DTABxaYLH$O}~2CLz{**{pw^7Z^~-=)zKc&G_vVeAA3~O=%!yC z?J-Sbn|}4R$2Da){pxFvZ<^5btFt|^X;KrjDW{3m#BSm=ahra%*?)DtyF*FP(3C+b z|I*JMm9iXxf_}BLe|56Yf;9rM8UMAV{i~t9WKeACdc?0r`I(sMO*5KiH^EIan`Slf zn)pqErub;9=&wfjMnsq2jqvWjJK=oL3MYZ4wXjLlByN&4Nt?LQ-k`g^EG;E1IcC16`oDVefhx~4bcEi=;el_>&{3{$4_K*K}`^K@En9OFG%`@XNTV%#(w#;mmiOp=C znUL8gvu$R(%=VcbG7~d9W_HT#oY^I_Yi761?wLuM$(bpcshMe+Ju=fXahVyJJu`b{ z_RhQ>b0X#>*iLdP29b_Tk4ZFv`yq$j3#Oz)K5IlW7I*Ys}b-P4oOlhaev*QER(93fyPjD%6}M3@7Y!U1>}JdP+K zs=)jfK|+!mNgc@J$!zkU$lK5;TU4d%gIxDw=3vWY0tH_}A%3D5>e zroUu#VD@C@f$TVuMP_|rwFWb;EOsu)nLg&c1M{U1oFC#bX3@j`;6uSk&{oU0oU$ar$uJ2f!wR?oUJCyK zI)PD;Zs?3}f$xBCg-^h@!MDc0hd;sJ;kWPy_$Q3S$K$6HrxK?SrxE4ETw(>t3Unm3 zA+-gWfJBfNX%3o3DP%o4mmEiFO=(GKK}nz>De)9Er46MOr8($8VJR3&ThJ`LL%U5I zOo!;b=>6&a=mY7!>7AKfn8U$5*bOGXE~brXW;($Hn9gFb%2-~OhvfsUgG4Y(y~DwP zxn(}LHLokkQC$I9{FY#bmhgL4#t;sZJO|B&za_6E??J~fPBun1M3yNVDoa&~LDwNs z%~8|UOf^rfIiK{yhhg`bG0;78-9;6->go{t}hhw;PkOpqd(2J$4ch%tt!F+ohdn`Njdzu|!zvQ&!2DxRR zYw#Ilf0B7(o)AoY&Ae;8)4Z#^GhnX!5=?hr@Y)L7fF42wOfKz06PROagnls5ECxx( zJTTGJ3G0PgVI7!kRtZZ%-*FU}2ELPgl=5V-3@;eQ<1!F0!@x9V;B zLcP!+Fz~@d;1KAg^)vQ04mV~Qou)ScLq2FeVBT*wfuBn+;(&9m2oYj1Pxo9sGp z9jhE%%_;|tNrZoRUAuZA+ieZu|186b0%2baT*AZhfgtEU6)-3rhzEy1htjUbg(ig$q=krAYd z6d+R+#utNhQ5D{Tr+_pMm8c*V5KY8Fkk9!ET2Wb~;iQoy2xM`Fk;aquk#>_vWD1!K z5~Wg*k0~UZ$ydmi$XCfAhDr%j3Mu~&b?4OHh#$7w4m-Auj%Palk8L$*Y@@N=n2p;e zsmHc$+qP|UKkdHWvwij+?GMl#_DX*DTI(qU&cy`Giwl?+55^3;lVp2XQU&0x%ipiD!tXh?j^b ziR*})h!=@RfcN8&+2ka-7~IZMauKvl?qHLgSqO<`zp%twq z&U|j_BWff5QmszJ+$63o+dsw@{r@aCD z_!-s~)=kz1aM`ZHihh)}nst^n9thUm+@IiKGzU|rHm^Fb5igC`nAeh5kC)DC$gj_r zz{Xq1SMW>uD!z{I<(Ki3d>JgjR@i}a`BA=xU(C<1T7#AR?joLu536Kz*cTs(pM&ST zL3~>LM7#-h#J%F(;)mi@;w!K!ZijVohxh=jik0i)2k}1fE}%(oiBF1G!@hW1d{um3 zTqqC2k`{nHtv_sDBb76ie5FviAJ(iJ%4^E=$`z{RstVOA)e_Y>*n)~+5puy6^HKX* z`$YFgHy*Z*Nw8%cHyB}`_-XuW#=xs}p0yTm(@Sg%!OUA=TV-2e+iY72p57C9=WXcN z5Snt^D*yhNBH_47@f$voKEbz1!B3pp9-w@pz zJr=tV(-qnZJ0vD1CM3oH`8yeY&p%I~leA<-)*9d!D-EA@h<%9rz{H(H+(8^dYz0E@ z9^xe88e%Ola)%KIft5RpxQp0^z@y^8sLe-Zp{Jl{qvru*HU~WeeGGj9eF!MBhS~UR zQ+6>h*Q+u6fzmpQIRVtxQp_gcw+>?VU{+!dRPkHufZy7H*@anwS%%q%`G<4h^MG_( z1fJtr{92%%utXFQ0qhYH=%VZ3$~^+ks0Qf?@g;CZPr;`DMHG@30SmO4ypX&E0(V(J z_ROQq0dnUeI9!VXf3_Jz6g;iO01^wTHAvAOZM8`(0aC zS6}y6`&*k1YhQJJ3w;B9L;ZBaEW=F0jH*TMg5e@qdLS_w{~7-nE#~T$T9!0RT}!&9 zrlq!Jq%~~aXRT>#Vryt?YWokCkteW^9DQ3rI>OpD%9G-|wpsXivB5x&c zCa)!LAp=njX+abP3nbhdAl!aYUQ(V@-c!CpAo4TiEp-6csH?!@Sw8*;Ft!ovFyq0>1+gh7JD=s$sWh< z%kIbS4SdsF_Dt?9ZV_-oN4S%L0z!bNjONYdO#>e2I~cev`K{px?nuE*U~sYpqXd%$ z7+`TW30e#03Q&S^g3o*;kU3)oQv`hl(*(^0Z3L490g)dFlJ4SO;@;w(K#RN==K#^+ zlXxXOiC&@u!XsZImiQ%7;62pfK?fxP;6B_EuB1S6Qhr_j7?_9S@^kW0N&_&_Ka_uz z-+?~xsNSgRs^6;at6l<6fYDGj6j=I+n!TDMnq!)cu;%Z99e)Sx`r9>mu(F?ob^WZi zkFK+>i>|ls1;omF=|}22>WAq^=zHh~=)34U>xbyE1|%%obg=Yj1}ZGvB*SA^ub+Xl z_tfyhaNXd7efoy6wyCMfZ|-VoZK)6YY!^#6OAAXA*lOFsV%yNt*3#ZG8urct>k;b# zYi-ynTf$n|+BOch$`4=%zlTo18@Mr1+y345$yUey$5s!P#&@<=Gd!wBH!J;=2Hoo4@DNc+h0LxasXE7{XLD;!UJ#wE8 zHX{e@MFw9R*k>BSLenx(FVH&B9QK;Vfu@0(u!9(a3xW%w!>~GhF?>0EF1#U9Em}MJ zEs_@f8Tkwm&_A#Me2)}HA4KoK%RM?aFE$r!usgA9vD>j5F=rtw!A>v}WO$M0Bna>_ zy({rBwYq3|@%7>!@FF_4BsUABe?z2(Kx5AW>tBn^LSn&1QzLaq1hO$whLj*F zz)-(O<)CHgi|89rx443?B$(S~PXKOtJP^shdDF2uaQ9>?mWE|wr(kD;uZzPXuvqLs zEC*QON^ZD65X3{VlYkwrzZWt5 zjQNb^j8i~UK4t7-9AWGNp7J(hH!zh~fUUd-tmRF{F>qPivu3j9vzM`zKpHM&F9G+M z&rY#dvK8zVKpQ&QB|sZ4XG4mHUBq6%Ud@gJg=k}&fIt+mjch7VfG94Ji|5j@2w(xR zTnx9ATf$wA41hL1Op?CTF3s3$P*WP5n(ht4NVdQ{0?1 z7n-MArdSlfS&XubwM?`OvJ3@7cc5i5a2JCucN4Je=K1pd5wM^-2D-zxIyf*O&>42tZh=`rQgB6Z zb#PU1Ijok;g8UG#YJ0pDz87u_OI^EY>uC3A=V-@h6WH!LMZ19e*bUaZ_R$v6=g~Ld zTjFD9VL^KudlY*XdlP#R^B3kMGzk@$H1dQxp@pSMoYcJWC(nUB4iBAiUcwRc10Th14;?zf(G1$yXZUUTi^*U$umzlpa<3zXxfs_3AYt8^)C%Kw1g8wL#DXmwxpP<1z8^MdAqA?5Y2jH|7CBH(F6?EXf9eC*tgPth{r60FDLks^@y|Y~VT#EXzmd zN#Ir*xoWy@1I=>TdCy4(*5iif4UiwVJdZu+f&ak!4)_iNMd9=({9^))05(8_Uc)3P zHjo2I;2DMmMg!e|gL;D_xGuOGIDtLD2}7WC?|FVVWOztPIw`y6c8E#uweb>p4l4dYGX>9A%O z6h;d33S))&h4I30VIUDsOdqle1RlwT-!WUWDN0rzPW@(6M-)LFJ6cOlmyk0GsS9XLk!z#)1J z1%^lHf!X)4&#{-VPqAmgsX2zdfPDmJ%{%aH9)M|c6#E2w0^1Bc7#aapX=D>f1Pnn$ zm`jilW`om$2CIb+U9S_Q(_oM60f%H07$h4>LaK~97wS|ez>H`HPQz;YT6#NXW9Cd| zXXYnHd*%;DHElEl%Kx~Hf z>-9-}3J6U@ z?i%MB?9#Y+KzYq_iCtu%zJ|M)E^zBz65zdP9t!YPKRnHWm`Vp`>aXXQr#g^RwY~Mc zMBhE&k#6{I1Cw+IOwE(NE53`qQvV~rD4>K63J>Zy@_-jOA$DMXKmnYP1ZW{CFhhob zDKI`D2(WDspY#xW6hBiX7zHX$FeyNCT zjLeD7j%G)pMiLzx#R8);BZ`P-MdtylGCn#f+AP)@N;H7u15q*pn30k3aq)@q@o_Q` zBb+!YJ`5O=c|ekk0)~VXPZg#T1;ALGsp2V4CcY(p0ZZ{UflI2B+GLYd(^T_Ry;L*c z9e$@ir~ah=rZyFADB4`~p!h|pqr6c?^NPx{$6Ig>uYzrO6L|%B4tW9j0eKer0?9&s zLOIb6^x*6@*?+NVxc0c#xIf^r)yCDuHN-Wl^4U7$>foB-zG5rgGYuh^;3VV|0#(+S z1x&CW#BRh4Vh(s-52`G!Yv5^J2WLwIj@2{h>pcPA>Nyx!kIDDQ4Jj;&3%n;XjZMQ= z8BCYJQmRLvPM6bn&}V?HGY1SE78K;@;OG#*%IVAUatIs@XE8_5p>vEJ6nHDcI1-MD zqvS5&UgKWnF61o-3#3%I9K41DU_V?Eo)VS_w}JDp3OtAN!ZX4((5qMq2E-!aEYV!i zQ1MV%3)x?3bJ=HUAK7?W7g>K61( zbqDkn`eph}`W3)8hYb-!$dG9qY+MO!@f+hisNod?`KvJ{fdwuA{ujChCYPy_%iU|< z1a`((4~<7Oz^EC5<*Md6~tC54L%ixQ=YlEmr6#Y7rVLGI+&Wb0I$ zDw?N8QLUl|K=B+XS_d@E)8a`blS@9Ael7h}y1RS~P#!f=X{cXd+WtURN7X^qMb$#x zMtQ+(^@HUaK)*+C%+AD(!Hoi6a{_J{t`9C7mxaUQ)L?K9#0`RfR277B!X`o~_>n6J zO9>Ka4*nw5Cw~Dau@3ny`8CvzUO_L1ODUrkP+4H-F~PjMNxKIY-Xo|u&7>>n+vr>9 zl|?%#SZ7$KgK37or-+%$T*i!oaTW&uteCkN9JIB}OqLJ~Ed!^Vvk}a!C}%x5TKSwp z@U-HbwVXAaRh(kZYEBVnA!idbQFLHgt>vxaZRTy@b(M$kO#3e(4BZ856z#AchMLaJ z?*w{(ul@>f{O6%4H`X}OI1ZTmF~)UJLtJCpU^-mIxE}-FeZJ|m>7@C-B}Ilv{29GycP(vFd=)eqrrtE3uc_%YcI}wx{f^-Q(Qt+;3g|-2>ds z-A&!y-Ccp|eGTBnKcIyjz{qNWnB@U6D*#Rw58N!oPkmHh6MwqD8IY+hflu8XxEMGF zTxcQmoxTS)22KDUx-YOka1}_=t$`gtg;r9W;^2L#XFUZr^L6k|@F5VIw}UT(4}y|V zMQBl|AJCN@!`;G-!+n6V>_9ri0l;U5fMhEz$r?g+cYRPAl553 zIOYZBFfZne9f|J(O7LZTb^LMsKzvhtcl=`fSp0o_V|-2FhQdmMET8MWbCPx&n2^8%5iS-xj|s?o~1k*f3p*tfY2X-Le{GE6Vo* zCAFM@u4sm81Gae+aL#Sujo(4V(D`6;6TwzC;Dlf->v1_a0gj7P;AG$~vv6A60m5Fw zG4O+>#E#@)VA;MWH=@j@Zv{G;hrua4$T`E= z2Y%sY&R&k1dlam_9pLO818Z*_IAx>3E)(Staz=r3#>!#l%mL$Ucn%$WGonZ*swF-s z+W;QZAuyQ^$d-ZCv>%M7t+J)E`LfNjz2Fy}2g~RI(389;zFFn=?#1Qac))mM7XuL#0BuME4x5l1jH^sbQWm%Q)RQ*Eq+x(|7}XixZ~D zrdy^5;9fj6T`^xZ*UN31TPL?Y_zInJJA$jwB-a3@zsxDY+a_S}mjhp42N-&y zW44;Ye$u9RU^oG1lUtj+a;Gp~YyZToG+58lGk*|P1PRqLu zB=Xz9-$1pz>UrM+Z-7kx8u%R$1tr1!;OF4f@L(WzCx=G?yE`T_FftOT+U1d@5lvJb z)kl?4GZcY`#o|zC`!D}{d}#haAWVP9`{maJ&a_E>&-||WEvvZGU4_dM%YoRulBgsx zTO}I;li4^)2JVuVOeF^aH#r8V$pNWRz)vRr^Ss68-|?SO842z29i;1quqzbWnw zY+*|v{d$)52F|a2*>zy^b^d3%wu5Jo?;GR4P%|pi`jGR6Q|Xc3 z0LRmoQ&8m|mgd|7|1cK}#3uHm2B{)p0b<1>X zbnkTE^gqEpdIxR2WrmdoJeWY~VBh=&3#WnkzUe-AGk3w9xo5s%zGKeJ9S;^urMogE zw_ol!a9gJ3PRbnyM$1g_S|;QU%$;ie1kDjel^-GlPvofm5I7qL!QI#g2FD37IiB0= zf_bsh?E>4N6fA@S_c|~Tyx<}P+}SJL!Tfu|n_q z05d%*wkTE}D~-*|cjWiZ*W}O6=jP9WvR-b!IG>y^&nM+$@=q3?0$%ud;nBhkK>S`! zbVzne&QD%SP6w`bIPkCkiq@8_Dp^^wreq9Ipn1S$-UTZ2PWi3!@fC9_9%dIp{h+ci zFp^BAKVlALRl3E0IkmYzIlnmHINP|lc|G}+M(LrPUEr1;%vqbWE{6`D=sHnd@D~5d zYFD|7jpe_1>bnYrj(V(v_^dwyAU;Ov~SpR?Cmp8?0?gnK>s9y{Di-S51w ztLzC6xCo#9z4J!p^#>~e8LSl|0yobCf}Rfa{QmH)$UNZJol#$ORctj-;|2MF{6zl3 z{7w05f$v_QpUN-JPv%#W*5`q^ewetOxRJP(xSPlTs(ER0P4Y)_9x%&uq2HXH+L;<( zGyyo|OdyUM6(4{jSha!k%>vT*WXXw=KPAV3>qP-y%P6~F-V%t`p{OOeyHIR+NccjI zR=lQt1c&`A^9wVL+n9TwcZc^R=MLDpmvY*J=h+*a&yMnz;C$9rHU#f-p;8Z?pOdqBV+&%X^6{MG!2`DcKLe_X}J-!9yoc$DaygrX7f z-@lSH=t7fIyHnGE*KSqZwzy%*^O9#JS4(b{_{*3;9p{vZ%i`t9^8E76<=@fEaoeiu z8@q9j2@|0tVIhAdpP+sRx4#Xy1-C8tDX$m*bBNnjI9JzC$G<4I>bNm7ysHvyY1gh^z_tf*W0K0|*_R4p^99$6| z*dlcBMk-wnKUfy-up_(~?1DBx_W#L$P&g=gIE4n*e0fp7;z2-<4=-+B+OX76z6Dt3 zfxs!VE0`4{P$N+Xpcrxx*McafoS{~h2s(n3U&wvI`;}8u^fPCpXs*0Hn6p>GTNP?A z>5%3Kcyha~tvv(4PU>D|`*il@_{HGVsPlASuQU$@!XdCd=wM>(jAa%K1;1c)!N`Ik zU>ZCu90{cUkmSE4KgCVqi>3k1J`s5KbHy0o%?AJ@zOHODaNFC<%7C|STS2L)B&jP4 zHpg)%aVKzA@@42+WYPaIGr0A@_eRMHa+~V0I-rq)o4U!s09!E^Ou2h@B{)F80o7_1 zY8{G!cfyR!j7=>-f#Xo=2^>luNQzSMNDCbO#o~4)vq}d8kv^vMQrWe#VO8XILB(m@ zRcacmvP{sI`0KlLFmt=$ra$xUeh7L8mzRWSiXF4eG+*(NBhwJSWdxY zFc_wSk04Lci@O1XPcQvZ_Or|k%zAniPyUJ4O2n3n%~JCi-+ups@PU}JKwh9o(Tc7X zcP}|z&XM2L73b*+P9!VcfYRL3yp`c2F$)+R<^mni_TS1epenX2@2$)!9$ZpM#4F8= z3}yx^gPp<2;AZeL_!)u>VTL+GlcCMfW#}^u8O97#hB?EMA@8c_s_d%js_v@ks_m-l zs_$y(`d`)rXeQ0iazH<573v3iBvg5}X4fOy$hW9QniWbRNGN~|gGNJKqt$MSY)vdr zJ6ipJu6tEduK#o0tMYc&xL*H%+7vvB{tD9n{?5^}uG_or=z4DO=`>PSAgww& zHg$c454E8pUHiY_od2JH`taZ5f9e0K{~J7{RoAXvE3eAgGF_RTOmC(yGmsg~3}qH( zmS&b^F3DV$xiWKg=Gx4ynY%OhW**HvnRz<%Oy;@FtC`m_?`A&A{J$UXtd6Wsu8yg$ zsh(Z!d)l08f$BNcCudQzzM$Gcbt*lpLDr0{P}VhEgP&50irzTOi)xgWnUxQfuoGFw zvr?$vXmR$A>@N5kP&sNs`A2=g-6T3KY9XGW91PvD=UKP2USvJUx|4M?s{y)0_T21l z`0n`D#DPRR*+p(f8ADN1RB)KlMsv_k(Cf00td`>c#8bo*#AC#3mFwXFa=Rg5>y&7O zXoKjF_>$EE@gXY>@hz(kq9dX@q86eXqB)`_;&WCr#0FGzbX{~4^ip)U?9R~73S_5a z9^mfbGVy)!!|-E?Hlms6CYp%3L>$Tj{BB7o<9oOC}a4ep_4L}Ka}4_JY9?yQ^W}IY%xYW zM?6=okkgc#m0OfyRbP!&t1+UidWYFzb66Z!$2?E2zbKlFrlKX$f@rryMxslidjf|T zgJ2N0K`zl1OyWiLG3_wKzBlSg|66Iblq%rwlX`M9f4zT zBQSk27|b+GTTBN`4@?{Ae<3iFFugGum>HP2xM#R0aEy5xelC6%ehwauuT7jtTuMw4 z=M$5}FmWL1{RSAJ)6s*W3s*0@e)ibxcy>Xy7h}cP zF)@q-j<{Na*WOyZBf*0WxcsX8+x8XH- z6JCW^<5_qC-hyvHoJQP2+(|q~JPQS})5HVBt;F5LL&U4Z4a7af{lw$M&BS9w7SzA; z$%W*plo^z@l*N?!lr5BXl;xDwlnTls${NZ-%1X*IN*QGdl)KhbmQq^NT0mE;H@zFZ zJ3WJrfxcBP-9o=he?lJswW_v^A&mNrVT^i=){LQyc8pGp{)}#nhETQ2WHe_qWi(*a zWprS)V2xv~VQq$j(_Yp})>h~?tz~Uut%IJ^3f6kocGfuVa_%l}UEXhQOkK&6^x!EiZ zh|9z_@m=wLIF@)ud`!Gv{6lLAhA9K($7-RJBkwU$t6Qrn;kkuAZQos2Q&bYEqhY+E3aK+V|Qo z+V4>I_@Voy`>Fe;n{1e1IAYKnO~zkFjrosxxGiE^Yg=U7ZrcL=gD#Hwj{VRRD0ZYA zC5|nQWsbFu-Hvj{PRC})a>oM43dcdmV#guJR>wkz+#~ZyJW>xXcrkJ+aw&2qay4=# zaxJnkx*43_P0{tyQHgPhv5C=%DTyn z-xAYEABcB|KZ$>czlmRokBJ|N--x$}FNmLrUx@dKe~F)oZ-~pub1CO3*D0qd*C?kb zwHgUjWLap&6vTM#UL~0GA2S{jn2qmOl1%lJcg7pnKcD^V-4B$ z*|d<+tV!G{+?CvY-2Zr8c|&-^p~}^h z*Nr!n*N-=v*AXgRqj;H6*lNN*!2ifU&fm$u&ELiU&cDvz5B;no{8!M;y2szbKLZu5 zZ~U)N&w9i^SXIz^#(&S>$o~x`tvCGB{I&e2{9F8={1g0>{6qYg{8RkiA_sJ!wu-Kb zu8Z!Ax`?}qdrO8%21q(f#!4nYnW>)Srg*5NCX|{+OWH}AO41}9C6gu9ByA)kBsC^T~Q{^M2TXkA>5Nbh3R6A5#Ra;b>Rj*Y0RL4|%RfkkZRohjkRIj1`lc|}Z znWFVjeX@6;dYM<$z>uT$pLg%KIzKOoEzLCDJzJ|WJezsw* zVUA&%VJdWK&KS-at{To7Y{p#U1!J12n#pL^n+;~G*=DwzYgp=7s#yrum^EbGYfZN` zvNg7~u#K=?w;i+Hw_UIuw;i;dw;i!Pf{Ms(+ezCM+X>q_+cn!$+Zo$Gdsjz+8>d*m0yXT(tC2U}M-s_5k(__E0v7jbe{v*q3Jq5i5nNX)2E$AWWBIqv~C>kIdEE*<~h#WSb=&9(j=(*^T=%MHt zoOw1v>5L=MN*YR-lDLE*VM!zsnIt9&N#04U5|4x?;Y%2jq(m+;OXw1ZBqbRr5lHeR zxe}YiC21vbN=y=qL?ekxZp$ypFF+sclzf!+q5PWsqWrG>zWlQMjQoiFsQj4xru?k@ zfqb%3uhc2E$~4ta*Gt!3-(TNNKU_ah-&>!l@2Bso@1q~8@2elI#~8>4gnsGP}*4EFCRPEsZQ~EUhffEuAgRER8Jp|;&Yb)D$ z+bG*l+eh0E+ZS6k`!8FXy_#d7qlaUtbAWTIv#k^5?BT>YCpafLdpbKfyE!L2vz+an zeVuijW1aJ$vy3h9p$p+l;lGhDk?PTZkzbLT(ch7;k*m@B(Hqg5(MQpH z(I?UC(Oc1L(c947K*q9Sh}f0b!`RIj1sW2&6OU5&iU*chv*gGeBoj$PGLYHGIY=r} z3GL*0$Vo^tayF8MY>AwPq$7n$5t5DMAg3cIBBe+b5|2b7&!a?W30jPnqOYPap$BA_ zW^1ro>{#qPED}2m+ZT(%vatVQhhqm}(a`m6fE|M6VzaQLursj(uw$V4I|o}2pN{{9 zZ$Ws7|BAnj|BO!~yuts$*CBj|UhXISIea?dEwpn#;-BDO;~&6j_uu#?glG6_ga(8U z_!s#1_=bd<1PYNsB9O2oK8Z#e2^Cuj2}z=p;CLY^o5UgENmEEv5}GuXL?+E7g-PQ{ z^GKseb4hZNkTipYBH>7rNfeTjEF~Wx?V5&UdDRHPN=0`W}IU@X53)h zVH{^{VBBJCW1M8{V;o|fVeDrNVRP95wu5b9?_rm-*RadjNhpbi*)q159c4?|>)0B0 zDOKnd^e}aTxWFtB36z4B0-Hbq70ePrLXZblOut~UKrb)}VuGL` zAg~Dj6Agt*(&Li*l6#V? zlD(2AlG~Cyl3S9`l9Q4>k~fm~lAX|DJSaIQIUzYO`6#(0`6Ia|IU{)_*(LcYZ>abt zZ>{(&Z=iTDuc`PXZ=(1u|0l1lXs$?8e3yTf*H=_mG*aX$O-i%Us_dw0tx8ulRkeZ6 zU>(&zWn)z*l~46m^{Z{=`HBi@Ae^%8|b2MztS3?EF&%dSw=&{t-qy@Ws+rvWju7;W?RNsdRy4mLTf3s z&q|Hq+L|-oxJ3-rhdI-r3&Y-pSt8-qPO7 z-qGI8-qbPDG1M{IG0ZW

{-_i=g2ZavGuNwb-e4Mx1tMp|c3;UIoq-PK(p&3_8o4 zCC~uNbLKjiIM+FS&ZKj_)9PFbEwHstE%d>N9-L>NXPf7s=YZ#kXD2kWj(c`^HhH#t zPJ1?cc6oMt4te%?_Il7hzpv1@912t`eZ{_*Z-KAEm+~!xCRGX4sTTWI`+~lFU)bmH zU-jScUxB0Vy#oCModTnRV}cNB4qAdsf|igeWC-nsa?*~_zR-ct_3+*Bo$&4OwebD$ zgK!4ahMGn@L>oYT=w0+>^nLVm^kei>^m6o7^mX(_w6YsSie<;JvDdNBu@A9NvG1|R zu^+LQu~)HgvFEY3F=L^p&{t?qND`uiA|XrcOXMVLrk+JVFKYlLMCApVI*My zp+8{^q>$H<3P=?sBWWS2oTMi$C7DS}NUKSOq_w0GBo`?_N|KzUJkko1iDV%KNu{I+ zDW6nEdPzP*J_R-H3*?jJv*ZSpL6i~HDO3@4611%+P=`}dP`SoZhf+sF?|K|{FqKH1 zOdUm?MIA{UOC3V}k2;Y$jXIS!iAJC=r7xkcqMu;wV4P+=WSnIjX0%{_WYlA}V%B1Q zVKircXZ&XTWgKACV76g)WHw>`W7K5UXU=97us5*Rv(K`hu%ENvu@AA!IG@-j+4rG# ze1-jy{e{is+=CAC9rkUgA75u*VjpB5W1nW9VjpL}XJ2FAU=QK)xj9@8m%?0Nd;1hlqnr7?JZ?U70{aeVZxT=9FQ{7)ZNZn7}O5IM~ zRXspGSe>EnuI{Mrqwb;}qW+~GsF7*JnrE7ung^Pvnmd|%n#Y=JnnG<{ds90d`k_;G z^K{d6vvpazIl8&JySmpphMuG6>M44OUZKy?OZ9TSP%qHa^enyFpfV^8azk}vJ!1`H z17l5N5p*{n8)uuwn5LR$LR~Yoe>=ZAo4AfTk2_yEA366q ztGVttpE$2O|2ZExPeIl2s`HEUgtM-zvFon0sjIf@p!1XSiu0%QnDc`3C6o^jIbS>9 zIuAR4Ij=b%I@`N$IsZDZdmeh8dMpk}cLw(c*9Uh5w**}wTgV@}9=a4d6FLS(x!X{dyArw)Iv%~MPM!apjb-Y%*Roqkzp~Q#8`-C_tPfC;NsTI)k zdRqFU+?nNq+aG(7`;bSGYmtZH^2TQ5ak#y)9(e${6S)C-3a)W%MQ%r4LmAO}vq+}a$4R?LM@idA z`$;EBn@L+qXGl9pQPNfNb@B~zXUb5Dg36}OrgEuDs+dZn3aET4i~635fa?Ej+C17E z+7a4m+ELmm+A-Qh`Z_4^e`Cyo)_p(bH0FQIAKM30JlQ_dU13C3L?Kl%T zJvhBM^*PVj?Kzp8uAD|388^n)O7?zf zg*0DUAe}GWAl)H7D!m95?E}*Cs-pIK=^5!#={YEB@0A{s-j-gM7D?mMurwrHEL|Yo zC*34HFFh$uO4mvkNoOc93bcZ)U??Ujs0x-ssn9EO6imfr1wk=IF-IX+&=p8UwqmMc zo`R%6C_~DiGNz0w!^*L$$*M7`(W;56*{WHpsp{G4Icl^TrN*l#s^QR~I!irSJzYId zjZr^P|5N`}|510;7&JPKQ}|BPSX)E;4a&~HH9s`pHBGd?G+#AuG+#7-G)3Ai+B;gT zj;>?q&^jEHmW4XL4x=OLB)a=LFVvC?^bx&FU#NFOJ$ZrNsW<40^frA$Z-OTzhrwbn z7@Ahqj++@<8(SK?8Jip18=Dvx85bJMjjxP66UQWh60y*vgd(vDYQ%CA)1)_PO>EOf z^Jeopv(MtO*eoH7)#A1oEn$nv;Muu0gJOE{lugBD&Nrm5b_1chg)WT%%pXTt?Rvm)b;CKwHPAKL zHNZu8$z7vdS+2P*G_+rjxWcY6t{JZXTti&~SFUTStDlSE!ayGu>8kIo>HX$u;Qi^j z>iOcC=l$+!1a;MF-mjj9-df(PzEi$4zO%l&zFWSVzSF+*KDWQbf6xEK|JeV)f8YPm zf7}1muMKzt)&MgwA)u?OifRJRfIXlN7z1O2bAq#j+#n~&3wnYs=zE?H3PQqAEEEid zLy=G@lpiVxMMLq>`_TQ+>(GbL+tB&Y3#fBG3_S~dgi`0{Q0>USaJ5JpG&IvAbt2Ux z^&{x$gy>Z0TaJr1i8YKhjx~+7inWN#fGUysnw~ksUN9zMH`FO7i}q8Q@pB}T=KH?4b=Z^P}6&g zyo|hte2)BtyoG#;yn}pe2;tww~g*2ucK^eJNgCs6?#zi>g-;)mbeDEX1L$j z#<&i+YPjaO>bRfSj<}k*f7l;bKfz3h5>f;Y!A`Ie)Py{Ok>Dl72w{Sj;2`)2CPD!r zLikG%5pR>;lAe&RkY18*lHQPBkv@?glJ1jkkzSMTlJ1ahke-w7k#ywy zx6=E=Es;q~8dCxHL(p(5M9CC0ZE!yX!!$Ccd#?2WXZ>_3@G_CxwsIzTp2Hb^#BHeB{fnl5W3 zn4-9VP1^`z;+U>nv+1>m;iq>nigqq6)vlrf@49a0S4m@F?txq++TvTbWcA zD)W_7RP$6Q)m#-ztx_x08nsf*S4-7tn(9!`w`ii8R@yq+2HKX|rrLVi7Eq(N>&!a0 z&Y_d)Y&w}PSLf7igf{$U{TlspeXf3$zFfaVKVQFEzfiwepMvsxo*`iy^TGM%Z;mytBr4sJ}9jROfgf`lz{4b&{Sdyo7~V~ccF_+i%kyG zF7rO~Zu3s_GRrp0LFkyTv>dSPw;ZvQSzSx!UGe1|1r*$qYWrO-NGVOd}~ zVNqEhS|3@TSnpahY*ZV?=C^yG*6p>2>_K~;y`>}RS`6js3fE58S=T|=YS&uVD(F*h zh9>nH*GgBhYXkJD%UsK#RK3tu;5z0y?J9AtaIJGKhhlZgwbgabHQ#m3b=h^%b<4Hh z6>~8?L%rR-y}csuL~o|Ileeq4t+%~*inqUal6Sm!y0?pWh_|nIfOo97nRm2zuy?q3 zvbU$Vmv^K$1M1O(yiL8|e9wFzpw9f$_t*E<_uKc?_sjR*_uBW$R|d`H3V*r(h5wcR zxqnrlD3BM32O@z)U|diT6b7#Z&jqgq6QR1{>d+K!82%Hg7p@Ub57!RY3jYnIg=>bJ zM4Cn#MH)uB$2!Ei#Ja^g$2!K^#WG@DW9?%`XzUuGw7Vp}IIe{@t}#A8UJzdy55f_NbAi3j6F@n!McxHrBcUKY=b4~Um179{>9 z2uTa{VRMttq%G-4nvyQ)#afeRlV_5xQfpFcQ`L*oiqeb9ib{(P740b6RkX9{V9}nU zV?`T^9~D0<9$zw{gi*pQp_hCp{aE^?bXoa7WDV3H)OTcUR66P_@-MPJssZW`vK}fA z9YlXXzeCT&O~%c|4aZHw&Bo2bO~(;%B-}*YP~13Nf82Pu_th6S8rKfLicm(_K$uTh zL|8{yO;|!$K=?=aNBT_qL;6PgN~%HrPO47+L8?YhC)Xl3Ci5vp)Ficn8mBI#=2Hu) z^QooO1=M0{IaNrb(ik)f?UUse?Jit%nnmA8&tp272IdCldgel=pIO4pXRc$eVOB8X z%$3Xq%n*~u+{7Hfl5*sn1ZO_S%}H`fIT21CC%_4E7I7*#0?r0bilgNkxdyI@yOFzz zyM?!&w}Q8kw~e=ww~m*VQ#+@1&J*ExVauEk!pFica4qJw@S(7MPRE?T!d^Kag>T_n z%s03lGcl)5&QswpVZ)r?!dJq&IW=?I7nhUZL965?V#qXa{YESbH8-GaJ6#(b@g_4bZ5G&yZ^X4xxcywyL-Byxt_b; zyWY8exZ1e8xCgoGyW6@4x>+8am+j?vb>0VFm6zbfc*$P0m+2*WQC^x?;?40Qp-oTs zQoS;-*lUD7J;lrQBD^NA#>?{Zy+SX^R|~rEE&TQUt^IBMZT+?Vt^7^>jr?`}3;m1z zi~Mi=@BOd+=K@Cq+XI&Z7Xp_9R|2~N*8+P3`vXS;*8_(FI|F+HHv;2>^MaA!lifRsX_u|)~?|m(PCw@BqE`BinJbp5MJbpI*G=3(2C4M4)KYlm< zEPf$=DZVBCAbvEyIc_doUAU@nZQ=UD#fgQ9ONm<0$F80vB?HND(w97+JeTa0>X_=8 z>XYi7>XK@o>Xq754 z6~8WiRs5;=BXpyuLl>G~qApRC@Jh5Lni6@5poCK*F8N*hv-D5tztV4|>1AnUKT3a< z)+wu1Rx}1VX4G34u@oq>)5dU0VVPHGxnPNC5(bj$K#X)wQqg>TTm(`+d%D&iu}N zpJ$%){Qh|6%$z@%;SO_WxC29m>%Knk*Fw~N)Gn__UL@ZT-#Fhy-w59@-&o%S-yq)< zUt7ObekOD)x*OdN{6HOAgEpX-V^(5TVb)=mU>0L+fY!GO^CQL%vj+19BMVdpUJtw) z*bt}y=G~3JYk{?a^1zzF`oPGbsGx`-B2emn5Bd#gbx(uN09j6qy#`!1J+>bBYg*v3 zHDlYcDr_NkJbWzN5#9o`zw3hxZR6aGH@RyY!uiKF6v#+iTz))CPY(Hk)k(HhYb z(HvopSRc6y=vAlik$6XZ6#gfCAU+nKjK|f?3s?eVJkvG|U7ZG0~f zl6vBe@dNR#@e}cyctiZ{_&f391W7`4VnkwOA|Vl%7y~q;OtO%Cfm}{5BUg|wlIJF6 zCGAMwmW)U~n2bzzPTrmD2n3*(BrBtK{Qg|u%QlFSfBYG}p9~z_?MRHKZxin$qs4KTiK0xHF?boVlI;EFDT8 zN&h4L*YvyTFVZK{AEXaaN2ude3w4mX2IVne94_<|^l%_^gwl`EQS_5Q>iCI{p~utR=yCKUV0A>&L+FL{ z2znshn~tLs=wbP|{P27cqnN>Ca2aI`CL^0s$>1|63nlrqGOJVrUAiXmjM z7;9J?SUXwUSld|}SqPRr%Yn6?wS%>lwU+gc^^XbhXTgVpzY6XZEMY$>cu?@Rzyyql zM+MIcCJWvad?_d`EGsN2{HySF;k&}Oh3^XqMR7$}imnzRIX`inI4+#yoIM<8&Oy#$ zATAu@v~u{z_7cyIBp;^Y!aNqR|s$>$Pe>F&}!rQFhz($dnR(&EyM+%?=; z+_l^p+y&e;t`papy9#&#i@4U@6WndwAGq_my=AL`CIIIy=0as3%XV?6aADlZG6(KH zUsy^S2R|%S2R?#R$Q+fshrDO#IxZEcsyP? z?=9~WZ#RDj-;oa!tQBk&I0z)5X#Z01RPaRbR`6Kxhv2#3cY#{iF02=}2>%v-7DAv( zj}&Ez=pu%QDx!(fMLD25UnVLMrHLv;86u_#E?zFS6R#035j%)ii&u#4#Wv!VpbyWK ztPWruP=eemS^7Wx(eFE!6M*O%s-siW;-Sw^A7VTrYVpRgb!*9ZVB$hHefZ_-?0y|Pq9z1 z&#?EgZ^EC4KMsEp{v`Zacs4Ez*ND4~8;U5xSK_nrSMV&n6feSG#7poDJQvTwSKxE; z*YKC|rT9$zFL)uIjxWTQ;W07tnArp~@jCGXaMT_X?-E}Te<%J%yifd-c#rri@fq<^ z{JZ#P@qflYiGLgaYkXp2Tp}@%N3JE`B$tqHkmY10`3kv)Y?HJwX;IRGq`ah~KcC(NyXVy}BkQ?CI>eYPP>vS66w^y+B~GP6Ab^NU1*Ou`i>2by3#Avix!f9VI1oBc0;vNH#ExX{ zDXs?>1>}xcZZY>P7tf_|{kT3{Pp&&Ro}0o==VG}*+%Rq=H;e1W_2(KZIx4y=IxF-Q zO%>HZ%8*ss@z(NI@Kyr}L&&=bR0|1D%p2v6@ZRwb^N;aQ^H1@Q^N;f3f-OLz*epN_ z90fZB+XM)~PM}X*5?mBa5q=hY5PTFsz?=9Rs1x4=-vwUCt@N(k5}Vc z@sIEZd^5fg--I{f>+y1YP)v8sT*6G!JkosN6HX^BA^kv_BwCTa5I2y%5kgO9X zfh0IJ;ahxiqKe!>ZXj#PZRAFB3t2~AlC(G}AUQnQKiMPME7>pkeDW{Jt;sKwbt%m$ zld1D4iz!Pevne)|MZl7iQ)HCjG+U|zbtTmfNNU@ttEn5Po2d3wICUpAfaXE-rG?SZ zv`|_w4Mhu~`O&;+4ViVBA2UB?CS?s~4`o}jgL8s%>gfi02fdT7qu0?J=&f`ky^G#X z@1^(CO>{k7NpGYN(P8;2dK0~k9-aR?<2S~yj5~}Mj6WDp84nom8BZ7^jJu3s#w*4I z<1ynhW1Mk|Va@!&c*eNL@M4`|xdSWd1j~bkVx3}bW^ZJ#XCv7=*}K^%**n4DOpO0Sh(DZToCDLC9hZW*_UE8>c|Ebdhv{G( zI8Vl_27b#;-eukm-p{-%ym8(w-WYF!_nGIxNAW%RD*j=CvtYkqfpD&Hws5|1nsA|T z4zN^a3TFTz<*sm+Xqsrc$U(GQbXs&)bVg(ZqDiNyU8EH?h*Y9sQKP5}C?~C=0I`?Y zU3^-M5uX9(h_Cpp*iY;!_7(?=(c<%Bj-*iXKw>Smk}i|NrCX$%r4G_f(z8+@=`Pf6 zRHf%f&w8($zH;ARe6RZ6@Rj-AM&Co`a^uZa!`{ZXWIj zTpsQ|?jG)b#P9frcr#E?Z{d4^gnAcm!N0%{;QN4#8WN+3nMYVj+DNh^EhB9qts~i! z){`7a%SkYjEon1pUc#J&nF&)8rYBrU_$A?T!li_Z3B6=Jxry9KUX~P++?~>s(v|Wq zWi@3LWgW$qvYfJpqM$^kMWrFB&eVO>t<(e5m()L~$+RR|Dvd--p%H0mv;-QN7DYRg zc^YVU`I$|b-!i{vre=+2k7kGGU~|H9UeMpsU(s*TAJL!DZ_~%=FX?~MKhY=X59p79 zYc@!KOaG1jhJK&^E8U9unK705H!#CyGv_hqGG{QqGG;L+8FQFZn4zrmEDXz!g=Gb> z(5yg~Kk&PnSdFZ|SsrXx_Gz{Y+Y5ME-t04MA2y18gzd@pV;?O{DNHUD7R~^!)$Af! z(TyT`(aoY*PAVsngXa)A=^P!$vlvzEUhGlqRa{@}QhKOVQ7SLJ&oy!fxH|4_u7wM6 zUvkadTiom1-?%;85$gHomLiq~NIF7r|A*kHV!wxNx-)CR`=77upFo3fBwQ z2yKN+ggW6|(HzkaqIsgdqCZ40L=Q#xfur*q&~)AcO=n#6Qgl~zOY~GU3S^zzq7-qq zxImmIW{Ts*S>jZ2zL+g86laKI#AI=jm?VxC)5VG6ba4*Qa46zT;NnDy%Ykdt0i>F3 zQWxoA={c#d)K7|*?)9qmZSbx0eT+ViF$5X|UkAMj>Il{bL)hiGWw@od#kdE!XAzGh zo@{Q!SU?fV0QkQ0;jB}Y@}?Wz$gxsT1s3R*esg%G3^x9m3o?b zl6su_nwn0d(Xwe-wC2poOiI=rpbpLjdSG;pef}if8hCiC@~!g!rccYCoj*N)Uj8@w zN~R5SA#*u%F)-)CfcvIqePo5O@$5i$6g!NKV@I-M+0{k)943&*{EK~o6XsKlEkHSed;t)#zH^rX4{KBT%JTW;e{rqKKXPZ5|4_cHd{Oyl z?(FhU+&Sfw+^^hu<$rS*md_}^U-7WwLB)374xXCV!u!Vi&I{p(^27MSd@Wzc_Yk-V z`~_!$_2eaR6z&otgjtL@O$SoaCy`6l z%&H%No3#92hLTh)0Irc(Tqfp=OT;4a1#!8!N_<1i6JG@4(a+**Vu|>YxE;txmEvE- zSH%K}NFtOxl{}IBF8NKeQ@UM>k%mZvq=8a@X{mHSY9IK+$n)&-^ac(D zz6<(>U4@$x^A$fe<`dp3<|yeH=`_iebc%GGbb_=x;m3rP3ADuJN%&+-$~FpuvV-DH z^`ibsEub-gnaQT*(~4;4GFvitX5GtPk-s^AL;l+Q_4&5>EAuzzZ_i(sZ~ywG(UPK?A`YjJ6I6^T4lF)V zdaU$#sk-z~`2paRIg}qPcP`&qzOQ_9`QGxafoaVzJh(igTfQSV?fM0EZi?VBlB|-h zkp3t|NZq73X}GjZs&+H@>V12CqZ;{8zvB~n}-IRI?DJ?$Dj~YPrr(&q*sUN8CsHHS_AdKG6 zj>*}TzdIk9zct@6e^35a<|gI_=4K|G84o`eC3q6%Q`2{~n) z5>6$D#|Z&W-pSIla%m!B*@UhZ0cs{BOxA>Lyio*&Kc<$DV-0ym+T&|7#` z=q_{>o)(@GdI~*+7U4?K7SREbugFJqqRO@EP}Q-jeO1V+!&S~zd#iQ<(d%H&IBEBmg6h9C@7vB<3h{wc#iATlv#Ep`-lHF3I)KPjw8Us|UpQQ&;0?%jY z-_Z&F=P(n2JDBdl)}d2Fr-eG;;J8ZMi-?6Wi((eU^u%CD=SlVnIf>bcxrwCYk(5Yk z1hs-j$l0IolD{wCIUkXKApfWQolHmOb|#XU4D`oD)^}DRP!!p0Ci{5d$|61|94LXB z($I3B^1yOGAl!BF^gJuRuh3t(23TlzBF`#xl}FX-s&iFms(h;atIk%rReceE1ajD8 z@e81cJrVycek6VkG_gO$Z^gfgUy477-;19CTTBP6usL~%3Id|q6v=n-OvzNq49RqfmBd;yTQUjcvuTnGk~Pv3QnEA&cw{5K+i@z~ikOu# z%VU0w2_=XGX^Ih{PtTYytmCl-E@qtKr zg>#v6i4#{ITTU#GFHbB##Y^A^3!qBnu@MC4Wg~OHWEurRmZ% zDMh-*FM>p*Ix}mFe&KYMlFL)elYuZ8A|zKOR>fB(RV|S$2Ey7L>1AmY2}k-!#pnOT zJjgu6l(4G`uXDONXLyOg-81vCf}4VHVT3SJ2oo)pESI=SXNInc*_d!P{~9N!JPSyL z(ZVRPaG(FKXQAPda17iFj)VKcgW)moP`E!l3LXGQ0blDs zq%AJoYNs`D(weN`b{p)j0hdf}wbTx7?>y;j{~vnUKLXk;pq>3ApZ%kq{Ue>(>|D50 zY4wjo7GfW6j|2MHE_;QQqaD(2>bfoK{&B;eP9E9dvcV1rWQ*2Mv7ZTSGEe)fRtN0< z(a!#{&-&s2VV?b?p#9^Xl>v?HACs(n-Qt~i`xyHl?GM_o24dM3`>pn~?C09&+cWHQ z>~n!?=3u|kev|#LlSAu9)>+w4wXe4dnlw(Cm~wB*?J2jWsI2ZxxoFjHWtp`m}Xa0`48UIxDmzXHDozY6~aejOgQ zVZnwUHrQ@hv!T(-&TgGu#lM8KN?@eLZUDD;HV`&sI@*G1Z6nftoenvHT(?eUSN(5i zyZ`SWv<4I3QzxeZUu_1M{{Baun=?6gavsp#ewbV^X*0QSa?#}C$t9CZCznkwpIkAy z5-4`7CT%BIPp$!)o!#WRN&Ct5ldwtn(;qh)Ksu z;uzvM;soL(!WD4}aT;+3aTak7;f8QWcpy*+ z5MM-iBYY6P2tNcG;g2|vz#sw;fe4V)M}#1-h)_frA{>E3L?9v&QHW>+9ub2eAYu`5 z2qJ=nh({zK5)ouX5+WIqf=ERG)EtqHpdvC5G(;vM3z3b;LF6L9Z5%{Cf`MQnScn1y z8&QZTLU0iOt_blzeoFt&llvcE{pYj)Ro(4BpKWFJzpB0cr}Kf9HxF(DUjbhNxBZu) zw+m=`*6^wD1@Oi2Rq*BT^>8G73;Y254BQUB1HK8q7k&u78om<_hdaTKz!$+6!heLX zgfD|Hh5rDb4_^ac3kU2Ud;@$V+yTBBz74(|j(|JDcfZy3sQgt%c%cd6qF(_08{X1 zWDgQ7Ap==(0LetMkS63+yY)x24o|$38_M=ky*%WBp4P#<{_JrEl3Tr z71@StM}p;KB#3|^%aI$_bs)9K0wfz*h#W)ek#b};vIcnvc^!EJc@rr^-a}fD!^lo# zH}Wphfc$^H2!oZy>W0+@Ybz^9@Nvlcu=RwMr**T{eX9uT)8LU1N09Gw408;3#5qPd zMmk10MmypiV;l*Nv5s+$L`RZiykml6q9fTc$uZe6#WB^9;+W=`?r4Dx!iHeOuo2iO zYz#IIn}FSd-G<$P-G$wQ-G@DZJ%l}i{R(>wdjfk3`wjLx>>2Di?BA77@UR#d0Tv63 zgSA?Dt@B=|v1+rztP5BN24~m(X0_1zt<^?rgf-II$=b#G2xvlhSwFD)ZWU>L#`=^s zxFp9Zj#C|{IZk(+;W*QAmg8*4IgWE3=Q+-I{K0X7qmAQ2$3>2d9hW#RbzJ7S+;N5D zO2;1^S2e2>Tg!33eHF1@;TVC5Fa=BrtA*9U z>R}E4w$MU@fvqF3Y*-FVZB=VkXGONlw9B^3vCFl~v-{tptn%-Fcm8+kt^Chd@L%t* z{Ljz$pO63Rb(a79eE;X@|GWbKrB^^^Et@8rDVrsmEt?~=ku8)hk}Z}kku8-ilP#C6 zl>I1MC9{>Smf6W*vaPahvK_LWGK9=Ywom3PbCI2qos)UX(6Rs-Nfs|7%Ti>ivNTzi zEL)Z<%ahS%`7)NQK*p98%1UJAvMQNaCY4=~U6fsuU6ynvdX4$B0T=r1*NcKebyX=|l57|rE8`)dgJK1~LU$VbtUuEB9R`O}`8S;7Z`SJzw zh4K}0Te+RwLB3VKO})wt@Y>gZ}hHK{tano^x!O|8zT&a0+Z7glSkTdUiuJF2^?&DDL?1J#!5 z!Rm?XTh(`~pH;u8epUUU`cw7S>X|jOYUbD2)NHNURKaW=M~$(@RMTD4Thmw5Uo%p3 zx8_;R^P0Cc?`l5Oe5$chSSzL}<|%9xOBA+>)rw7uV~XPnSH)??S%sUzOX02XQTQqR z6@dz>B14g-$Ws(5iWJ3)QUzZjPzV)O3aR3P;-cbb#Wlrs#Z84wAy-r@Y7|OEouXdR zpin6^iY|p-VN{qD-3p6hP%)yIP&`yTRm@V(R?bz7?AJbWt8w9#gt1J(MV=x6((6Rt6|Tl&MOJlB<|vs;mXfV3 zQkE&X%5o)NS*5(DG%GF25#?RwJ>>)CGv#yTOXXW7r2L}%rkqwgy>?dZ+}e4yOKO+a zF0Wl#YgfCg*0~m48&Dfk8&w-!ORi0-rPk)v(ra0@CAFos<+c1;L9MX%LhZ%cOSM;O zf2qAuE2~x1*4LV9yKBw0mfE4(iP~GWcWUp|{#yH__G#^Jwa;o_)V{2JRr|X3P3`;I z54C^Qeysge3)OzE{Zcy#-ukWUrq#`=v#DEHx43Re-O@VSI`2B4I^Q~U9i}dzE~qZJ zF1!v`7g-lw7gHBkN2-gjBiE(Yfe39~Ze3m-y{@pXq^`W~Lfyr>Yjv`^t~!04sjj!q zT-RS`sT-*qtsAeqRd=WEUfsjGCw0&2zSh~)uc)`Jx2xY&?@+&`epkImJ*wWj9$g<& zkF5`@$JG<+v+9}k;`+<=*Xm{U4fRd+>iUlQu6k3wrGB*jZvDObhxL!^pVa?W|FZs7 z{hRuC^`GjOG%Rgc(Xgt)wgJ`vZ`jzdsllOPbHmOCM8mEIrv{gX!wp9pjx`)_IMZ;p z;ar19gLgwfLtsO2Lr4R*;X=d3hRY4t8g4Y)Y)~{P8|oVB8yXr~8Z-^94IK?#4d#Zv zhJgl4!(hWi!^;Mn#)XYb8do&J8@D#@YIJQ3Z;WcJY7{qKXuRBbvr*QlY#eEP+xVgJ zQ=?Urb<^~wO-&9>Tbp(??QC*t+ShcT=~$C%)7d8PCZDE|rtqeyCQ?&;Q({w66SXO$ zDXS^3sj#W2sko`6skEuAsj`XJ#BUNbRW)5`y4G~P>1LCxN#0c7)X=1AGB$NLy=;2b z^tS0k)7PeNO_NPlDr?nD)hyL))jXArYK3a0YL#lW3Z{aqHmSC%cByu&_Ntsz`&2Hf zV=9!&OBJ9BRE4O*RRmS6il~ZLrK+f^BGomOLRGI)sXA0zRi{d?GOH}A5!F4_1Jxtd zGu3m|OVwM|Cl#dnqWY$qre2}8Q#-2nC+tpgNN!_hBtNYahYKwYMJ*1vc-%{UE z-&5aLKThSZ;Ds%2Ws{FVhR3tLvS*tXcUIJ9hO+10YUWlxJ!%Yhc> zmV+%nwH#|X-g2_#RLi**_ZE*9?-q0mwk52E(86pfY$<8E+;Xi&)>7Zn)Y8$?)naO~ zv<$a=YJpn5woJBIX{KmqX=ZEYYUXL?YZho0YL;l0YL;o1YgTAhX>2vCHET3$H82fa zvr*%q*{0d4L1=bqoHQ<)!P3w|YSnJkSmsZ!-Q>|xPJzCMN{;lDyQLS06*{yl4j8234c=C|3jEorlDTiv#{ z?O5CKHrKYZZEkJeZ9Z*&ZT@ZN+c0e*ZP>Q(wx~9I8>ub6EwPQPCfXjhJ#Kr__O$I~n|1rF_Sx+#+E=!(YPW4) z-R{zUxcykWYr97~s@Whq=SjG0}0W z<4(ujj(Z(XI-Yhs>v-Amq2sTPj~!5lm3EqTmexkQRBNkUtzDyCtF_av*TS?Lv>UZs zwcE5iv^%v3?H;X@cAwT+>!Nklp3x6f1>U8Kl z-Wk;y-AU*qbtZJCc2YX2of(~Zoy^X{&W_HB&Rd;#J0EmD?EJO!S?BZ4SDha^|LXkI zIjhU23)Z!@YiHN4F6XX;U9Mf>UAV5OEqFP4 zuFqYQT~>N){XD&meu>^zze(?)->ToKchc|EAJ8AvAJZS#yXsHrPwUU>&*|OtUV3l6 zkKRv@*8A%N^+Ea&JysvCkJ6L$@%ltPS)Zh*>NE6N`aC^DU#KtA7wb#)6?&eYudmWy z&|lZr>l^ecy;|R**XUdIZTc>~UT@GF^(K9{zDIA?_vRR2={ zO8;8_R{uf&xBjF4tNxq*yM9t{Ww16(H_R~1G|V#0GuRkb7*-lq8Eg$O1KhC5u+^~5 zu-&lJfHdqf>^AH*>@yrNxEKx_ju~7H9tM=b%iwMBF$5R_4Iu`CfoO;~q#7s&sv*n3 zG_VY8Ly@7}P+{O3stlJ6R}5DT*9{7T(ok##zRB#wEt3#^uJ9Mmys=Bh0wTxYLL*B8|I^dyUS< zgGLwQG2?0DS>rjQyAfsdG6lUyL%N+^8_t8#TsOW4p1#s5P35 z-A1#q-)J#T81EUM7@rwm8m&y$rfH^Gra2}X(?Zi?(^AtildWmB$<72bZ8dE(?Jyxs zP9|rQi^Ir&g5+(nc_`kQ>rP=lx4~`<(lZGd=taOHWiwROywrANou-ix@OXt zT1{OhlgVrvF^!tWO}9)BO^-}ZOn;fan!cH=x~Fwd@1D^;uX}#?g6@UgE4sIK@9OsG zMs<64qq{@8vE5}GWrc9(SXy9M2%ZgF=p4Og@o~|BqPhZbK&tT7R&qU9y zo`*dzdp`8c>b2=z(z~M9u6JGU;a=C?Q@v+{;k~K7l-{adRqsgeliuHZ zpZCr)&o|qcmzZtMtIg}o_U4V|O=bu4R`YiAPP3DFpZS2<*?iFallhqWxY^Zw*6eNe zG5eX(W`A>tIoup!jxv+XNoKxTV6HM>FkdrYH{UeN%yM(RxxuV5Ys_6{z1e8)He1Xi z<|pQt=C@|+zFB><`{wo8^sVSy*|(~1bswy6Q{UFUeSHCaA${R}gud85Vqbh;Y9F(& zysx5<-&fUlx$jEf)xPU}ioUKsbDyQ}S>MaPw|$@bpuR7C-}j zepvse{+<1Zeq{gdessToe?Wh5e@H*JKdL{vKc+vnpWL6+pW09D&+Di6Gx}NmCH45Ek-2iN0>%g{w9RoWD5CcvF-UB`Z=z)NN@B!RFh8MF*r zMl7S2yOw*Fhn6RnmzGzSHs-X)*mxp9S$|2Q| zdPp3{4E(9eOhKbm;BSyP*$5pN6c4t%s)$PamE)Jb(CyVVmJ4 z!^?(khgT1;9kv@@Hw+)%H0&_Eb$I8n)9}9G1H;b42ZxUhA0MU;XAEZz=M5JQ7Y!E= zmkgH<^M?h)Rl^sCuMJ-xzBw!(t{+wnYlgdq^~0v&?qSRD#PFlx$HOm&Uk$$<{xJM? z_}lR0u=U8Sk<}wEBgaMpMnXoyM`A~aBdH^l5$Z_hNY+Ts2y=ur!X7CaDId8$Vji)K zjEvkJc`)*9OP7ZMUVQA z28@P`;zpxJqeo*#V@JuONu#Nw)X}_A`Y28ND)U8too6k6K2DMkhvZjoul( zH~M7s>FBf3m!ls>{~G-`3XNKgS&vN{n>A)Lws36m*pjiOW42>gW>9wUv#kCDf6$LM2)V?|>nW94JwG3nUFv1?

i_4H54tD1p9FH$1V}{oOTB&`CvCqed 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 z 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 KGST|V_Wuo}Gw50X literal 0 HcmV?d00001 diff --git a/app/src/main/jni/prebuilt/arm64-v8a/libwayland-server.so b/app/src/main/jni/prebuilt/arm64-v8a/libwayland-server.so new file mode 100755 index 0000000000000000000000000000000000000000..491b0c4d7bccdfabd90f5abba0b939955768e973 GIT binary patch literal 197608 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 UYZ~_}DlXRZRGdlth_kIk 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 WnROuVKc{IM|NZ;Qe==jpipBqMGu3zi literal 0 HcmV?d00001 diff --git a/app/src/main/jni/prebuilt/armeabi-v7a/libandroid-support.so b/app/src/main/jni/prebuilt/armeabi-v7a/libandroid-support.so index 16494f55725df717d9773c6ab8c4b43015bd3da8..cb612725e426045e25e1632e35387631bc32075f 100755 GIT binary patch literal 152780 zcmc${2V4_p{P_P|5)cqIIB^0_P^{oUoD4DUC>z%>VObAky}`f3N>z-}m`^o^{WDo(q>WqxV1!K@iB} zlqeK=td8KxQwoF>$g3j?Mm`W$7u7-D;E%&RI1@l375HI1=|Oe6IS~qk@xqqc6~3jX z0&UT{;2{A9=ZnMPjwlDhb08d305%4Pd+yN@;(J&Q{uoafbvtbcn16FPJ!Fr|mx6*o zapMCj#*?0g^cBm;LIRBE{y6Ro0K8D#=pp0ABoBdBL1wU8hc6I(F*(zssZI z-EsLmt|lneJqAc@M^~~}RkC+fvTs+ipH#BzSGXb0Kctc!TFG8m$^NR6Jpycf16RM) zM7{`j>cMIVH35n3b`btMgonHB43HC{lEH3!5y)@A_QanB@huP^_a9Dw2xLhOgreNG z0>a~<;CLM1@ReXsg!p)zV|yyt6xeutV*5+5eH$X==e8{%vn!PEJlJL!aJVgS{QVF= zvJs4Bkl1bs{xkg%>h2D2400&gp7O?meGqIvjJ|-xSCwwdTpN9H+ z?AKuThMW6Cg>n2H5WfzTw}Jcq)j`Guyt_XQ@qMBE{oVPG0(k@MB)2^W8!1Joa@oOc!ANU`I^2dY3_x~Ma7?dB6aBTO1_}@VJJ@!Z7-w*Ql*c-q$!u>t% zbG%ai?I3&+ghLW%elmoQg8V%Fkp^~R1$z&~dkFpQX&)p>iRo6!nl>~&In8YhOCD_< znLKGIN=}_%9XWdZD3_9wWW~ym*x{Kqg+WGoi=VH_DM{enBq)5e4I5U z3Hyv3GhygBtfY)f9*t8^NEtsm(W#`SSQDL*$ET#Y;-tH7k(xFxaa0O&=ax2Rf-Ay= z#MH#3aR_WzreIG<9+H*>5nU2O64S<6N2lVXPAN&&q1M64(x{=M5>qBZEr*U9H+l?8 zP8>7(BiB_*962TxN`ZZ(F)2ewqfvv$;fxTJVkDT5)tFI((ct9KLnLUcv>{_gS(8Ug ziDQNgO&yx%^nd4#h9nLjnucxAMwhGQO1YQEr`!YA*_t{O*SkV?qXy$5j2i4L(5S(w zqn$-d1)o&6CJh~8O|wGH2B)ScR*{9;Xqpek8SMmT)?iqOQ0H3%NL)dK~$53UzX(f8UJO!NVO=P}-*@xBXPgQ^19;l6`q#p!VS zz?62b$+#^;0K7ioe!%TpANVJS%ZvNd(|~AfWv*J1bnga56%nxf`K*_!aV)% z@xuM+ad^z&F@hZ|OXYoz#|&QgvBT?9ZKvkCc*X#>V3~G~A$(@SZTGcXB3OU1Jzu9l zbzv#a!V+$<1WU+ZIhIhc)mTD>)?*0`zY$Bg@fIv$0Dg@nG+GXp&@el(ghtwpB{a-F zETIzlSVBi0!4e8}0!t|PDJ+9wZ^IHA=K_|{xtFnofp8T|=)@u{p;7<95<2oOmeA1; zu!N4bV+o!31WV}fGAyC9Ut=pF874#y|RcPI9gccTk>2Tb?&`W`uINIHK z13E(FEzk)y*hszphCjsf4|c^>1TQRF4RMMb4#!4FQ}DfFyGrAD9{tECmk2J{AMDgo zXkZ?;U_NM2a85C$t6o^Oub-D>Y-P^~{zq-0+?Ye;t8WHyKy9xWp zKqfF7_!RgISOKg9z68Dka)BRqqdfcf%I$;7RG(JW+B9D2MDwW$*5LddGvif-v6@Jz zyW&x3Zrw8P8bn7FT3U#j2Wx~f)hG7-u`nOkmqZXK*e}dgLzqwQw)^ETpIqc_yCZ+S zYdcT)wZAr&TqjV&+?SapfzUere0_Sk+V*W|mCJn_A$tbo8yq&r*>c%W<@h*g1tNGQ zv}H=4_|i~l)sVdS($Z8$31Wc7III$rv8N*;``yc;I{D#>+Y;UtUVZPE7Zxmysc1(YFNmW;UeL}74Hn<=e}xhj-cil@^iF?h&p=q?iI6d# z_Sru+x0=RVgPKPq$+?c_1rJeZmEVXSss!&6mG_fEMG8H|6 zgx=cluy3w+zhI}n`eDvXn?2Sy78UHry~MYMXJtSU=97o)Fp9$hVSFKbw>;QeAdmRc zsziJP6w;)%?`5Ky@};6QsM)bnq-+pR6!>Uz_M^~O1+k^N_F3`I3t%)l<9f9&IUj6S zD&k9J<;wWt0zBUxkt_d1pYQmGKXL&3QUUs`p#YRG%!bXzEKMG@jv zlwV>)HXl@MLz#_a-ai3_<`v?S`WFSKdllhSXWXe!=<`Ck(fVRPwEr%uV&Bg}9q@d0 z*Q3U|9C)M+tNU5t;wDRx{q}Ufqy-w(8rd&Q4_r}LhSu+eS|R)C>3RJwmHF5vCIq~+ zJtKEv;2Xj3BbS?Qc=-EN>{4GHX*wK2m(e z2)L@V2-p`0yOOAtWdp5dR;FEvs>4-*s=<{&-gc#`#v;`6^u4MP)4}%3ngKDq;R>Hd z!IeN&mZ-8$mjxFEe7^Vv)F$-c4%KhoZ53B^cA{#?&EU4EbhORT{QBKG_Rc5-{<*Gu z&_v}KwD`S$H__wwYzK0n*A;vw5PM4$HS+EH=~b8Oo=ooLw?fTReB6B$qP!3L-&0oC zups9tuZy++k=gy$-VznW?J-@oJX}*{MJJ8dDjeH;?Rg%l77MZW3Hbv}?0sc$3r%L= zn4;RtkAxz7)9J2MO{Zrys=Cr|)igezkG-!5Morg04=OY^B&H-=3M7*@X{7rB9~y4hzkrTcgrP(>9dE zDH}kT5j3l^ej8NU541kYfj5=Q=fuZ6vu^ikuv4R0>)jkil|pqt79|Y&%*VTUvEng5 zC4o*q9GhR_gA}kQjCs5+IIvfzGBtuVUPFW-d;YY5HMs4EX$IeL)#k@(0ZBgohUV%} zRJvA>Yy8qw>0@GKtsb=omvc!RQ6Z4-=R;ZYZMX4zG_;- z5(35ApV}7Pbk%e5G%|fbSgido+xn7hq9@dD<}}^2d@GUA@&>MdPq@7o$~50qRQj)N6ooi^=(LQm`UTk~vC6zQbUhOyliMK^(!yvsR&r%pBACK(eQy%X-fhviHGNlRfgu5+r--Y!5t!$zR;Ela0lG? zG1ERv&+Im}&Dy+k=@DIhq2=38!?QG3LlnoN*wP1a>Q^xKi>DK)I1Xu_%nVrbF|<7%t8X&tbVKtEC9&uL)ctwp1~_9ig`O|X>=`--#>ijC-y4v`VHTq>B6Q2Qo<*kC}>~*52m{yIoP#I@X?(nO$-a&U&#* z3W;rcT+V>r-jo@;Ls?v;?oot$9gm*ID|!`WcQG{A!ycI(EkM~+;}+N$-$gqp9E0g+{Db?w5g(LSL8mx-o$T*j7q)l|p(73iLz2%n-8{q{AT zn4o^8P~#p9C_=$RuYkf2Z>%p_rx06r&x?Z{SFPFO%%6b#aenZCXXi3?c12ZOFH}lo zUcalbxAgLY|M(9_BRpdp!Fe;MI6xOs=#qhXx@T|3UM_>(GZf~2X1J#Anp&&;{6dos z8EUS~G${rWyVG5+AQqOmC!$Xkc7n9Ht4C2WfoEQ$M!V zU8zorg)@m-cIFs;vB(DFf3a!xMCUBp7b%37 zIOmXS*5H|h^T4x7tGRZLfOA4^nBz-c!`UmUbqKB%3MC8F%QNF6&(~j$LLV38YHZEm zgM_B_)-3gDH?U5bcfMEgVlQO(_8yf!IU)R|_v>RNKHgq0y`RBa*-~@g-@9X3T{$=2 zzd&qMe@#X=MTA%Tui`ssuARqa&}stK{B#Fv^+D5W>aGe*if`0FCQ|UdiRcq>y$0+p zuIh)1t11GQpMjRmhrK!DNygVzi%?77B13aUQ587-)ot#0e)2Ay1fo=OgeE8l_WT<5 z{ZU~AS_-^`XLLIdHJm_Q&k-o<0)dW&5GbV&KI3DE)`590ooEx7r*`^!G?a(WlS#Qm zx;fW(;N*l57!@DgjfRux;=Azl-<*(%A_e#dYvA0USG|q`wFF{wQF=sfGMsGMg{ojt zfir6Xeu}_p@%ah`+x8Q%*5GH18?_Y(hxLUt(YaKvcYhxZ%zlVF<8C0_M=Vc)@_r72 z&zj&_1p2}L2tFkCoM*mynmH;nr&@`>FIwcAv`Pc*x*mlN)F>ADirgGmS z?07-Nygd0_J@@0CpGyeuU`=bt>Fx8gO(x`UcNf;xFtaW#w_oEdnz_03OcWjzvcU*0QpKYrrEz!);cxgK1 z)=vt_9h8fL17%qgUxeDqa01?8lQl$~?D+~?>*|F&8dX&i z7wT%fiadU*LS+;Yjazo#9inHzo(}2tz5NQHpZ_w1ptgh@n1@RV;oZH98t0;rFkEUi zoC^G9&u0xa73eOI-X~v!^4Hz2VV__0#{-9>qFq$U-d)K)Rmnb4$(~%v-dV}csbqg$ z$=*`Q-dM?AU&&rw$=+AVUQ)^SdFXHiKXkwcBk-AVK&{$!>edUa-=JZm#!Z5PLjsyM zYaY;|WvkGz)@{NA+J4YZt&UK;Tx9zW>W-b%>VSW9QU4b3Klbm8Q$`1L>DsM(kDmXH zTw>fs{&x`&8y67YE1|chPv3qJtN(z3gR~%ZBu+x%i_^h9X}!k)iOXQ9VE}Z3E9fp2hQNR5;G@j{(0LNSbvUYEoVF@h<#1#`I?O-2 z!ww}1B0Z_$aoVX~?;d-};doV^B(GfaD9YC!t%5{wXGewtUmebT9C^DC=v8oW996J4 zxVMhOF2!|y6!i9nV;zJ$9l{^lmOG`(w@L)m!|~by`y@y_U7YR>*x1>XE?rXQF%@ejPq_e)H(o^~SOi$A9q7jy>z}cG(Wco$G=P=lA-7 zBLiCKRl5wE1hM^{Ed!;j5)%xC0k^b;{q4689NnZ~$75{cO5qS_9fu?6twV|12{asr z9q8aPUf_T`2SJN$#0dk4A7=ZW#3 z$#u@cdHU1gfIo~ouGfGvy18D>UEZ_MTQ;?;#<=9=&J|vsLkzZq95oz7K8_L-WK%1ioyPH-G&9$9ggeL)u6LA96?vh`^gnwVT0Cv&u_--c0I}cj>kp4-0faIiamGu zC+TbrXajee4ChT`{IKEnch@`yMh6~Vt~+Je7lLI2 z+z#Ky1`9+5Hxb67yL1rf_z}+#tT-JWr{x;7?rR^XX;03X<GJMezYfaB(raf&yFCAs zYYc=#Y&`RU>mYy(5Ez^d4m=AI9KO%ex6l1%++VtF>GS8JqpL^xzm?t8aLSK~jr*VE8vieeda2b3YB=Sq`>OFd z-+9nitF?bS=;JUNU;b}g#b<{9n;a|UVlXoBEWny8dAm(cZQ%t`lC6V1;hq8YZ_+s$ z|APxo_ZAMAFcZswbZk3bU4I1|AZVC>cHLpgDcb%nZb}r4Hv^<~#jJ33 z-4T1JQE(G@Ijwv>0vmh3_Doo}js2X?ZI@TZZNKq^yPte2lq%R6ee4&OTi zo)!Nkc)hX+;eWCXpQl{Ab4JkXk_`8;1O^Vyfj}QC3l46NNB%+k+GmzvP16@ArSH*L&VYvz2e(^FV~{ecM$_*dRUg2-o`6yYjp{IKT7r zXt)lJ8co0?ULP!~kZ+R;W3uA-bw_cvBhCfi6hsEr|Ha{^`$y-A|Mx&wh&y3E^zl1q ztC8}~z#1M!8Sfuf;HAKdE&>Qmwws+}#;KAYDxOe-*ShRWG zDYd~u0y*@0m*k%`n4cBe@}FY-XMQ$kgm`8%d-g1(w?#A3~(l?l&#Gbw{p#G?mWt~cPse|L9tc# ztz^%Jp2is#Rr2?kc%I<=|K%R8Xi(w|PlC!aKjt-bdHKQjZTZgQj2H-SqP*{JRIc88 z!TIl5?~Ka1ybCGUY_1{cv7N2_ua_8S&u0AdB802s49Cfxh9}bs@?F+=l)PW-3eo3kU`Q*g#)CS@R1Qz2}UM3=f{v4?r>MU@&?KWZ|CDb z9+kvDmmQ}hP#zZ81v&EvAuQ7NBoeAKUB>)AW1XO?*;0^cyzJMPP3WNa?;Q10j913obkAi~` zL9}a65MEsfqDFs$Xgd+~6eXctqzn%DLK*CfRHRz13J#W4M94f9(dnRys8*mNVrqL4 zwIaPDTCRuq-w}lJG^D>q5CLTb(WY*mY=j)pgl21^XPhe1)cPPkcpfBi2 zAm;$ffi1x9pfbhYpk0a+LEBW9LH{*qwc;+w`$1WXvLKt{WzaN*MnU+hy$Gco0`EkG zN3XlvU<)N8t#sMdZn(PQFfLOFFa;hP0=J;)G8F#c))>W3l; zJ<1>=h-8#bI8Y{`S4<j8SVN3ctRu!NHW4<(W?~Dmm6)#hn)rtJmYAd1 zPUH}|#5~0g;uFOW#A3y6Vh^#8*iRfGjsZvE-!bAi@e^EuE%CD7kl;0@lD!*0EQ*KwzSDsQXP@YyURGv|;Q1%86 z1bv}AqAKP^=_+Du#u}DdH8q6gK!{?_5Q1#eBsRn?aWJZV_ZVewCK0=WgKBe)H@F|K>;gn)@_*li5 za8i*HPAkTRr-qLY|0sNFc#I+=JXTQ}{y2Qf=826z**t&qr<;c=wrw7!IIeEh_O!Zf z+mDnJl&h8Bqs7Vs<#J`Aa+C6+a=r2wpU>y^THTlx(cDWz#{lia6gde<{-#Jz!Bgm zaNLa=jus7o0e}RgxcLR-Rp2`C2XF_t3)}}D0s*kpU?PD2z$PFECaiVgU`%7w8WR0*n9y3fM8fxEFdc!eKp#L083gbOm|^?z3r4kp_CQB~2K2x< zAQjjNd=LBp><5my`3dBC;CDAw17SY|W&*Q-t!{$hOIl5VRzN7w-c1*f-GF+q3j_iU z-7p|AEFc21o53J4LxGV%Dli$yaFYY_0D!-srvy5>i2~Ub=5U<2?a zum#u(d1KI&H)#IBH$))7kKFA2}n#C@B+wh zjL=iy72p60g5kjjcoYu#0~u{y6oGUAts`Ka0agGjfiat)uYfdQ3a}Pf2iSoUK(WPz zH%LrXH!VQ61daelfg+#;Xt@>g2l@aMU<0NB-?`ZZau2Z2&25mFux;?YJ|Gfk4|D>e zfL?9}g2YUAlLHd71K0`t0PF@10C~VcHxEEQ1fIFM{T18~xa;O2NKBJgE)YCi)Bu8k zcEB5ga8d+c0LOf!B+w*)@FS2C@B+L6f1m~s4Ri%!+}sBFCqSrOM1#}-89*lR9k2`7 z1MCG*0D%-hE1(U~7U&41y0L-G1a<)jfRn%}pj}M@MFJh&M1kxK^mKC_B<2=yA3(LB zJV19hu^=(SfRR87kOoB8hPnXpKmwp~^Bu_Dz+N|bAoGDkz+qrV9Rht1>;v`#c|bmJ z75E+K0AEDx3iNOj12Pu)%FQ<*F*(5Zzz=R3*CS96&=hC^v;x`y5slzILm(RH0mQgj z401ED4afm@0N(-M1G@nGhXi^8M8FRUL;(xO5NI*5W*>pp0>cXllni_fOao>Dp8(r{ zZ-Dr7&@KRiFSthm-GGt6csDaZVpaj`fNWqpfQn$;06st<&=3d#ngPv$mOyKu;4XoF z0TS*Js6T*+>gW-Gzw{{q4VuA{1%v^ufqTFM!0zTTNX(lS@F^isyCr94gK`LZAn;LCzsi z={%4*Fn|!yyMD zN=KZaBlv@F2S|;tI95LPhDc5i9Qm*{H8D9EjZbySOQ#5IbxInMnh5ENAiojg5Ez}JA|gSiM@E2zcpbaIRtPtaj_%YY5{yYFUvwKNM~m3o~`S z5)_YvJi*0+80gdnwug#1<2}jwd%OgQhbJ>+9A91p_(l%2LaZhT$z#2t72;>q{uIUf zLB%3I2|`0My`dH8BefTtqWl`;6~XE1Ia@&kHL4rGkD3jqS?q@30oT2zZ~4z5#MX1R zLLV3;b$jJokGta~;drr4=XzQJzDyU4{1eDH@5VF8c)zws$X?Y6yE-ADU&nynbRo?)ZMt9B_qFwdx;(9IFlky`G#HFSFB;jQUtVPRY6YL0+#L~xi=a}+ zLPx-bz?UV2M{}C^G88Vhp#(q6JZ$BtW9H#&r+9No8$Q)=$(z>9;y&E=%`tAoxBI;< zt_*U2ifTCO`zs$c9KGk>u7+dwzj)R#<)Ck8-W6J&DV`a4fOf`3sGZy#85mz^ACv>5 z0{T4*>uBGTn^jRBs^t$q-4o#-c{DK9zx_|4-}!eq9sSt9V`1M8)jC~dYvp&kJmibh zQCHJ$o$g#TquH70Kb9n(>2i1D7iYRY*m>(rH~W!hXS+YSka)I7*&kn=?fLr2t+O%6 zt2yZ@0<00x3eFokFZu7(a?S44+->x(691y1MQIm@UJ}x8e|brq{PgxE$>!DavOJ^C zu*=ptEjC>qJipVQEFxa}4Dl2JW-JMt&3i7La*pcv{IH>`Cwtl2NyWLB)_(lxV7+yd9~YX|O?iG}*}AE(N-nL-a1ep(ZOWSL`pha# zm&=92J*O$^ z{v@j@>ZC~dVqP}|%5T+XhfnX?ZTI@*e-d?QPU8ITe{T6=KF*=CTjlo1_ku8*aqi^yTY(KU{{Nzz_FV(R;Uy-${Udm52>q=JXFPg!LMh z)N1Gtr|r4)+KuBC5w_svPOs)S{9s#*Y!CbA1o%m#F%wdqI-JwIQ-+}aUH3HqjOaem zXGvywyk95*YtiCIAyZyF#xpF5$+0|G5cuzwmiHnhblX zlE5DVK|{sE@Xj*IxOFI@Ume6YHe59RUvD?gLbtC_==N|sXz7h%&O&d;Ej>{c+aJAa z>7BTxC#lGjt#C2_|8UMicc@Tkyy(3vG||02Y>du5vcmAFAM5f%c$acJXG0^;_JuwF z-)&#cLU*iCXjp106x!X=csnmIw7aF%`Twhy{@?6W&O&#pP-r*?y;tbJxAacAyrpr2 z(yrw@AM2Hz-ECXvcB*S0x?+4?E_rL6d~W3Tw|}vu9BpxlUl><+#gNauJV%`W>Mrdp zbX0{x!%~I}btjaM>3)rtOblFhb?ndO6Y->VF27{ble^7Q5eWxOx5J+VR(524>|+~x zM)>ywRs;0So@Wh4I?q<y*&SD(H3FBJQp{`uP&_~5h=Iz&XkJzo3#k?JgT z=L&^}qZV%I@+A+qv>JV)csD!SMOyCyE{|GQl?+*#=83WbKlS>@p| z@%@SD93GQY|IIO7%~=uWWf#82qb!)jt6gIY?2Y)36VA;A3#a=5UwfhT5U{>H-j?<) z(1UYo)z}z@*zu;|6Gx@X=}?3b6f8X{o>QEFSjhq8n*TJQvRc`{AE>wv+|WA zc3c@|7=6HZ`08i@yk8Rz=ra^lm>f2*8^{mB=Nu5wPB=`N@Di@9XHtDIBE z|KFE0F{NV%JXq`H$4;vfl!m7Hv{)Vid-LkpIIqCyoP59VE%s?uBZuV2scH_CzYJTX zX^_0J(goT*Y5DNdE5lc(y!>g?>hx>Lca{&?GFweiorK`2Vdj8t+e6_BN?ti9*?0;>sOq}{6e`%E= zD{M;_HAP$DP!SDhivL16302LG`L_R{oVWsBWw@N0h=ZPT)=%E(DQA+qdQ$_SqRw(^ z8iZ}AROLmQ4`U%-{~;R}Rkzy|Rn%Ev;&Q_0B3hN!OY5zzp{=Q{rw!5uYeTfnv@Nw^ z+7Gntw2|5l+D_We+V0v|ZJahl7J5)Pdo230vJ3>2B zJ4!oRJ4QQBo2DJF{YX1Oo35RxouvI(J6StLo1wL7GquyS)3r0SGqtm|^R!vorP^iM z724I>HQKe>FSOgV+qF5`Tgej~8tEGALUhe^p}H_#xUQ}416`!9gRYaVv#yJ-o35uWMi;A#)5Yr&biH+bbbWRG zbp3S$bOUv?&Y)v-R^4FTFkO=FL){47DBWn?Slu|?c-;hDx^ALwl5UF5rpwe#)6LY) z(#_V*)6Lf{&}Hcs>ps(cu3M^Gu3Mp7savgEt6Qhb)@{&j)P1GFoyaJ%GZ{^G zA-j=1$QUw~j3eX81hO}&A^Va2$pPdbk|ZgTCiSF&WJnXql4jCE3ZzI%q)b}L!DJ#i zgd9c=CzHrz@1l}sbYlj-C{auPY2oI+-j)5z)M400AZo19C| zBR?VMlMBd&WEQ!ITugpOE+IcBmy*lK<>U%-CAo@RO|Bu=lIzIzWHz~h+(>RBw~=3w z-;m#u+sPa>Bd?Oblh?@WWD$9Tyh+|7{~&LZcgcI?eX^K* zMB2#`vXp#6J|mx#W#kL;CHb0sL%t;)B%%mPK`AK}P+Xkg88Lpc+z*sK!(iDu@cEno`ZE=2Q!+CDn=wrNXGzR2wRsYD;}UwWA`a zNUA;6f$B(gqN1qIR5aCv>PmH^x>G%V;5hw4uaq_mWdA}N~EQznX~%#?)^D3OvV znX*!e)DUVIHJnPOKBUG_IV#U#LseW$Fs`D|MB+MqQ_FQn#qv)SuKH>MnJUx=%fz{-R2#QtAoyoO(;CXfN8A zu1fpUHE1^)Ap&QXn=pZ_TZb~_ycdJ(;tUP6CPFQu2! z%jp&LN_sWDk^Yk2L~o|QrMJ^L^iKMFdKdizy_?=c@1=jF_tE?5eEJ}Lh(1CerH|1k z=#%s*`ZRrpK1&zU=jjXdMfwtbh5nWPjlN3%PG6&o=o|D+`WAhg{*%5#-=*)-_vvE# z0sWBvi+)6x(53Wa`U(A%envm1%jj41Yx)fhFGuN>dX>J4-dFFZud4UgSJwyVYwBz1 zYwH8`4fT!mP4q$fruydk7W!8DP<@!bjXqr8R^Lt^p^wzJ*LTo&)OXTH={xJA_1*P7 z^s)MQeS%)2AD|zoAEYPs20g1c>n(agKUANj|4=_tKT1DN|B-&8{$u@Q{S^IFy-lB~ zpRS*+pQE3rU!Y&8&(bf_FV=siU!q^CU#4H7U!`BIU#nlQ&(?3$Z`NXt{;2+#{Wfm!XQGs-d{`mZCGnqXIO8@ zHf%6_Y53NVW7uK%-muH?gJF+huVJ6zfZ?#=sNtmHXTvXs%ZA?!MTQ%On+Eu8K|`_O zf#H$CZYVK4F+4RqGdwqx8D1D(8QvO@QDIaXRYotPkI~Oq)#z`mW~^?kX{=?eW2|ee zXACsfH#RUfGB!3gF$Nh!j4g~UjiJUcV;f^zV|!yqV<%&jG1}P0*wxt0*uxlWj5qc+ z_A&M~4loWh4l-(uIwNJIje4WOXfm=!vyn4ejDk@#N=Df@*qCTcGA0{G7{?e>jAM=C zjH$*n<3!^m;}m0tai(#WalY|W;{s!rak23;Hj9ZP{j9(eQHhyFL*0|l6W87ifY20PpZQN_zXUsF^8xI-}84nwe8IK!J7*861 zHl8t_H5M2z8ZQ|y8?P9DHU4J2W-Kz^G~O}ZGd?u_WwaYhj8BZujAh0b#+Sxd#@9xN zQNbt~730NtGgTNrrYcj7Q8NKdO{Nx8o2kRpW$H2YnFdTFrZE%DgfLB+7EDVflnG;6 zGi{g;n08DA(}C&4bY`NNu1t5P2h)>@W#X84rWcdI^ky_nAEqzUkLk}0U~~-0Pz=rJ z86(3m9AjYwMr0&LW~@viGn5&|3};3$qnR;G3NwyLWzv}O%mgN#naE6HrZ7{P493P} zGSisp%nW8WGl!YW%ws-b<};r%SbW;L^hS<9?r)-&16 z24*AkC9{dy%xqz{GTWH1n6H^{m~WXJCYRa4e8=o$zGrqZyO}-AUgk$;KXZV|WAd4U z%pvA5bA&m{9Al0%Czzj@pP5t4Y32-bmMLHgnRCo}<|6Y8bD6oqTxD)Cx0yegJIr0? z9&?|0!2HELVoI6E%roXWQ^vevUNgu9uU(qFOjS%(P5!28rs}2|CbcQRRMS+;RNGX? zRM%9`6lkh%YG7(;YHVs^3O0q9nwpxMT9{gzTAA9IB2Dd09Zj7~QKrtOXj6An4^xaO z&eY44VCrqsnEIOfnFg3>lip-78BL6dHJMF=O^K$Vrs1ZMrqQMp(^%6uQ<`bKDcv;D zG|4o@G}V-0vY9eXvrThMb4~M1pPCk!7Mik5i%d&QpPQDNmYJ5DR+v_rR-4wC)|%Ft zzBFwyZ8Lps+HT4*<(j@TeQ(-j`oXlvwAb{bX`gAo>3}KEly5p{I$}C%I%Ya5l2H>7MDnso3p9A){FIFeOW)&pRLZ;VAX6*wia8Pt;^P91K9>_L$(py zmjb^*BUD%K>}Yljo5GG|$FZqw8atl-h@HTuvlH1#?8oe6b_$!pPGe`Vv)I|}9CjZ2 z2|J(tlwH6sWV6^s>=O2Kb}74zUCypzSF>x_^=vk~f&GHr$bQLgVmGtf*ss{H*>Biy z+3jo&o6GKCzhif@-?O{eAK2aO9(FJLBfFnHz~-^}>>>6rdxSm49%oOmKd~p-pV?FF zY4!|zmMvh@Vyk_A+~g{gwTVy~_U1USqGbMeGgsCVPv$&Hl;WVehi{*!%25 z_7PjcmazM=14b6?sP0YdO5OY&=GjmIGs5#smVQz2kVD4m&GIulgF!waam}AYo%)QMTbAR(d z^B^;6rpXdYr7W*%-%GAElqG>&EJ@F%(>?8%sb8Bn|GOiFz+_+HSaU;H|Lr2%?Hhg%!kcK%ty_~%_q!1nNOKd zo6nffnlGAvF<&wNX1->=ZZ0z4FyA!)VgA#6$9&Ix-&|~dX#UIm$ZR*4m`lx%%}>lv z&Ckrw&1L47=GW#o=C@|VDL6l_Dp!rG&eh=5TurVvSBI<1)#K`O4Y-C}W3CAo!ZqcZ zb1k`6TqxI?Yr}^({ehF=C*KKxv#jdxo@~{x$RsI zm&@(sc5y#&d$_&akK8_PKbOblbBDPj+)?frcbq%Ho#cMzPIG6tvs?jJ$ergda+kO( z+^^hk-0$2q?mBmq`-8j9-Qn(X_qhk$L+&r`5ohO0xyRfS?kV?-d(M?{FSwW7EABP- zhI`97IAnpB-7QLs%Hn15wp6kBSo|ziE&i5jmg<%o7PTe7Qqxk)Qrl9;5@@M!X<%t+ zX=G_^X<`Yo1Y1HZO)bqV%`Gh~EiJ7qp_VX9YfBqTxTUS-14}zggeB6_!P3bRWr?GRUH}=q$8_v4|GgVzmsn zBw0pSMp;H%##qK#(kvfYCRoxf6D=QGCR?UjGAz?9vn=y0pIR1JvMh@%i!DnmOD*dx zn=M-`TP1_T?6CY`*=zaHvd@xlIcPa-Ibr$9a?KV-o{VoXYe!mS^R8%EIn6OK%u_SKxia17J`IeAw*~@G!t3~p+ak+jSw!h6C#92p}o*S=p;l5 zorP$ji_lf*CUh5KgjgX?h!=VZ2|{l{BlH#e34;W!pc6=e5@B0b<77L#VON7sbrNS~{xv)}LC9D?K z3hRXRLbk9$_(Iqyd?{=aHVa#Xt-?0pE8%P58{u1FyO1N~3Oj`Fgq_0o!Y*OAut(S{ z{3z@b_6rAuJRx5=C>#U31z|y;id3Ocr7>tB&x(JqOa&DRu!v>)y0}( zEwP^1L<|yx#SpQn*i39Lwh%+bFtN4RMhq9*i4kIZv4hxA>?B5sUBs?pPccS}730KS zqDJf^_7(ey{lx*|AW@e6UI zxJBG5ZWF%}zZSn0w~IMquDCI^kiGPT<#XrS6;ytlgd>}p){}LaG zcCkb(6(5UF#WL}Q_)2^&z7f47Z>fspEBQ;+r0SAdswvf$>Pq#c22vxbvD8Egk(x@) zq~=nn)J6)IK9C}$_EHC_qtr=?k~&M#Qa7oG)KiL);-q+~my{s&mNZfysjt*e>MsqD z21NPDFpr2|r)lrJ5W4oSzQ6VgfPXX%V|Ub-M%lzx?dldekFr0dd6>6Ua` z`ct|q-IE?jk0iTPDm|8-NYA9_(hKRO^jfMS`^dg>RoP!w%K>sNxt<&-H;|jiL2^^M zncQ3sm)pu8$Psd+++OY=ca)>#&T_QeMeZv1kbBCpa)R7j*2sP2zH&dgzdTUZ$~u{n z^|C=`WRuLw7MYhtS(0VhDi4*1$)n}5@;Et79xqRjr^+@tQ=TTzlxNAa^`4f48 zyim@P7s;Q=pUcbS7Y49{H>fLepD`&M>d8-KjS1Z|S zwI*7J!2kVem^In@p>>3Hq;-^av~`SitaY3<)tYAg$eM1QXq{yJ*gDxd#X8lRVYOK^ zt<$X2tuw4Mt+TANt#kfAhVH^IY6gzuxX9Vvt$>^z!|v_?2?J5!ZgGpdb#DlEAcEZ; zkKNtf-R*{Kv%7ZJ)XUu{hkA!gPud4 z!=59aW1i!l6P{C^)1EV)vz~LF3!clKE1s*KYo6<#Tb?_fyPkWV`<@4$hn`2C$DSvi zr=DjX!()1KJ#9Pc;!CTQ=&0Eu3%UjzU=B?|k=dJH;;BDw_>}~38 z?ghM2-WJ~0-ZtKL-uB)O-j3c*-X7jw-rn9m-T~ei?-1`$?=bIhZ=!dkca(RuH`$xw zP4#-bUN7W@y{MP*vR>XRcqOmwRlS-w%{$gR&O6>a(L2dI**nFX>7DM)^3L#Pdvm;V zybHZcyi2{yysN$Iy#IMOcsF{tc(;1DdAECadUttud-rzc`tdd zd2e{{c%OKmdJV7X&GWwUzV?3be)4|x{_y_v{__6z763y*7gz`^3>F7VfF;3FU>UG1 zSRSkZRs<`7RlurXHLxaF53CP11e<_O!Db);Mu9ECR$yze4cHcJ2X+KIfnC6^U^lQk z*bD3n_5%liv0xk+4<>-az~SHsFcBOHCV`{C(O@bFfiQ@GD2Rgu=m#l~23e2;c~Agl zPyux?4IBfegJZ$*-~@0YI0?)Iv%s0)Y;X=Z7n~0+1Q&se!6o2Qa2dE9TnVlL*MXbB zZQu@YC%6aP3myOufk(h&;BoK-coIAXo&nE+=fR8MCGawM1H1*^2Je9P!293>@FDmJ zd<;GTpMkkx9%z9!=zuT4*WerQ9rzyn0Dc5NgI~e#;7{-u_#6BK=7XV-3n~m1fr>)K zpyE&|s5Dd#Di2kHDnnJEs!%nkI#dg)14Te}p-9LL)rT5D4WY(RGpIQPKv7T&s3p`I zY6G=}+ClB1j!-A43)Btj0riCXLj$2f&|oMUih+heu~0lT6dDE%hZ3QYP!co>8V#jD zsgMWqLLdY|FoZxTghK@6hyE>+AR1yI7UCct5+D(hAPv%?G-wQz4rM@Nq4CfpXbLnH zng(S;)1fSA29youK(nDa(0phCvxoA=mK;Rx&&Q@u0c1TThMLj4s;iK06l~r zL64y)&@;$@Oz1geK@Ri+dI`OPUPEu7x6nK2J@f(k2z`P+Ltmh;&^PEi^aJ_{{epf& zf1tlmJ`{vP;DT@{?1Bryh2bJ_QMfo<0xk)cf=k0?;IeQzxB^@et^`+xtH9OZ>TnIX zCR_`y4cCFg;BYtst_w%P_2Bw&1GpjF2yOy5g#kDUZUMK1+rk~-PH<%FjKUaJPV!!&xPl~3*bfYQg|7> z0$v5LhS$OC;f?TScq_aE-U;u5cf)(&z3@JGKYS2A1RsTu!N=i~@HzNAd;z`)UxBZ~ zH{e_FZTJp+AASHogdf3=;V1A@_!(@%&*41y75p0h1b>FVz+d4X@K5+R{0IIE=fgob z1aTpSkRnJ?q!>~HDTS0p$|2>E%19NYDpDP(fz(85BjHE{QWuFt>LCr0Mo43%3DOJ! zkQPWwq%G18X^(V3IwGBsu1Ghe2ht1ajr2kKBK?s5$N*$85{(Q&Vv!L@B9erRLPjIW zNGjq*Km+8<9=OW@HPp4cU(D zKz1U#kUhv=WFN90IfxuW4kJg9W5{vj1acBNg`7stAZL+t$a&-fauKs$e6S;-lM(!YYk$cE}iR2>Bkvzmg9OMP^3VDsZLEa+okoU+(Z|6f?yKpm?F;jT`yzaG zeUU!5ufDILubB_9 zM|?+p$9%_qCw*spXMN{<=Y1D^7k!s}mwi`!SABPUcYXJKk9^O3rti5g&u9A_-wWR> z-)rAn-#gzY-&fx^-*?{+-%sB!-*4X^U%v0(D?J*Dy3oRCDYPtF9<7L0LaULLZ|~(5L7#)I@X9Jk&yM)IndMFVR=%YxE8J7JZL?LO-Kl z&~NB>^auJI{fp+K!GD?1f>OE zU^TH?SZypEi@@q)Zmb?wA8UX$#2R6Zu_jnEtT`5iwZK|pt+6&(TdW<{0qcl$!n$DH zux1>h`eFUC0oXun5H=W##$vD`SS%KY#bZOUVb};P5lg~GVJVmg^I{MN z|0|xN7>41P9}8daBBo**mWGYN(y_7Fcx)mz4a>x)V>7U9EC-v3&BA75 z^RW5YLTnMX6kCQZ$5vn~u~pb=Yz?*+TZe7HHe#Ext=KkfJGK+sh3&!iV*9ZJ*g@;`rdyM^7s?qc__``82QA@&%1f<47d zEEju@tX}ko8V3HW;lSiz+2+2@HTi`ydB;i?|^s2JKG)WD96lbOh)=>N<5Tdd_%u8dpN?nY+4wAc zHa-WRi_gOs;0y6Z_+oqsz7$`EFUMEntMJwM8hkCj4*w5dk8i}c;9K!+_;!2;z7yYt z@5cAwd+~kve*6G_5I=+;#*g4f@niUL`~-dyKZT#h&){eAbNG4u0)7#{gkQ$5;8*c$ z_;vgSeiOfi-^TCYckz4pef$Cb5PyU}#-HF%@n^V!n|Ln%9M8io+{PXJ1^yC$g}=t% z;BWDF_l zh{i+{qAAggXifk`6w#7sMYJZ`5bcPLL?@y%(Us^%bSHWcy@=jKKVkqekQhuv6EVaP zB9@3F;)w)eC^3u}PK+Q%5=q1;VlF8AP7GZAV`8DXo4YFf+KiBAVfkU zWI`p*Jv5nYH>>zd$dx`zT0pcKWh&W6fA&wHqiBrUB;w*8FI8R(4E)tiC ztHgEU263NwNIWK<5KoC`ghAvI&xt(3B5cATUJx&dH^f`w9r1zqNPHr`5Z{RJ#1G;Z z@tgQV!k|`HT9C`HTBY_)Gdr`^)>Q_-p!W`D^>b{B`|qe`9|We^Y;y zzooy8zpcN$zk|P{zmvaY`j`1v_*ePY`#1Zy`M3Lb`}g?w`uF({`j7ih_)q#z`Oo^#`Oo_=`LFn| z`mgzK_;32}`ycop`XBqB_@DXn{I=imzx2QHzx99efARnH2mJ*C1p}dhLV?18qJd(8 z;(=0uGJ&#za)Angih)Xj%7LnZnt@t@I)Si2cpxHBHxL=97ibV@7-$k`8fYE>0<8jV z0&N5B0v!Tf1Kk2W0=)wL1A_uX0z(7C0>c9%0!e|H~1=0dz0_lN_z}Ud}z=Xi0z~sQRKxQB-kR8Yg%nHm4%nvLGEDS6P zED5X%tPN}qYzb@+><;V=>yQy-J+eO8fNVrI zA)Ao^8AY}vTa#_bwq$#~QgRu&f?P?i zCfAVb$o1p~aud0k+(K?8x0AcbJ>-7!0C|`^N**JRlc&hj8m%L9tARm#B$tUD<(ji}wugN#$Tk;+Gp8P<5BtMa#$*<%$@;mv1{6+pI|B!#l zd@@KDphBon%0(5Ticm$V;#3K$BvpzkO_im}QRS)1R28Z!RgJ1n)u3upwW!)u9V(oP zpz2a?svcFJYCtuino$7Nf@(#zrrJ{NsPP&T|x>4P!9#l`N7uB2UNA;%$ zP=lywDux32)Cy`9wVGN(t)!}UYMrsqanc6~arM6MqsU6f#YB#lq+DGlD4pN7x z!_*P#D0PfFL7k#bQ)j5N)H&)rb&Jjyr zdO|&;a;fK39%WHBpi9!F=+bl_pKd@mq#MzV=_Yhjx*6S^2Iwfd1>KTvMYo~b((ULDbVs@q z-I?w}ccr`0-RT~5Pr4V~oBkJ4qWjVP=>haWdN3VL520h}I69tApoh}K=;8DTI*}ep zC()zm(R2!(N_%K84bl(|(+KUOQ5vIhnxq+;r8%0XC0e0XTBFnGvGh24JUxM)L{Fxt z(3$jfI*ZPxbLg4$Y*)>jMtVEFlip45 zq4&}U>7(>9`ZRrpK1-jYFVL6h%k&lcDt(Q0J6bZPBmjck~DPBmIf~On;%j(%< zC7Du8X{HQQjw#PnWU4SVn3_y2rZ!WD31h;U2&OI*$+(&NOarDN(}-!zG+~-D&6pNU zOQsdmnrX|lW7;zvn2t;*rZdxp>B@9tx-&hPo=h*M57U?F$Mk0gGJ}~IW(X6@#4+(q z0yC5u#tdghFp11aCW#r%q%f(Bhw(BX12Y(dGX&#j0u05_48!n@z=({*D2&GF%orw} z$zaAZsECT0t>mD$E@XLc|`YX1*|AnQzQ@<_GhO`OW-c{xbPYkSV~1um#yr*2NZL zi?Bu6Vr+4?1Y43V#g=Bvuw~hDYYXGgFj*->mVo63SL#KJ7f;w-`X*#Jwk49l@RE3y(Rvl^?jY3w+5JUfw{ z#7<_Xuv6LT>)8L; z_3Q?ABfE*+%I;uyvb)$l>_PSrdzd}K9%YZQ$JsONS@s-zfxXCHVlT7T*cH$%KM!6 zCGTtAx4iFpKk|O&{mT2D_b2afUVdIMuYeU|6|_PvmsQ9rY!$JJTE(p5Rtc-5Rmv)D zm9ffN<*f2n1*@V}$*OEsv8r0ttm;+`tEN@Us%_P=!mMyB!m4XUT5hWV5CRkg_7%8L z@Z3KPIw)C>K#CqESS{h@uf~BdSNNjc`YVMU=0*Frslpvj|Vbpoo4Eog->R zq(+btR0I?ON7RmJ9nmVHN4;+Kwijp-)-o(K+!b8&Ptq`hK-ho(%JGHk6{>g1ea(H< zea?N>z0$qHz01AR-7#!dcux4t@Y&%NfO=MatAW+fYGgIGnpjP(W>#|xu%fIMR!ggu z)!J%fwYAz=?X3=0N2`<7+3I3-wYpi|tsYiStC!W=>SOh_`dR(00oFikkTuwfwqmRy zR;(3g#ajv1P-~bq+!|peS|hC_Ym_zGO14t0RLf&|Ezp82*g`Cyg<6<}TZHAe0v2ge z7Hu&WYjGBD36^L{mTW1OYH5~krCDRFbSuLeYmKwUTNA8_79Gxnv*BDgA1;K8;ZnF9 zu7o3w&p{o`!5zYx5;-+;T4ZMA^vJBp8IjqMIgv9XXGPAAoD(@Wa$e;8$OVxLBNs(3 zj^rbSNHJ21lp~c$HByVzBhw3pimd!dpbNsM{j4g}X()7WG>+Xwk3*=}=B;xF_5j4u(VFa5xg~3rEAT za6Fs{rya(bWKFiFSW~TOR;D%G%Ccry*;bA<)0$SZl3y)_>M|YlF4X+GK6Ewpd%OZPs>chqcq%W$m{1SbME~)_&`N zbw^)_v=N_0W1`J+_`$PpxN`VVPF0_1wy{EGr~f@SnhK1q%fW{}W1!28#uY2TKG? z21^A?|0`vb4VDX*4^{|P3|0zO4ps?P4OR>lh9>>2D8>>cbA>>KPC>>nHu92guF92|@e#sr51V}o(Q_+UbCXmD6?cyL58F*q`q z6dV;C{V%&?TaNX@dTG6~UR!Uhx7IuBz4gKRXnnFiTVJfN);H_B^~3sU{jz>rf2_Y& zz7@0z*dca7JJfdBh3vw15xb~e%r0)1uuIyd?9z4_yR2Q#E^k+`E83Op%61jIs$I>l zZr8AD+O_Q3b{#v+4!0xhx^|@Pw(HsT?FM#3yOG`4ZelmJo7v56z>cz8*e&f=c5Azh z-PUerx3@dk9qmqbXS<8t)$V3@w|m$Dl1BL@5fJ9&{0e;JK0XLQ*Dp!wLu%QVH>f1Hfm!wZWFfO4%nnk z*|g2rtj*cHE!d(h*|M$Js;$|&oo0`*)9nm<0D#dx3qxe&7Ib5I6)J295wnfn&gN z-~@0II0c*r&H!hDbHI7v0&o$y1Y8EL09S!)z;)mTa1*!%+y?FdcY%Arec%D`5O@SU z2A%*Hc z-?tyw5A8?xWBZBy)P80gwrS_u&+RbcE~k()Gjvwy?9e&?l+<~l^Z)s&3;(&P zi~o75OGB51F8}AKt_)orx+Zk(KUMX=(Dk7kLMJ+toXO40Jr{aD^g?KsGsDSta-5mY zEN8aUI=@YR`}_|1UGux;ch2vU-#x!ae$V_~`E#7PPRIOC`EB#t1 zb*F|?)2ZducIr4`PPh}{)O8{qw^Prl?=)~4I*pvhP7|l8)68k^08W(C!fENWa#}lW zoVHFor@hm`>F9KFIy+sQu1+_nyVJwz>GX1XJAItKPCuu=Gr$?>3~~lL(N2sr#EEs{ zoOma}8R`skhC3siL}#RvaH5Dnyy-|+O9hP3V-3Q2v=QKq|5E9=c?~&;A-e<zcr?^wy9=F#Gx*<30M%+F(>c-r-n{fNx z0XONU+_al7MS+a?fyQyJx%SxaYbLyN|eY z-Ot^5Zp&S)-rR`tKrNs)aM(HG9CeO4$DI?-N#~Sv+BxH#bwWbS0#`$f0u@4D7N`;O zqCn%2w*{_;yeTj^8LVMWuwYPm5-_rRWYhkROP5DQB|X= zMOBZg5mhs)R#fe%I#FR!;ZYG$b)zDq+)?$S>PIz*Y8Z9Jx$0bVt~)oJo6argwsXh1 z>)dnhI}eq9v;==xl=YQ&#@fa`2#ElmH>Z&e4sF}6j%oI&mWLK zFn>_~;QZ+PnEWC6vH5ZN3Hd|whvg5?Ps|^gpOil;e{_CweoB67z9-+C59UMpa6Xcc z=41JIK9S!A_|W`g^H0q`H~-T7Yx8f-zc>HU{AcrD&3`v90(^14I^Ue{&JX9O^UL|| z{Biy|`A*O&@S=b_#9h!G>UOycxeL3CxQn`rxr@6?xJ$ZAxl6mtxXZfBxy!pNxGTCV zxhuP?xU0IWxvRTtxNEv=xof-YxWnAx?g)2Xcck0xuIH}rZs2a{Zscz4ZsKn0Zsu<8 z2Ha8Z7VehrR_@mBHtx3WcJB7>4(^WbPVUa`F7B@GZtm{x9`2s*UhdxRKJLEme(wJ6 z0q%kBkQW7CguZaSDD!dqV$V0FCMc`*k^1m`<%^VE!Jio z_7(e@{mOo0f3knsd^X4y;0kgst`Jw4E5a4!ig6{ll3XdS3|E#b$Cc+Qa#gu%Ty?Gv z7sl1)BDs28eXar5lxxlbTnnxx*P3g?b>KR3ow&|iH?BL^gX_ul;(Bv^xV~IJu0J<` z8^{gfqPZ9@mW$^SxS`xIZUmRejpUNJQQT-QnM?U+!g>FpZ4d`@2SzI=k!_DGmb91=4+K&$&F#=3a2GxYyhp?j84@`@ntVK678VuiQ88JC|&v7^#NG@EV{28L)vE zJ_9u{12+i6Zv+g|pbXkz4A$Tb-VhAYkPO*S4AsyK-AFUW80kiaG1eGoj5j726OBp6 zWMhgk)tF{v8qR>#$scMvD8>*EH_pdD~(mg zYGaMD)>vo!XRJ3i7#odE#%5!SvDMgSY&UioJB?k&Zex$J*Vt$5Hx3vFjYGx{?kD$) z`_28~{&M+TkSoB4@CA7nUxY8pm*7kCrTEf(Ileq!fv?C{;w$r2_^Nz0z9wIbug%xt z!}xH%E+5I)=Ns~k`KEkxK8kO_x8>XM?fDLTN4_)Ph40FD<9qNu`Cfc)z7OA*@5lG& z2k-;=LHuAonvda!@UeUxAI~T7!}t;WXg-zq@LnF|As*%t-p8Xn#^XG}`+1V5c!pW4th48n2Ak#v9|U@y>W} zd@w#5pN!AO7vrn(&G>HoFn$`pjNir|3P zl4dEhv{}Y1YnC(1n-$E8W+k(-S;eesRx>qT=hOIfejGo6pU6+*r|?txY5a6Pi_hj~ z^0WBa{2YERKaZc!FW?vQi}=O-QhqtVf?vt6;#c!)__h2xej~q$-^_2}xANQg?fedY zC%=o|&F|s&^85Jx`~m(Df0#eQALWnn$N3ZdN&Xannm@yz<}Yl}JDXk1u4Xs0yV=9+Y4$REn|;i_WWR5aNo5^O1nQD4WuL+uv37d%NGf@*Wag#9pX22v(%A`%kWKGWG zO~DjR$^6WJ<$v%$`Ct5R{ty3`&*uvW|Dp~;s8C2KEEExn3dMxtLJ6UyP+BM}lou)r zm4wPd6`_VuOQIwCQMnW^8mC#0LFLV+*3tffoLJy&*&`ane^cDIG z1BAiC5Fu8G6XJ!T!Z2aDFhUqDBnv4*s^Ag40w_R&Pe27sAOyb<5J-U%Xn_$pK@dbi z5>!DGbRkU`BV-6;g>k|JVWKcukWIx@P0iHJG;@rZZf2Nc&2i>@HOdUJ!h(cENiHn*5t&28p(bBDRp+-2@I_n3Rledd1ifO*h7WF9t;m`BZH=5h0c zdD1*(o;J^zXU%iwdGmsK(Y$0{Hm{gh&1>d$^M-lTyk*`t@0e4Bslqg2x{xKz5ORds z!dzj2uvl0kEE84<>xBP=^}+^Wqp(HTE9?^v3WtPa!g1k*a8|e^To$eh*M#fB4dIq> zPk10a6dnstglB>wn1Us|6y6ALg?GYx;gj%L_$qu8z6(EuU&3$UuaGYk6kTFrv4~hy zEGCu^ONph$GGaNgyjVf3C{`A$i#5esVr?;8tSi>>6N@0$0_`{o1lq4~&sY(6ocn$JwbG|gP|xtV8LrfoXr3-hJ<%6x6UG2fc+ z%=hL8^P~C6{A_+Pznb67@8%Elr}@kLZT>O;n)znXERY+LTQD~?*Ogl+w{UKe+@iU~ za*OAd$Ss*$Dz|iQncT9u<#NmCR>-ZGTPe44Zk61sxz%#3=hn!rnOiHjc5a>Au-x$6 zh}^olk-6^Ndb#y;8{{_3ZIs(Mw@Gf(+-AAWbAjBb+!nblb9;+@#J*xbvA;M#94JPM zG2#$0R*Vzl#i8PGafFyCjuex`(PE02Dtbh(2#K(Wh&~Y&F%cL2Vn8HCT4Y34i1>z!cvA9HBDlQY3iz~#H z;wo{qxK>;z{wJ;%H;5a>P2y&8i?~hPF76Wdhh(yy3e;Cy8Ns9zcV(5)E- zk*ng**kSNy=41MVDLaS2i5ES)s4e3LfpOlq@%0l5YeeiC;mhdT-b-2H{Au258KZ}{ zo9|6;$EJzbd}G8u5FO*rdhD&D&V=7`O(4$OWZc*V>Arp}>Amc274w`Q5Wg($;+Szd5;^_pxThI~;>%Bk<4%j`#0%mj@v?YJydypkABvB~ zC*o7l5KS>xd@kmRw&;j2#FyeL@wNCyd@FtsKZ{?*Z{m0Hm-t)!D+a{^Qb8$HDkK$_ zic2M>(oz|ztW-`aFIA8#N|mI_QWdGHR70vM)skvU;Zj{GQgTc6rAAU?sfpA~0;DLZ zh161NCAF72N}Z)HQdg;m)Jy6u^^y8X{iOlYKxvRPSc;Znq&O*FN|1(1!=&NT2q{q- zB~6(4bKaAf@Da?yrAa%yYrVS>WqQ_B_Z+sxF)^^TEo%b$21kb`jHtwvODE;Tz;FVHnXCpr~D`1ozQvW9pV9Tmk3Fo zocvRGJ9ji(JmpNv^6V2MPL55_Nt(B1{(Y_Q}*DTA}F4+ zU@SW2?vhMT?6lX^iOP3i{;vD;%$`>I7>Q1pen=+RQLlp>`{kmQpv36}yA zDNzzFF%m0r5-$moC`pnmsgfq?(pYJnG+vq{O_rueQ>AHArj#w^NVBCm(p+htG+$aE zEtD2Xi=`#fQfZmAQd%vok=9A;rA^WnX{)qN+9B7o>~QCF!zsRk|i!mu^TmrCZW%>5g<)x-UJD9!gK7r_wXYkW490 zIwOe5hd5*W7U+d{&zxNU$oNxnWuTLD=4j1hY9zNAS9$ETv619OKeuQoI4b^E0zAbS zUMe~?878{wFLElU+E7jI#FQbv!QO~0ztnKXxtUnXS<;+Q z??yYBXT4v1>huE8L9qYi%!O5^hoyg-^Ivq?d21GwL@IN(^g?n9@#5{G9<$?BKu@i#$-ySWkzOYPUdAn7G+shWL4JWG&rKh)B4b>9GTd8;8X7)iV%7xjvN^SUEryX)?&#JDvuGrn@~(kagIdZI>Pyb^ zvD>q&jzW=-DO3IZ=8etrPnijQP_7P7#LIg7C5(tJp}tI=Kt0S%_twtIT$HDTCVUY> zz-sZS{%6@WQs_k;Gt!q&iRmy3$~u$27Cu7vj@=ncOe!*ZMbZ(ke&Am471PRR>iA|6v%9G?N@-#V9&X#lJS@Iltt~^g( zC@+L?R(YGeN8T&%llRL9J}#e>Psyj{ zv+_ClynI={B43rS$v5Pi@-6wUd{4eFKa?NIkL4%wQ~8-}$fletKbP}lOSWZ4eks3_ zU(0Xhck+ArgZxqcEPs{1$v@Sk z*!gFw$dvBa(h3U6Qv#6`+k^W3bxXrqI#s z1g)VM@2#KMCqW@r4{7DCmpqAh9^E!8bIQb&W;vyl(n=YntWr)XuT)ejDV3EfN>!zr zQeCN`)KqFIb(AnAT!~QXDsH8oQeSDHG*lWXjg=-!Q>B^GTmh6QrG?T`X|1$T+A8go z_DW}^tI|X1sq|8MD}9v#%0Ok1GFXXLVw53DtP-arC_|MIN}}RXKm}3|1ygW^Q2Yw1 z& z=%MjHa`uB~Gi${WB<96Z>l$rO&amb0SAX$9y4QWeB+=U1}kKt)F>E%u5E=pRJ84+DGdUGr|;iPAMTnTi343T;$wsv4t>^$#$*fX!s^eQ>`g}*tV zbd#9IzF~i7wjQBKgR(~Xy3Jjbu`W5BoR#=qeJgdGyNB2UmrgG{A~v?pyq`%MMl?uZ zXCQF;g1li%=j4msb0&jl6RIb6NL)O8=Zx0AUsCv^+I%>EYp+>51wVqmEZJ;((8>x-e zCTdf)nc7?h)F`!u+DdJ$wo%)u9n>yrH?_OkL+z>dQhTd?)qZM!b$~ih9i$FcqtzI7 zh#IHHs|o5*b(lIrO;ks!N$Mzdw3@7@sHv()^{Su>sj!NuJ{46l6;}z>uLe|7rBp^` zRZbODP1V&jb&NVrov2P$r>fJ`Om(_CL(Num)YogF&9Vb(S_u<((8!0=t;4!|2T zx_Vp8Tb~$=K9+fKOc(gm_~iMXp-&gA&1e+=H#02ZV8-&~{r>h@o5ziu*)XAozi`~X zF)72VGh_Ty^?`|hqk}1to{c&X9WrW@ui)elqe{%Zx?r2|myXEU7F#R*NM`@Uyx63e zdI^maC3sDSkR*CfdULXSC)e@U)5^r$k16F_t*%l3Q#Ys^)lKSFb(^|f-J$MOcdL8U zz3M)7zj{DDs2)-et4GwM>T&gidQv^5o>tGOXVr7+dG&&NQN65QQLn1k)a&XE^`?4D zy{+C+@2U6Ihw3BsvHC2M`R;k2^L+(e{oY#g`#@5NY zoU}T#*SyJz)zfnl#9^g}S()wOaoEB+cg3kBn_N}si{ zTQ#R$`r?e8W9E-)PNw=EXqn>uMcHHLq~FnNLqq0vRR<(k34@3bsHnH|vd$W0617oUvX-KGG*E*ySVJ_QhH99GYlP<40ve^! z8mIA^sL7hD=~|kWu8q~kY2&pC+9YkVHbtANP17>9>Dmk}TbrrP(q?P(v<2EiZIQNE zTc$17R%olWHQHKjtF}$suI~rJiCS++q%n?77bR)6C^1S$qlh!Y4JAGwFZ+OgtU&GGLYZmvI9};IK6$A@T9Tt7v z+bH!H%Ec~7S`mA4>Pl_W!XfGJQwPz_v--!TC)dcK`O{OI4(~0;r7U0mYc87IX|b6p zi#^cCzE@eTvpUC3%YH~+K?}`&oAYp-ef?5GRL@%g^>Mp&IURW=x7t@RDrS#HzS-qTIUaz26)GO&#^s0I_y}DjQuc_D4 zYwKZpxE`U`)gyJc-av1tH`bfzP4#Aaa~;s5^cH$cy_MctZ=<)>+v^?lj(R7(v))DT zq3>UWB}svL{JJ*rGk7#dSF;ifosdck?S z{QCn$R@tf0vJP2Yhuv6qN0^dguxRR^g!R#laL<&uR66@~!hKqq)OA^-Kz35qlvQJ< z4&4^hitCiHD8AZ|(g}J(boAepk^Hw2!~`>gpM0IYs1GB1>b>;ddLO;7-cRqZ56}nd zgY;-UMjxWb>T!C!o}drahv~!h5qhFNQcu!H>7(^zJw;E|J-Sy1bx4PGMEB{aj_J5g z=zcw*lRBl-I-|3?po_Ys%etbg`WQW3&(O!}nrq?`f7ch{-3^H-=J^OH|tyUZTfb7x4uW;tMAkI>j(8idi|8> zNlk{X@y?3g=x^)YG45VMbbJ@?2H8<4A6Gg4N#=EIT1tV`cY&DU5yUnw9=)GkA>9kE zPK_M;O7Kpv#HrJNRUwv-)0{s~yvi>nHV7`f2^FenG#aU)8Va*Yz9v zP5qXBTfeVA)F0_j^ryP1=jzY(Jl)c5-O*p_uk_dY8~v^RPXC~P)IaH;^)LEY{hR(> z|Ed4d|LA}9d_AZaNDE0Tm=>DmN-LCBIIT!p(X?V|CDKZ!l}am}Rwk`%TDi3HX%*5c zrd3L-oK_{RYFf3l>S;C7YNpjntDROSEj+DmT4b6#tzKG#w1#Po(wd|-O>340q(!B* zNNbtaDy?-|o3!Z}@WP+j$EmfM;mh76z8q65y;#Cn-+gpu_Wul>gL~T#7sY4Wwr$%? z8Z}LmCTUWxN!r!=+E$ukTW8zbZ?I|F*^fNYUO4ZKewOi^Aq=~fn67>i`U(e_UIlCOzUl@8Lx7>cFkm<^0vHL5 z0!9O4fU&?hU_3AZmP3&a8OKmw2m%mR`CAK(X)ffQgikP4&$=|BdM31kB~KrWC6 z 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 O)fxEUe5}=6mHof=qdZjr delta 35783 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%0Ao!~^F8 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

?PJX@YGFOnC_OXcNquAC?5%Y|}@{DS$h6l4WO zk*&y8FceG$OHr(-P_Px13a&z^xTY{GEQ%4uUBx}c1I07NbHz)=8wI5JqWGqmRyV!Q zrfyE%+`7eeOX`-@t*EoF+gayQhpG##3$2T;i>V{kCD&2v^6O}I%(}9=^18}8ZXK_V zUw5JIV%?>>D|Nrr-Kdk+$?F>GOm*FL<~mE=P~Ak`t-3pP_v(JFds6qb?zg&Ubua2( z*1f9xv+i}>`??Qxf7N}g`&0+jeXjdbHwoVQt?Q@N+tl0EFQ{Kszqo!$yGo= zJ*pmEA6Oq;A5tGtkFAfYkExHXkFO`zC)AVb)9OKlwmz>uzn)fKR9{wKS%0DaV*Ryx zX?<6{zTQ;dTW_xKuea2X)Q{GW*WaqYQ-81iVf~Z(XZ2s}Z5x(1*frQUY;169*xazQ z!LtF`;M0I=2yMVLgg0Ot@D14wj0RD|<%Vkw(uT$cWrMn*qoJ$8)L>~CZMfTTui;_C z)!ZW1<$nl3b5Zo1hd zZBjIiG`(s1(DbRvN@=Z}uH2|}Qf^UhSME^mRqj(BP##mdDbFf>l)lPPWrQ+XNmM2% zla$FyiZWA~t;|;zDT|e*$}(lSvO-y{Hj1puDEMuDq#~DrL$BWusE1G%CB5 zFO{#9ZyAx?62l_p1lg7WJTdNIjvx zrM{!Sr@pU#q<*Y^qJFA=rhcjZp#Dq!QT<5`sXwc&nys5{nwK>1ZQj@H((KxNq}i?c zRP&kUbItC}Ag|Nx+l*=sY>sHgHb*r_H^(#+n-iKz&1ubf&H2r=W_oi`^R?#d%{QB+ z&GP2DW>vGgxuv* z#nfVH8E*O10=0Z?nQXDrOwrhAW@+YV=4$3?=4%#c7HgJhmTH!1mTOjO>@=%1t2Jvh zjvAO|gT_g-RkK3_*X-2n)wpU7YmRD;X^v}7Y0hfSX*@MSntTmS!_craMVb;#rKU>5 z(eN~U%>~Ux&1KD1%{7f&qtMiA8Z?a>jiy!8q3P1}X$CYF&7fvfGoiVw`Jnkr^S9=c z=Bs8}>-5%{t+QHfTNk%Fwr**4ZFOrs)q1wovlZ1E&>GPi-J0E+)0*E(Z)LPHTMJvu zTFYD6tyQhOR(`9n^>VAcRnzmdOt)E)0+NQQmZ=2gTug$h?ahqM+ zsSZfPHBzuW$x{ZYG12eJdz5!eyh5#15f zQPxr3QQ5)mxX^L2<5I_!4rzz1qqaldQQy(f(b&<{q3LMtXz%Fg(01rMOdZ`F<_=58 zM8~a;I~{jB?sYurc-rx-<7LN(j=wrSc0e6g+G$!Ft*v&6)=s-hyIQ+OYp-3Wb=0oc zZqRPgZq;tr?$E-uyS00@`?M}vSFM}&l=h7FtoEGNN9(IaX#=$pTC6ro8?BAe61604 znwF+5(iUq=v}M{#ZM9aY6=@~fi`pyNYuf8tsaCFS)plu3TC;XUJFcD3KGZ(ZKGVL@ zzSX|he${@{TIr_g=IZ9@=Ia*dmg`pN>~w2%_PUKaC*5YX14g z9ZDCf!|L$5I2}<((ouAox-4Cej-g}f%5+?vKqt~&)?LwE(@AwQU4yPsr_`x+cXju4 z4|R`qPjoMIFLkeUuXS&Af9pQ!Al(<;SDjU-P3Nr6xt;Sm7j-V~T++F`)2`F86V|!0 z)2Z`#XLM&wC%%)|nb?`uN$#X{W_IRxGCGSoJ31#iZ*|`7e9-x@^ViO2ozFX8b$;ml ztMgN*O_yz#W7n3h9bG%ST)GZ+xphT!VY{Nc@Li;?3ZJvrt59j zhptaupSvcztn}9Uxq4guV!fSyquxosMZZJ8SHDkxKz~qwOn+SOraz@Wtv{wWaTdVf7iAD|D?2kS%i7=463T2Is`=#%s$eX^dS&(vq@^YwInk-k`8sxQ}9={b6? zUZ}sIzpii4H|kY-wZ28K(YNZ`^j&(r-k>+?P5N$qkKU~B*IV?1`Vswv{-OSn{;~e4 z{-yqv{!jfI{RjQu`j7gr`fvL0`boW&!P+q0FvBp@U}KnTur(|W*{3V zhHL}Fz%;N7#fC~lm4Ryz8ZH~I7_J(w8{`Isp~0Xss141A4ujUvY0w+YhCYMEFk-lC zxMz51cw~5Hcy4%Ucw_ivfDGRZ(~Q%NHpaQe#l|JZWyTdod*fQ8qj95ghY@Z>7 z7+s79jjqOH#?!{L#&bpwBhu()^fvk!eT{xbeU-Brn9DVCLa^glwcy6(oE^5Y*UUY&qOm7nCK>!smN4psx*mA64OP~ zHIv5FYU(nXOlH%FY1A}sx@CH3dSrTH`pfjy^vz_|J*|6s_l)kj-SfKVcQ5E(-o2%J zXSZiJvfHN{)g9W6=??G4cN4ow-IQ)dH?zB_yR4hr&FdC)i@H0ywcTCa#%@!0Pq(Fe zuzR?Bw0o@kR`>1hyWRJ?A9nxR{iOT%?w8%Kx?gv{>3-Y&sT=D4+HKWi(=)4QPS4z) zc|D7JmiIXIob5T+7jyde8QH_M& z*~jc__BW%<0p?J1ggMe2Z6=zN&0I6jEHqy*Uo&4f-!x0jGIN8u(X29S%w1-^*=X)I zTg)ToC+3&tH)iWTo4#3nbNg)jmiMjbTiLg&&#`Y~-G&(im-?`7YczE6En-($S-5=8*+aK3Y>QC-Z>!6iA)`nCN}`k(ec>wnSzvj0Q>U;Q8ZKlMZXRs+@p(*|q? zYzGz$EE-rcU^iet;5e{lVC%s4fgJOfxv-?0qj83K+FJfAYp(skT#G# zKpQ9;xHxcaKt9kl@NnSKz>|Sz18)Z24!j@uYvAjEm1UY`fn~X6t7WHUmu0WT#d6GY z+;Y-#%HnD9v7juW7Q7|SLbQ-96icQh$8ygF6P{gF6TJ4(=ax9XvdEbnw{V@xil$ z=LS6oeFg&ug9bweF@w>A_(95G{vc!U!r;Zh%Y)Yj<%5dB`oYG*=0VM1$Kb@^hrv&S zGlymk*$!)4!>@>V(c*pSG;eEpghFyja4j&snK1>A)7*-8yhP#IK!=~ZxVaxEu@T1|!!!L(l4Zj)w zF#L7++wkPD^@z>Lsu9U5PjXfNDGWKlj&DdXKU&p?US&dH{UogIWe8srk zxc&IXai{Uk<6Fmfj_(@ZJMJ=mZ2aW-sd11@821_X8}}bajR%Z}j$_8d$FbuvTIkoNtf)Beg`Pz{y?XMqU4d&->DztU`gjlPy5%8myL$csXDRjj+n z_haPF_)BT8($V?0On3S<&V-k{|0dMgpf$kUSsNCH9gI4LTN%F`nA49_{R-CIoDeQIs=sw5uEz$$E2gr!gn0?qkVipjtBp0NNrO-33<_Ei%dlI8uqh}$Dy(+wZ#%WS*D@MdOy|#zGD|Pd{j(HW{ z6X6n_kLw^XaxO9}tEZzf6QzmMlF6BI)a%(S;24CLAw|rvbi5D26ZqHb3Mt6b7*WOw zmVZSNTk1aSu^I@JGmu))mdx@d`sbne!Q}wCkYf6Q%5^Ga?m0bNwE_ktAk35k%vsLD%>K4?HpfDe>|_ zKMnE(Li^jWtKkQ*x02G+FBSY;RLXI7e}uLP6Gq)74U&iR=)k~wR_tDOhJAuN9Q-V1 zlJ=@>I&=Za1=d+O<}-UE)}hXU5xXbY-MBu%om5+_ODTqwb?Ng>JxD!Yna|1*PcanTqU?(#!6H zo?sc-cP{!u(CBLX%7mf0wtuUY$|XdZVHyWA9oLO zH@d&|NJW14a`k@f{nWd}XR%+h|IhwLG(E@?{1r11hQz9(o=5e9jGzI?(MRwi5EmLx ztWKIrY6lW~N_tl2tn9Bqot&NfAUBMGV0|s>C|OXZD2o8|eM7*zcrF|l2_Q3x5>W+l1OlJ%Z@y*_!RdfWKF4@(T6 z9oreVC-sWAe^N9prDU{fe^e)qNQf&mmz?3vfKnsVVjGHF1T&!*-dp|M0}SC`V*W@v zp4JS^n(vh4{8DC8@vgFKRbRYL`kzb=%`oS!uCRenxHHHzUUaWDVH45GF}!NM=Vf52 zc497L_eD>}P)TPp)VVM6>X`djgQcf^W+U(VM*AJ`|Lp(Oe{sOc0CqqZx-9UA zptnKPU~@=z*f{nvc6HR6sNkqx;B|-K_Q$TnXX115#yD=$dSLnH0*NavIV(8_7)po9 zC&_N)baGXO6|f8$z^31tU6j4N(1Ya$B>1&phUr%>5=b}mfq_vW?#WE?nC0_lm{0Uz z`Ay&b$T`ql$nN}an0e4Z*ksrb(0s@iS^zDC7D1QF7DG#*rO+~HIrP171@t4d60(D; zBUeFw39F$s(Bo=*$OG8q{@!b$(x}jwq<9BtPx3m*5rRSUGS@>JphQNG-}3VtAtz`P zv>Dn09d+LdMIqe+-bC4EZ-bHoNWuJw9`auy_)t?=M)>dOar6zZ?GP!zDP&>j4hRl8 zLjfcNv=iC|?S}S1d!a$zK4?F50CIs2LO(%=AXn%xbObsIbrOz2$D#I|y3)6yC!mv1 zWR4qj3OW>c8ae}=h0a0lkO$-mA))8zVTBn{wwYd#H{=8PLVl1x^er0&1wbx=Pw|Jm zo8x~B*qyfzG>%Sq)BvH=i1G_jVt>PC;~Hbn#lK2@oxYlKKeM->g5g|_X17GN5z>=X z$v$O%zUTa#F(VPi$VYML_&8vxy-7X_7LpFr^1wfJ=UHpmY&>|I%a~shRA%ct1z5Xb z!860e5f7tNlE*0Z^k?G7?hOBU{|y220u_O~gJ~fuT0gzpJ=Q^=_b z@`3be`PZ4RiryEyl}rU*xHr(k&#_ag?{bD>XAu7}ilURkQ`^Z;G6d9Y)^(IIG!pv_ z+ZI`bUkxO<^F@oeaqc7W$8e9lgA$5tR3-r861!KDNK*Ojr&g6 zM7~Q~$B|Rm9EYu+k%(GR!|N&N{-W1SaW2CL#OJ{Pm^l%1*Oe zk;}X;dCiS85p|62;9P7?td8&#B{}Jd`)&`&F9ZS$w?THHbxB(@_`sh(k-fTXXT{&u zZk**@jD+QJl~6-&C|6eB_X>p=K>HiU1rwG7GwJsf>+Bi8=Y3r~z0{dQ5PTLTi;L2- z$QLrZ^QN)0fWtIa_y9F6WJA;j;s7ZW_&;lr8;N0wJ!v{H$Niz`V|9W1ZO=c^W5GOZ zf5MRzS?cNRulba+4T56H1nThlu)syQ+i~*=2U50Y?xC)x?PWe;pQ&bg4PoC$HN+f_ z6UNUc&LV}90sw~-o3@1&%#A~C3rnl6_So#XBIu7eRpzErR>(2TvS8!tQ1_^7(fGKW#7~JcfPWbV{hExYkb!!|%o_l< zuo);{zgBk(R{2l~mIN;8GwnvnrD}hnM9himjYE*0x;b;8Gc!z-XQM`PDHygzZcn~}gz7q^T?~mV{G@d@5yODj%>qSrv5CUh18N+Ty zJj4dXM8@{Uu1)xu6qI~|x;l4C9*%aYu)PR)V4`cN3Go8YAG{9uc=*z>Dfro$b25Xo z3k$NVURO_gRpDb2lYIE+e+oPkbQXBvo1&Vc!(&{4PCqL(iBgh9r~SbCSc>6%5GwP~u;Sy^R3+tF=VL0;#*`@-e}r*&u4UR)2pBS}oE%&4NQ zq!#Av&dsO2D21xEyqzAWz5BfHc$>qvL|9?Vv7Ir0;!%WGNj}LAKurCbVoCdwwuO8m zb4%_+`bgpY7+Py1gB*cf;+I5p%@*iTqB zRttm)R+KPC7q3rSn|UKUJ7;rleeT8lqJm9@%UHjZIailS=6SyN2!|klZphuRif}^I z(fAb!ohjz*+u0u&e=$}t9~L>4o-4;yZ}%X2tPCEAa){1Mp{5)YV1j4kV!&)VE;#}^ zOg&0_PP@ys_3+3bW?iXzgq#uF82uC89e)R3o7j~xHE$HZpY+9(;iW}QL~w9dNq#9; z)0P$dTD6aZg@V1ULkd~ffGk#62J^a-dP-;`S>Zm#GZ~2vObuQQM1ig-eRMt1I$59G zO}>}Dq12vd!@uXT76nKBjgF7R#x96UkIy7LN!pzJJnt@J5i^jrxOBe9sHd%Wpf?+R zJ!D=~DVdzJJ#R5>CbNLKuk=9a72ZPOmZ%i>PadZNtOH*Mz6p#9ABz4){5fGWX*2a@ z{uH`H*-*uM;XL;V_tzdYPd_h$*Lt5apNIaN10v6#M<=7rXkl<9loFPTy^4*GyAr=U zaec-i%I+-B93*gOU2}Q4*YlLjt#L zeFEYGCPOY`;=^nssrVlg3@J>?eagyAX|A^DO?4E6_E;8@6`~7s3YrsjJDQSql!_NE zap!q1@!sT(^v(+iJ5LX;3oXQ)3L}S=Vd+s&#+StIjw}d6cphQ{H zRp2!r;Fe?d;8EGu{B!OscY*t;`+g4>k1US|9+RH$ygzx*@O|ui$L|FyEMUR;7wFIE zX@T#9HV5-UR)t1~3$eA>zoWiH$)Yo2dH8Ysy7*bd<4IG}ej>Y)L&;k5^NeMgiJ1l2 z^Kwh_2J?*t4;Y?>!G)_>cZ(v6Wu-UDzH%S%MB>w4G0@^D9K`k91 z_lEB>KUegMz=wf*gA0Q%1nYv|ha#gfI8^+>MAyWQ#7`+$vLa(7>pkNGGpP^*L|;2j zFshaGt;pz$hcM|5nTffHiEEN!$#Kw%3>xYSN)uEX+!S0E;u~5KmKA;uTON5U@>Ar} z=y%cCiNU1!jQGs4%*3px*$Z=PX<1Bm;i|GH6@6lR$&!G$fUUuILl;LTMV3W*;`MPM zg!ie}(+v5&<(t{J+HI^taE&3f;H(FiB4)K;ZtsqZ)f^auVtm@ z)aUHW{juOBJ-P64aavh<1+4NM@HL~ok%2xjU3jOs&GB<{1+)Xqt-#~{qdH20@lr?D z#a2_l)8`fERRvYA!ZPFjOo)g2{f7gj=nbKtLv6#>09n8(2}-(?Vx5Z5@B;DamTWAN+}T2F;sDuQw}_@EdO@?AGB(Q9B`9+OOF7t6JK6kp$4emKSu5t zFve}T)x2Tg432nHQ7Zz7=yvpA+<9PPuO+ETwCrzrkAmnSH$sktzQit!Cd7E-n6bO! z-p4&o`ko?9J(saKb6t*Iu4~?h{BT+ru%+qctJyQS4ZOKw-i$Y;*ov7!8-ikjLP(;V zX!Qh2~+^lxZp=yUX(z|N2yd?NHVZVvIsU z$Y5XC`DcL(!U7Uob8qB*F9=|)Dm+xJuU^EP1+>!HsQSQG(1Cswx&-qmdAy5+C1xzLHm*30n#-*|#>w}lgjI*v#m%Ok z$vMaUf;*d4EBa9!;(oxh327Gqh5jABBW8c%?raj&Uk(pRhEkwunNM>Gpvm@>R$P(_ z5j@f$GV}y>6de$HJA64d4$F;9hfc?=!_A4aCgKx@lIH=*l9-+W6=qSOW6Vs5&FU!6 ztfoSzRw05A>ZK_Rh0_5~{CIL5n!H+)DR(z>BK$bo2hn2jO$uHw=`Fq5@W) ze*#7@)ld({4?BsCh`bto9$!xw02>>*IeTT~EJ}{xs)SK^lE!;i>aQXaV|Sv{g)a z-1VeIprg%6d!G3sYk7`ujyUgZ(YERZ+&7WgA)m3#C>)-ZwAFL!d0gzDsY?U!L4856 zB#-1~s0DfomI=0_wgyxO+zxn()umS-J1QPEI$HDR*@r*}y$R3ysn-C{qwv@J%(K1{1XabbgvO6fdP@tu3 zibH|>KaP^}<+;yu@27{KU%k@Nk#u}4OAfX+a;wOnf@2oO?iBBkOqW&aN{kxQH>M?t za{Exn2!|~@B=2Z``?4h!mn-VLWo#ZNi93w)uXeK! zdHD$|^)BtRT$P?jo)=Yp3Pvw;v7L!^o*BGVf@{LJW4gtB8nX<)v0N)2 zDxE5Oq9`y-Fj`G6Q=oM!ZXtI%H>dcca;fXESMG_e?z^I`##t&^9LWjiUdE64z7=y$ z#ENSdZ;`pwBTZwh^X&ICYqLA$tMjK8&_&|nUJLyeMY)bwahBO|i?Jxc8bl*f!pF z!W)mT>74ZPlYa32=-rt4DkmiWd~vn&BJT4Zh`YMab%o;o?cwgDZd1i6?`dzl*fZX< z`i0qBvd?m(S-Q(-V0u(`3u|c*=$Bt=H=wo zmZ*3$1^;-Td%fP1Y#l#Jyg&CGdm?|W@Tlmuh%1f}$BPxxIkMxX8jC5h(DsjgyW?QW z@XS`(cXNj3^~C+Y|8^cJIpK-t)bsa5uU8FKXIOSvf~4Ssv!wYcxZu}X*PiK))|!keEI znbtQwG9z@sm8|r<;fs!yC`+%E(q(tcz2!RB>53VgG|pD8mY2edNrxKE}SznNW@+9547ZC^%N=ImTQ=UwN@l9BGY?w{Ri{9>PfMeC~Qs`x6u>Q1YI z`EGtj)S%e+B>m|U=_$q6+AC&b>WK7{IlBs87C(2+EGu;@JrcmhI@2n}!Df4$3T{qm5Jm)<(m;b10ld-k5wjx&CKAtc5MgE>` z2)9bSlHMfM%g$?mF$UNJ(xzuF$JhPzIm60=$`(}gTEgXUV{Xm=LNZ*DkTr?T;goaY zxR*qA*$G0e@KqE?R3pAT|5wR;e4+56W|;OizM3`HRBHa#a@AJkh{*86Jz`d8_Rqao zILTSyw3IsW6|~VVwi~zoU2>|%oAz18F%FA&nD>3meesKUk$Or(oY7j-|$zG}N%P(2FI*vH_3wGp(JkD8> z`)zKoq7vu7-j=2NO0BLZNxjp?<2Iwo*=_Kf{f^jCih;^-^*psvyG)m_A8g!gI%(75 z7xTo9osMfs{gM|Y-%4$_;JpPeaz+(Y6;E`YF8Q-;Q~4Oz#tMbU=4n%v&v_`gD>@q2 zTf){J#(#Ufle#$V)0}&ScS}x`-YZ|FdPnop`%g@a`BLVn@@Ex?J=^I=vV3!Q+)1@R z_o(1XlzIN&^9Sga`r|1}(_eYR%Z`8i&IilPPd3*A=b05SU5Z@N-=uZ?M zq-@XpEpI@<5%*KKllN2;oxY)@j<;L1R~l9LF88%p$e$RWDeEIYD}SW?Om)KKpVU4_ zT1Ifp)=#zhQ?kVY3 z{#asHKR0G(AIv-M-f{-GB(8Hy-{WWTZwr^m^5qxhtF_&9 zak`*{#g-2e=clkzJEfjUeJjnAosxS#H#{%AAh)ETRPJ8n{>oj;IURj3@uy^}==s9u z;tMoSv(|N85EuJYyhfTMlPaeyuw)M|$XooCas#*fd`h!CcCUP`qLVH~*DpbD+Ld%X zb$9NE`9C_>mcA_S=AP$X?(S02t72)zMNjb3x0ZKh$2;by)~E5(kERDKsLL0X*~^}n zb#V<=Pu0z^*Yg52zpea;ca`=S9u>_mPA=Xi-Ja7Tzg6i4!35#B=-{}~@lMOtthnsf zIrnltEnVoQmp)oy=hm@57QB#-Fe&4UIfJ;rNBt5{OH|S&+TDgaGEG@ea=t8lxBRGQYYl(ZZ2lqsz3O!fTd>b)TAR0Xu8S)*#fB7PU;B`hOYV${ zx}x9lCE-8m3+y$*(5SCsKNCHW3gj2$!I~&tQ0_F(=9)`2Be(*=%&3eQR(-78ul~AH zufC)?XufYAXb-XXbcQV930p_2W9HCHWo&({Wus+xW~DPhG(2auqHXe&>~$r=*pbTJ zx=L|ZiP_YmURMyodmtDl@|Vt&73wX92Zny>Kj6RG94_7D+FaeT{)lpo*^S=@WAnNQ z`^R*0(y}CNtNM!$etKeNA6M(x6S}ONVGAkOgz6M-jA(%WC(sk0jgFm(*P?t*ve9pK>z! z3A8{a(DY95GherBQ?jgiY>P_XEPu%xF5DqhL^-2& zCu}$VoT<)TzBt*Fy0WeCd*PX+-wW4No~w-atY)|4{4Kf__s@L3v`TK&glP*6qf8-L z%d&^%wykeh->UjEb`*E3up%Z-q!Vuye=ox=EsXD5yhS$_TAhD5b6xjpb}Ze;57GAE zrbsxN*?AGg>)BoLrKwxCcigY5+SSC=)YJ%~SH+48M?1I3o+YH)&Xmp8uk*w#jS^8- zeW|YM9Op^=2lR89SpBDAy(Qna)Aq{tA?`6WBU7IF{(|wj{NncY*Gs||o2z+Zd)l;O zR`rRvs~n*qRP-`FRFP`*T3h9`$yuHETwd|R^uK1ZMIsKjC2U9Bx*YdSxapE1D z&OSG9b&;&Nt!uUG(~7ko^Ls29c+)YU$s{x#it(2=(pfn_UF0!{QddtLb}ji zl)NaRWJ3j2t*SmP?IBNg$HjG4|6>d_O|?&7_LBZp+Bv;W*o&4J&Kiapf3~#BOfBr_ zoV22cphVb8JTXCUaX3m-_oZ&my`Pup3|q9e#9q~*{)uw9Y8QUBTAvoeUK+&}eJ)Oy zd@8-Dkm*%wfws3vmAJ{?HZ$L)TRM38B;#pQs4cAISmgs=gk&upDSajlltsv9sAsA_ z(;YO>xXX&%9Fe%(UX*k&eMkmBFQ$m+D)rQ^93{9M{X*iT<?Jq!sz+pIjREHQS~ZqsqwIJl670Q!yUQw zYff+OQb8x-WZ}Z7Ls3&DCG-@HI`NXNmFpt^F<%+`Lu^ajZ{S7Zrh>Pf#p<;MUqt1r z=O&KM4;R!#9n_2Hz4YJsnW@={51sFo?_1fGGf{cmqIPHsl~VSi=PPFOp7GiWf{o9! zPp^DO{l321a^BHGm>S!evwM0ZOO7YjVhZ>rcv3bQRF|a`BBt?7SIw}L2GCOZJ`~s zhYrvY-hxih8M;7M=mu{?cX$VSKu_oey`c~Eg?HgS=m-4)tKNz)<=0~UwOD^G)?bVD z*JAy(Sbr_nUyJqEV*RyPe=XKui}jzy`fIWNT8iqpn?-fR@*S~!M=am*EVjWnu+sPx zE2Ax|Z^xD`i?NbHn2PmN%YS?M`T=sPQ`=dcI?nCf!QL{3n%Za5urY%M`WD0kt8a@* zJ6^wjO^T(U{5gy_&ijAGF4(|R*ih^bl`++iv@P`j&>qxn>avPGAGD-xS)JLc35M@qo6VyqNy<)oXKGG!oj3Qer`}t+(+&;zK;3 z&8an^e!hJs^`gyv^}j&@=Fc&_DP4Fi?h8}3#-q07`hruueK7^4V z0x_I}Yj6Yn@VrlCOhzQaU=Bnwc!)6|2LeFn9K-6oDQ>L z4$Ol{;4v(SiQr)5Am+jz#zDkGa0I@GlZ@+#H-Lrbl9Nno7QTe_ zun}%CZX@1-dyM;t4`Bq}WX3`;jE7Tj2F}4%xDL1B9^(lj@f^HB-XNdC3wRBu{PF$) z_eY?9$Qs$;D&lJx7Kq~v)WA|Oe~#x0?2rj7VHG@phv2uiL2E>!17k4a2T%ux;3_e3(taTa7j4s3;QU?=PX{HPD*2SZ>ujD&GuV`L-dz&EfDj=>2S z)s01shH;Ew#PJZyxPnOBfV)7wjqQQSjA@938Vq0oJA`z{zQA;t39}em5qH2Y#(u;D z@Ez2`mUmdxcGv@ZVLu#z-{2CA?SXcJDU7Lz(_lSgBO*!w?t_ zf$y^L8p8I%6qw3bjQ9ntgH5mnw!(J!1|B4^s3#Dp$MR5)vz^7TVh@X237XR^N(bqX z3k9$U*1<-Yeg^FV)UQ|`CV>GQjC@358LWa&;A^0+qTfJU=mmXY0K5-_-~$*2r*M*X z0cPG|QFDP}b)xPAIU%H>&-*xJ!G|ym?!aI0fbkfScsZD&UP1Q{DC!-U0|LlmR3H+c zFxDZihrO^5>fjLkz&M9U++{pMd<;(+^@zkvMynw>Cx!OV0fsUn5D7LzfEWcaj7r2R z*u>b6Nc0_!^K;-bq7aGf036$389WAZ#d01Vzzd*o%nOAu@BlduzJ^w#aomE@PzEm8 z1qa{;Jb->^p zfe%7ZgBJ9_!j*#*uEH%6(H9BI!lM2vLd3<%BPZe}yndnOg9bk$5@in?xDl5E^$5ok z=mL{q8q5JM@PK;EqWobb1i^U7fCW$iAHy;D5zfL@cmPir&k;kPpkBsw#DC#6OnJ(p z<^dbHpn)_-C87t`FkT>Xp0TKGI0Ppcrx4G;pYRtvfoISK7d8FBABI36V=Q7QOoMsA z1qoz>8xAn=u139lO|DT|AhtklBZaX`h=`7C z*cV%p=|eOKh07$W9TR7>qbQBpp!6RdFq(At<^y_A)6kN7__{MPay^Sf4qCXK?|PD4 zxy$=MDqO1MEoB0J!k5R zM1CL)?;(h!egR_RK9%0b?8njiIZ+lIUZ`F(t-F$a~B z^)G3*{Bq>y((&GBY*_y%$cty9KVqB7_N+r*h7XNyGs}OAd~p;$tJvKze?Ri2U09TM zXhVJo`Jhm|_fKiaPa=PX_tOZ}N$SH}IOR71=M(6lB)^QjaUlD96S-hy!{;(&{&VDW zk(1X4$vgk|F^8|e^=Xz5Y?hB|mQO;i4Dj>4=2%n*Djc~#UN8Mozn@<_N>0k7{m5&Q z<=2%mlN|HOW|H|u$Sugpr3=YdBA~xT!=i3$pesABj3#AL(KpOfnCw;q zGipz@;IxEFR`^CpMK-dyQm4_`8;WSGGK;oh)L>3lSsO+zR-K6{U~!lf%&5&GBWF3J zhK5n!qpwDX#nQNJN@MMIGuCUBnQT~urb&jAEQ&lBWfmJ{k>P7B*fd+RPH88b@L%a< zMdP%X@R=XcAB72oVS?~5HWl{~pF?Asa1MnHY}k2)*_4E(W|H&}cG) zE{*i%|G9#u-q+OkntBmNe0`5hXd3Z#K{CbH@5qR+n~@P;CnF=iF6J8{9gK|ldJ`G( zbtW>>(3L2(wZdp&dNGC8Z76_7R%r3$n3+l&yAlfex(}Jt&;c8}7IsW!wVKTMf2-&; z4Ucrg%hxxBHd|CCJZ-*bjWVi?3QHU+R(!&TID-((6ro!n*`fs zRy!u)2tozmS=G@pt5udt1^BiI7cF**T&x($Q73>Lb^;o&XBv(~q(p$lfSFd6pJ(If zO^cfGV#ZiwOf~v)tJ$|x0lr7yQTqSyVE~G?0diy~*B6b~7>!Fe9P#lPC??>o)K`vN zXAtBZ1OI&ITsZub(+z4ikZEK&@^>}@mzGUK<7fe6*%s>pNml-=<=|HX+#_rX1NGa-Bs4wrd>yS5=^Zi{i(2p8HPSTj6 zu^f3WNx48~`iRN6)*us@fs7JrKv!xSLZ&qQ?Y413V}08&;lI|$xi!jl!Gbs?^z{)^ njy%U3fb2u#pq%MPZEdUs6B{>SHOAj8*Ao{k#~K%Uqul=im9&Up literal 0 HcmV?d00001 diff --git a/app/src/main/jni/prebuilt/x86/libffi.so b/app/src/main/jni/prebuilt/x86/libffi.so new file mode 100755 index 0000000000000000000000000000000000000000..c1701946e7ed8519071fb951ec8c98ee0d171230 GIT binary patch literal 17132 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 literal 0 HcmV?d00001 diff --git a/app/src/main/jni/prebuilt/x86/libwayland-server.so b/app/src/main/jni/prebuilt/x86/libwayland-server.so new file mode 100755 index 0000000000000000000000000000000000000000..d6c8aa5fe4e37e5685cad7272a99ceb87ef73a55 GIT binary patch literal 166020 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

3A!eBbN^u>0MGB>oG1-<@HI`Py z>KkI^P$)TF!Aq-%w#x*nQ!3ty_0*Hp_?A*5GG=*cU8>fUmf6O_v8x^ZRI z%%-`jv1(j36kVN+T8f*f60Sl@n{hKwBZ*#CW!2Sn*}hLps}iQTobg!cB8ZO1(Z&R zO@`7M%BmV;rEa)|bkQoA9yF_)hd(G)1>`Glh(YgA1M(wIr!v^EcoLFH2m6!O0ddII zIG(DlniA8A>EL~&C|R0n8)9+GE0x=%8nl{`7w#tU%2isXFQhkwM)V#kzosma3`!|V z>xFfRB)o*{YSDUQ&FCh5tLy6OQ44OT()|Rinp8?sX?;Uod90BQ)9qc==nTxnW${{Q zyh7J|S)zRWUNmG`i$=$Gu}^xUs)n_bBzuhm`6lYh>#8A}z7dV-dNrxD*3HukXoy|d z1o3oGIojB`vhoS8fNoG-4R2Xv5At)e5usSkRpl`svp=+^thTHY!tF2CUg34RrKRN4 ziMfG$@p`Hg%wA|3w`XO1oL-2Z3yptVU0FkguPDhNKVMx_qP_|JoRzP&;|2J6>g#k% z^)ZYB3jfum7O_i9A01jg>X%qq7iL70igSj&LOn_L3U_VgUcnfx(G;36>0t%v$O+CoSmxT;Bow@%vZ;o%E|kGM zm&P0FYB1858jEh)gBi`hn+!@?=Tul#ZFAiOJ%cb@7%wI?)tA%U!(bt>OlH;i6kJ0Q;rLMLXnb7_)KKcqeL{+V3_mS#q8&U4PLfzhw z>O9`KF8C^9`_9m>pHyD)>ZV3L`1z8h{^M>LQjGN|R#j~!q&598MN8=*6^2=fOk!dK zri7HX1|u^@D6jJM)KfQS6HWmdt2o$$*{v7O{-)H`jH`0P8Znh9kJTr;wr0d=-&Bv* z3e~c^dttHqIv8bdmXuDyl(o60QBQe&5xmKxkF{)EU4w3f$qrBo8}Bv@7z$=YdtnR( zOITK~8#S#8$;7U0GS4u4Xy7_km#713V-pR#+bq*jX}r43o#8T0LkuPms~Ru;hFDEq zvk&R@1v=71tMu5hqmDZHq+_ho6GonL^id;APdWbhGmbm6^vt7<9(f#1S^1|65J9)m60-i-;hB&P=By(sQFU&v}!rA>*teMj&#YXnQR4in;Q9wNw7gsxvh(oJVy z1l=aw>NBILiL<{(;iu~p!Z4tb`9sq>nn^?t?tAmP2FzRT`x9ws(nF+) z&MBSe6Npz;V@l=c1+2jo#~o-=l4|#h+i-n>DGmDqeMLFNP7vqhV15SbkDh< zu|CNdZu7=4mB#Ca(#N(}@K1`VYeY|F(lXd*u4y%t#%^4ST5rjjFh)Aea!TvsX(FXO zTKfp*a%?}ro)gcX#oop^nBs_NRWL`tE;ITj)}C0n&kBoxA7$NA}QU> z?-etpx*E)FtQs^<{%NY^pZdgj&L>Mz7mf9?@~U`Mc`^*kDKil^Y}!v`0P;@8(M~qH zsXRv%o^%%i4+Zj8v1#qu7#(&lF2Be}!|(CBo@P!)-R9;arP{YIkS?!%a-(P>X*N81 zV)hZ7?lkj6A^-STRpt17C4|`%9N7CvYGPGILQheBLc*8l`V+mfrYVGc!Y$~r=}^}b z=uNs4)t37-u?#Cwy(FOWD=MgPz2K{cO~wP=bv0#;6D++{? zCRn&w-A7C}|9ud&3?iJ(fPO%11MHQUt|*_M(MgrQXL7eKzGPcDt!^TDNs8JAmHpyzW-3)9}S z^bqY7+eeV`VWpGOyk3&DpD3>1D~;K8Yo&s)8seI;c2Z(|1-&_q$HOgCSH-0b95$#( z-4NsPs#2~dEIwfGqrMbYNdvll(Lr>AsQ@fz69WgNaFf8z*kZEc-U2A@u9Pw3EytRl z4h2ZWHIO?uc9*`E`)82X!@LgTU+wm{;^npIg5EOM+kmm$)hzm#Ua=w7@|t?9+2oDN zc9%`Y`=+M~Sc6rSN3RW@#1L#)|~!b_I0 zqLp>{2Mt-fbE4c>i+UStQFmjF9MSq}aACdXJ|Hj4ORS-+wlYRExt8ldFH}Fq#=|9q z-M3O!SCr!D6dLLbS4~-YRc$;8-DhTk#4J~o%GxI6UtQ7H4AVNJ$u*E0l<{S7k$72R z*pFFJlcx#Q0vNz`FyoiiV3dkBj)#{reXF+V~~kn}zQ0AZKsBdqKzP2+fy=!yEh^hC>aE#~-E_ z#_ve{lJ98zo_eVJOM%Hpy5Tz&&y*EeS*IT1{^k*QKP)SGv0a?xJ0FLn`5QXRW5OTu z@rQb4dd#QdYWKH04+(icOp8BX{J*x&o~3~xilVa%N-P4}iH!=zO2oz{oti?>RtQ#B z))whZqgcewO0ZARKVYLMDwZM^RBJFK$CICS81V-P`gy4VpVAAy#9j_X(ZBeQIJvnVSL9Z4f6P zZu_D1;%ZwGS0fe)_qY9yfB2EPK+bZ1TO`cM$J>FEm)A0<_ZFE8A5@=sjz5Omqom{O zeDs|E;yHu`+LrrUCZXNeVnN)L5>aX@j^ekus~7y_GRH)jo1~$(b@GcxeAQc{TAftN z{WP+0KW2RlD%^kxw2p7bav%E@?&~@W2ZoZ`Wztr;$)647o@de_2FcCpC_@y4}gw4O)SA_Y_0xb9y(ft SQIreKRk+#HJZ!oM;pRW!Ewxkt literal 0 HcmV?d00001 diff --git a/app/src/main/jni/prebuilt/x86_64/libandroid-support.so b/app/src/main/jni/prebuilt/x86_64/libandroid-support.so new file mode 100755 index 0000000000000000000000000000000000000000..602765a34bb90b365ff5a1292256957c86708ca2 GIT binary patch literal 156392 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

  • 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 JNVR?W{{yYi4(b2^ literal 0 HcmV?d00001 diff --git a/app/src/main/jni/prebuilt/x86_64/libffi.so b/app/src/main/jni/prebuilt/x86_64/libffi.so new file mode 100755 index 0000000000000000000000000000000000000000..03c2453fa328d24f3aeadc01d925076f88f980bf GIT binary patch literal 17664 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 Y`<3;UV!s}y{CIK<2yYr>;A$@a@3OY3$N&HU literal 0 HcmV?d00001 diff --git a/app/src/main/jni/prebuilt/x86_64/libwayland-server.so b/app/src/main/jni/prebuilt/x86_64/libwayland-server.so new file mode 100755 index 0000000000000000000000000000000000000000..29a1660c881bd72c5ca5a95584bc4f9d8849333c GIT binary patch literal 192184 zcmd444SZC^^*?;`0xS^RMG+%PT`^z~ghat62%3dN?!rc+phgjr&1OS3B-u5)OM)T< zmk8HoYqYhc_C>UBRBescR(vT2BP3F_ky?#fCDkf-UBM_7qA2@(&)k{hW=eifpa1jw ze4gii9PT~eJNL|)GiT16dD*zJ$aPg}N{S+`H026qkW!Qa{$kh1sUi!oJjH^4?aFz| zNTBIR1^lgiZ|BU!-NN$`Jc2);>elnQfr`6gGidsb%Cwy@Xxmt$fPs6afvfy3z9Z@B zyIo_9{JSO%z4scVBJM&?sv9MR7|C~FJ07Pho#Z_I6faI22A@0(e&I0q>|yXZ!{C<>gFA-77Y~EGhQY5J2ES<-ymA

    |ygTcyt*2zG3iR4}(8548Cs| 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 Vy5vb(A1M9Ji2nfbXvX@X{5}u* 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 WY31_5PVO&x+Pi;KBEgB<=)V9c%WT2` literal 0 HcmV?d00001
  • ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias

    ! Shift : Y \n", + XKB_KEY_NoSymbol)); + + fprintf(stderr, "\n"); + table_string = + "! None : X \n" + "! Foo : X \n" + "None ! Shift : X \n" + "! : X \n" + "! ~ : X \n" + "! ! : X \n" + "! Ctrl ! Ctrl : X \n" + " ! : X \n" + " None : X \n" + "None None : X \n" + " : !Shift X \n"; + assert(!xkb_compose_table_new_from_buffer(ctx, table_string, + strlen(table_string), "C", + XKB_COMPOSE_FORMAT_TEXT_V1, + XKB_COMPOSE_COMPILE_NO_FLAGS)); + fprintf(stderr, "\n"); +} + +static void +test_include(struct xkb_context *ctx) +{ + char *path, *table_string; + int ret; + + path = test_get_path("compose/en_US.UTF-8/Compose"); + assert(path); + + /* We don't have a mechanism to change the include paths like we + * have for keymaps. So we must include the full path. */ + ret = asprintf(&table_string, + " : \"foo\" X\n" + "include \"%s\"\n" + " : \"bar\" Y\n", path); + assert(ret >= 0); + + assert(test_compose_seq_buffer(ctx, table_string, + /* No conflict. */ + XKB_KEY_dead_acute, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_dead_acute, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "´", XKB_KEY_acute, + + /* Comes before - doesn't override. */ + XKB_KEY_dead_tilde, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_space, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "~", XKB_KEY_asciitilde, + + /* Comes after - does override. */ + XKB_KEY_dead_tilde, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol, + XKB_KEY_dead_tilde, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "bar", XKB_KEY_Y, + + XKB_KEY_NoSymbol)); + + free(path); + free(table_string); +} + +int +main(int argc, char *argv[]) +{ + struct xkb_context *ctx; + + ctx = test_get_context(CONTEXT_NO_FLAG); + assert(ctx); + + test_seqs(ctx); + test_conflicting(ctx); + test_XCOMPOSEFILE(ctx); + test_state(ctx); + test_modifier_syntax(ctx); + test_include(ctx); + + xkb_context_unref(ctx); + return 0; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/context.c b/app/src/main/jni/libxkbcommon/xkbcommon/test/context.c new file mode 100644 index 0000000..dc60888 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/context.c @@ -0,0 +1,52 @@ +/* + * Copyright © 2012 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Daniel Stone + */ + +#include "test.h" +#include "context.h" + +int +main(void) +{ + struct xkb_context *context = test_get_context(0); + xkb_atom_t atom; + + assert(context); + + assert(xkb_context_num_include_paths(context) == 1); + assert(!xkb_context_include_path_append(context, "¡NONSENSE!")); + assert(xkb_context_num_include_paths(context) == 1); + + atom = xkb_atom_intern(context, "HELLOjunkjunkjunk", 5); + assert(atom != XKB_ATOM_NONE); + assert(streq(xkb_atom_text(context, atom), "HELLO")); + + atom = xkb_atom_intern_literal(context, "HELLOjunkjunkjunk"); + assert(atom != XKB_ATOM_NONE); + assert(streq(xkb_atom_text(context, atom), "HELLOjunkjunkjunk")); + + xkb_context_unref(context); + + return 0; +} diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/accessx b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/accessx new file mode 100644 index 0000000..6dd6ca9 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/accessx @@ -0,0 +1,52 @@ +default partial xkb_compatibility "basic" { + interpret AccessX_Enable { + action= LockControls(controls=AccessXKeys); + }; +}; + +partial xkb_compatibility "full" { + + interpret AccessX_Enable { + action= LockControls(controls=AccessXKeys); + }; + + interpret AccessX_Feedback_Enable { + action= LockControls(controls=AccessXFeedback); + }; + + interpret RepeatKeys_Enable { + action= LockControls(controls=RepeatKeys); + }; + + interpret SlowKeys_Enable { + action= LockControls(controls=SlowKeys); + }; + + interpret BounceKeys_Enable { + action= LockControls(controls=BounceKeys); + }; + + interpret StickyKeys_Enable { + action= LockControls(controls=StickyKeys); + }; + + interpret MouseKeys_Enable { + action= LockControls(controls=MouseKeys); + }; + + interpret MouseKeys_Accel_Enable { + action= LockControls(controls=MouseKeysAccel); + }; + + interpret Overlay1_Enable { + action= LockControls(controls=Overlay1); + }; + + interpret Overlay2_Enable { + action= LockControls(controls=Overlay2); + }; + + interpret AudibleBell_Enable { + action= LockControls(controls=AudibleBell); + }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/basic b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/basic new file mode 100644 index 0000000..745cbba --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/basic @@ -0,0 +1,49 @@ +// Minimal set of symbol interpretations to provide +// reasonable default behavior (Num lock, Shift lock, +// Caps lock, and Mode switch) and set up the +// automatic updating of common keyboard LEDs. + +default xkb_compatibility "basic" { + + virtual_modifiers NumLock,AltGr; + + interpret.repeat= False; + setMods.clearLocks= True; + latchMods.clearLocks= True; + latchMods.latchToLock= True; + + interpret Shift_Lock+AnyOf(Shift+Lock) { + action= LockMods(modifiers=Shift); + }; + + interpret Any+Lock { + action= LockMods(modifiers=Lock); + }; + + interpret Num_Lock+Any { + virtualModifier= NumLock; + action= LockMods(modifiers=NumLock); + }; + + interpret Mode_switch { + useModMapMods= level1; + virtualModifier= AltGr; + action= SetGroup(group=+1); + }; + + interpret Any + Any { + action= SetMods(modifiers=modMapMods); + }; + + group 2 = AltGr; + group 3 = AltGr; + group 4 = AltGr; + + include "ledcaps" + include "lednum" + indicator "Shift Lock" { + !allowExplicit; + whichModState= Locked; + modifiers= Shift; + }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/caps b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/caps new file mode 100644 index 0000000..4793051 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/caps @@ -0,0 +1,11 @@ +partial xkb_compatibility "caps_lock" { + // Keysym Caps_Lock locks the Lock modifier. + // With this definition, the keysym Caps_Lock can be used without binding + // the whole key to a real modifier. This is essential when you don't + // want to use Caps_Lock on the first level. + // This should not have any compatibility issues when used together with + // other layouts which don't utilize this capability. + interpret Caps_Lock { + action = LockMods(modifiers = Lock); + }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/complete b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/complete new file mode 100644 index 0000000..8f77538 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/complete @@ -0,0 +1,10 @@ +default xkb_compatibility "complete" { + include "basic" + augment "iso9995" + augment "mousekeys" + augment "accessx(full)" + augment "misc" + augment "xfree86" + augment "level5" + augment "caps(caps_lock)" +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/iso9995 b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/iso9995 new file mode 100644 index 0000000..0f3025b --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/iso9995 @@ -0,0 +1,77 @@ +// Fairly complete set of symbol interpretations +// to provide reasonable default behavior. + +default partial xkb_compatibility "default" { + + virtual_modifiers LevelThree,AltGr; + + interpret.repeat= False; + setMods.clearLocks= True; + latchMods.clearLocks= True; + latchMods.latchToLock= True; + + interpret ISO_Level2_Latch+Shift { + useModMapMods= level1; + action= LatchMods(modifiers=Shift); + }; + + interpret ISO_Level3_Shift+Any { + useModMapMods= level1; + virtualModifier= LevelThree; + action= SetMods(modifiers=LevelThree); + }; + + interpret ISO_Level3_Shift { + action= SetMods(modifiers=LevelThree); + }; + + interpret ISO_Level3_Latch+Any { + useModMapMods= level1; + virtualModifier= LevelThree; + action= LatchMods(modifiers=LevelThree); + }; + + interpret ISO_Level3_Latch { + action= LatchMods(modifiers=LevelThree); + }; + + interpret ISO_Level3_Lock+Any { + useModMapMods= level1; + virtualModifier= LevelThree; + action= LockMods(modifiers=LevelThree); + }; + + interpret ISO_Level3_Lock { + action= LockMods(modifiers=LevelThree); + }; + + interpret ISO_Group_Latch { + useModMapMods= level1; + virtualModifier= AltGr; + action= LatchGroup(group=2); + }; + + interpret ISO_Next_Group { + useModMapMods= level1; + virtualModifier= AltGr; + action= LockGroup(group=+1); + }; + + interpret ISO_Prev_Group { + useModMapMods= level1; + virtualModifier= AltGr; + action= LockGroup(group=-1); + }; + interpret ISO_First_Group { + action= LockGroup(group=1); + }; + + interpret ISO_Last_Group { + action= LockGroup(group=2); + }; + + indicator "Group 2" { + !allowExplicit; + groups= All-Group1; + }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/ledcaps b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/ledcaps new file mode 100644 index 0000000..f1460ba --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/ledcaps @@ -0,0 +1,24 @@ +// Use the Caps Lock LED to show either +// Caps Lock, Group, or Shift Lock state. + +default partial xkb_compatibility "caps_lock" { + indicator "Caps Lock" { + !allowExplicit; + whichModState= Locked; + modifiers= Lock; + }; +}; + +partial xkb_compatibility "group_lock" { + indicator "Caps Lock" { + modifiers= None; + groups=All-group1; + }; +}; + +partial xkb_compatibility "shift_lock" { + indicator "Caps Lock" { + whichModState= Locked; + modifiers= Shift; + }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/lednum b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/lednum new file mode 100644 index 0000000..bfdcd74 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/lednum @@ -0,0 +1,24 @@ +// Use the Num Lock LED to show either +// Num Lock, Group, or Shift Lock state. + +default partial xkb_compatibility "num_lock" { + indicator "Num Lock" { + !allowExplicit; + whichModState= Locked; + modifiers= NumLock; + }; +}; + +partial xkb_compatibility "group_lock" { + indicator "Num Lock" { + modifiers= None; + groups=All-group1; + }; +}; + +partial xkb_compatibility "shift_lock" { + indicator "Num Lock" { + whichModState= Locked; + modifiers= Shift; + }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/ledscroll b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/ledscroll new file mode 100644 index 0000000..a241698 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/ledscroll @@ -0,0 +1,24 @@ +// Use the Scroll Lock LED to show either +// Scroll Lock, Group, or Shift Lock state. + +default partial xkb_compatibility "scroll_lock" { + indicator "Scroll Lock" { + allowExplicit; + whichModState= Locked; + modifiers= ScrollLock; + }; +}; + +partial xkb_compatibility "group_lock" { + indicator "Scroll Lock" { + modifiers= None; + groups=All-group1; + }; +}; + +partial xkb_compatibility "shift_lock" { + indicator "Scroll Lock" { + whichModState= Locked; + modifiers= Shift; + }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/level5 b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/level5 new file mode 100644 index 0000000..54f749d --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/level5 @@ -0,0 +1,56 @@ +// Fairly complete set of symbol interpretations +// to provide reasonable default behavior. + +default partial xkb_compatibility "default" { + + virtual_modifiers LevelFive; + + interpret.repeat= False; + setMods.clearLocks= True; + latchMods.clearLocks= True; + latchMods.latchToLock= True; + + interpret ISO_Level5_Shift+Any { + useModMapMods= level1; + virtualModifier= LevelFive; + action= SetMods(modifiers=LevelFive); + }; + + interpret ISO_Level5_Shift { + action= SetMods(modifiers=LevelFive); + }; + + interpret ISO_Level5_Latch+Any { + useModMapMods= level1; + virtualModifier= LevelFive; + action= LatchMods(modifiers=LevelFive); + }; + + interpret ISO_Level5_Latch { + action= LatchMods(modifiers=LevelFive); + }; + + interpret ISO_Level5_Lock+Any { + useModMapMods= level1; + virtualModifier= LevelFive; + action= LockMods(modifiers=LevelFive); + }; + + interpret ISO_Level5_Lock { + action= LockMods(modifiers=LevelFive); + }; +}; + +partial xkb_compatibility "level5_lock" { + // This defines a Level5-Lock using the NumLock real modifier + // in order to create arbitrary level-behaviour, which would + // not be possible with the virtual modifier. + // See also: types/level5 : EIGHT_LEVEL_LEVEL_FIVE_LOCK + // See also: symbols/level5(lock) + + virtual_modifiers NumLock; + + interpret ISO_Level5_Lock { + action = LockMods(modifiers = NumLock); + }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/misc b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/misc new file mode 100644 index 0000000..964f471 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/misc @@ -0,0 +1,122 @@ +default partial xkb_compatibility "misc" { + + virtual_modifiers Alt,Meta,Super,Hyper,ScrollLock; + + // Interpretations for some other useful keys. + + interpret Terminate_Server { + action = Terminate(); + }; + + setMods.clearLocks= True; + + // Sets the "Alt" virtual modifier. + + interpret Alt_L+Any { + //useModMapMods= level1; + virtualModifier= Alt; + action = SetMods(modifiers=modMapMods); + }; + + interpret Alt_L { + action = SetMods(modifiers=Alt); + }; + + interpret Alt_R+Any { + //useModMapMods= level1; + virtualModifier= Alt; + action = SetMods(modifiers=modMapMods); + }; + + interpret Alt_R { + action = SetMods(modifiers=Alt); + }; + + // Sets the "Meta" virtual modifier. + + interpret Meta_L+Any { + //useModMapMods= level1; + virtualModifier= Meta; + action = SetMods(modifiers=modMapMods); + }; + + interpret Meta_L { + action = SetMods(modifiers=Meta); + }; + + interpret Meta_R+Any { + //useModMapMods= level1; + virtualModifier= Meta; + action = SetMods(modifiers=modMapMods); + }; + + interpret Meta_R { + action = SetMods(modifiers=Meta); + }; + + // Sets the "Super" virtual modifier. + + interpret Super_L+Any { + //useModMapMods= level1; + virtualModifier= Super; + action = SetMods(modifiers=modMapMods); + }; + + interpret Super_L { + action = SetMods(modifiers=Super); + }; + + interpret Super_R+Any { + //useModMapMods= level1; + virtualModifier= Super; + action = SetMods(modifiers=modMapMods); + }; + + interpret Super_R { + action = SetMods(modifiers=Super); + }; + + // Sets the "Hyper" virtual modifier. + + interpret Hyper_L+Any { + //useModMapMods= level1; + virtualModifier= Hyper; + action = SetMods(modifiers=modMapMods); + }; + + interpret Hyper_L { + action = SetMods(modifiers=Hyper); + }; + + interpret Hyper_R+Any { + //useModMapMods= level1; + virtualModifier= Hyper; + action = SetMods(modifiers=modMapMods); + }; + + interpret Hyper_R { + action = SetMods(modifiers=Hyper); + }; + + // Sets the "ScrollLock" virtual modifier and + // makes it actually lock when pressed. Sets + // up a map for the scroll lock indicator. + interpret Scroll_Lock+Any { + virtualModifier= ScrollLock; + action = LockMods(modifiers=modMapMods); + }; + + include "ledscroll" + + include "misc(assign_shift_left_action)" +}; + +partial xkb_compatibility "assign_shift_left_action" { + // Because of the irrevertable modifier mapping in symbols/pc, + // is getting bound to the Lock modifier when using + // symbols/shift(both_capslock), creating unwanted behaviour. + // This is a quirk, to circumvent the problem. + interpret Shift_L { + action = SetMods(modifiers = Shift); + }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/mousekeys b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/mousekeys new file mode 100644 index 0000000..6b96fbc --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/mousekeys @@ -0,0 +1,201 @@ +// Interpretations for arrow keys and a bunch of +// other common keysyms which make it possible to +// bind "mouse" keys using xmodmap and activate or +// deactivate them from the keyboard. + +default partial xkb_compatibility "mousekeys" { + + // Keypad actions. + + interpret.repeat= True; + + interpret KP_1 { + action = MovePtr(x=-1,y= +1); + }; + interpret KP_End { + action = MovePtr(x=-1,y= +1); + }; + + interpret KP_2 { + action = MovePtr(x=+0,y= +1); + }; + interpret KP_Down { + action = MovePtr(x=+0,y= +1); + }; + + interpret KP_3 { + action = MovePtr(x=+1,y=+1); + }; + interpret KP_Next { + action = MovePtr(x=+1,y=+1); + }; + + interpret KP_4 { + action = MovePtr(x=-1,y=+0); + }; + interpret KP_Left { + action = MovePtr(x=-1,y=+0); + }; + + interpret KP_6 { + action = MovePtr(x=+1,y=+0); + }; + interpret KP_Right { + action = MovePtr(x=+1,y=+0); + }; + + interpret KP_7 { + action = MovePtr(x=-1,y=-1); + }; + interpret KP_Home { + action = MovePtr(x=-1,y=-1); + }; + + interpret KP_8 { + action = MovePtr(x=+0,y=-1); + }; + interpret KP_Up { + action = MovePtr(x=+0,y=-1); + }; + + interpret KP_9 { + action = MovePtr(x=+1,y=-1); + }; + interpret KP_Prior { + action = MovePtr(x=+1,y=-1); + }; + + interpret KP_5 { + action = PointerButton(button=default); + }; + interpret KP_Begin { + action = PointerButton(button=default); + }; + + interpret KP_F2 { + action = SetPtrDflt(affect=defaultButton,button=1); + }; + interpret KP_Divide { + action = SetPtrDflt(affect=defaultButton,button=1); + }; + + interpret KP_F3 { + action = SetPtrDflt(affect=defaultButton,button=2); + }; + interpret KP_Multiply { + action = SetPtrDflt(affect=defaultButton,button=2); + }; + + interpret KP_F4 { + action = SetPtrDflt(affect=defaultButton,button=3); + }; + interpret KP_Subtract { + action = SetPtrDflt(affect=defaultButton,button=3); + }; + + interpret KP_Separator { + action = PointerButton(button=default,count=2); + }; + interpret KP_Add { + action = PointerButton(button=default,count=2); + }; + + interpret KP_0 { + action = LockPointerButton(button=default,affect=lock); + }; + interpret KP_Insert { + action = LockPointerButton(button=default,affect=lock); + }; + + interpret KP_Decimal { + action = LockPointerButton(button=default,affect=unlock); + }; + interpret KP_Delete { + action = LockPointerButton(button=default,affect=unlock); + }; + + // Additional mappings for Solaris keypad compatibility. + + interpret F25 { // aka KP_Divide + action = SetPtrDflt(affect=defaultButton,button=1); + }; + interpret F26 { // aka KP_Multiply + action = SetPtrDflt(affect=defaultButton,button=2); + }; + interpret F27 { // aka KP_Home + action = MovePtr(x=-1,y=-1); + }; + interpret F29 { // aka KP_Prior + action = MovePtr(x=+1,y=-1); + }; + interpret F31 { // aka KP_Begin + action = PointerButton(button=default); + }; + interpret F33 { // aka KP_End + action = MovePtr(x=-1,y= +1); + }; + interpret F35 { // aka KP_Next + action = MovePtr(x=+1,y=+1); + }; + + interpret.repeat= False; + + // New keysym actions. + + interpret Pointer_Button_Dflt { + action= PointerButton(button=default); + }; + interpret Pointer_Button1 { + action= PointerButton(button=1); + }; + interpret Pointer_Button2 { + action= PointerButton(button=2); + }; + interpret Pointer_Button3 { + action= PointerButton(button=3); + }; + interpret Pointer_DblClick_Dflt { + action= PointerButton(button=default,count=2); + }; + interpret Pointer_DblClick1 { + action= PointerButton(button=1,count=2); + }; + interpret Pointer_DblClick2 { + action= PointerButton(button=2,count=2); + }; + interpret Pointer_DblClick3 { + action= PointerButton(button=3,count=2); + }; + interpret Pointer_Drag_Dflt { + action= LockPointerButton(button=default); + }; + interpret Pointer_Drag1 { + action= LockPointerButton(button=1); + }; + interpret Pointer_Drag2 { + action= LockPointerButton(button=2); + }; + interpret Pointer_Drag3 { + action= LockPointerButton(button=3); + }; + + interpret Pointer_EnableKeys { + action= LockControls(controls=MouseKeys); + }; + interpret Pointer_Accelerate { + action= LockControls(controls=MouseKeysAccel); + }; + interpret Pointer_DfltBtnNext { + action= SetPtrDflt(affect=defaultButton,button= +1); + }; + interpret Pointer_DfltBtnPrev { + action= SetPtrDflt(affect=defaultButton,button= -1); + }; + + // Allow an indicator for MouseKeys. + indicator "Mouse Keys" { + //!allowExplicit; + indicatorDrivesKeyboard; + controls= MouseKeys; + }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/pc b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/pc new file mode 100644 index 0000000..f69b54d --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/pc @@ -0,0 +1,17 @@ +default partial xkb_compatibility "pc" { + + // Sets the "Alt" virtual modifier. + + virtual_modifiers Alt; + + setMods.clearLocks= True; + interpret Alt_L+Any { + virtualModifier= Alt; + action = SetMods(modifiers=modMapMods); + }; + + interpret Alt_R+Any { + virtualModifier= Alt; + action = SetMods(modifiers=modMapMods); + }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/xfree86 b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/xfree86 new file mode 100644 index 0000000..cc43819 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/compat/xfree86 @@ -0,0 +1,66 @@ +// XFree86 special keysyms. + +default partial xkb_compatibility "basic" { + + interpret.repeat= True; + + interpret XF86_Switch_VT_1 { + action = SwitchScreen(Screen=1, !SameServer); + }; + interpret XF86_Switch_VT_2 { + action = SwitchScreen(Screen=2, !SameServer); + }; + interpret XF86_Switch_VT_3 { + action = SwitchScreen(Screen=3, !SameServer); + }; + interpret XF86_Switch_VT_4 { + action = SwitchScreen(Screen=4, !SameServer); + }; + interpret XF86_Switch_VT_5 { + action = SwitchScreen(Screen=5, !SameServer); + }; + interpret XF86_Switch_VT_6 { + action = SwitchScreen(Screen=6, !SameServer); + }; + interpret XF86_Switch_VT_7 { + action = SwitchScreen(Screen=7, !SameServer); + }; + interpret XF86_Switch_VT_8 { + action = SwitchScreen(Screen=8, !SameServer); + }; + interpret XF86_Switch_VT_9 { + action = SwitchScreen(Screen=9, !SameServer); + }; + interpret XF86_Switch_VT_10 { + action = SwitchScreen(Screen=10, !SameServer); + }; + interpret XF86_Switch_VT_11 { + action = SwitchScreen(Screen=11, !SameServer); + }; + interpret XF86_Switch_VT_12 { + action = SwitchScreen(Screen=12, !SameServer); + }; + + interpret XF86LogGrabInfo { + action = Private(type=0x86, data="PrGrbs"); + }; + interpret XF86LogWindowTree { + action = Private(type=0x86, data="PrWins"); + }; + + interpret XF86_Next_VMode { + action = Private(type=0x86, data="+VMode"); + }; + interpret XF86_Prev_VMode { + action = Private(type=0x86, data="-VMode"); + }; +}; + +partial xkb_compatibility "grab_break" { + interpret XF86_Ungrab { + action = Private(type=0x86, data="Ungrab"); + }; + interpret XF86_ClearGrab { + action = Private(type=0x86, data="ClsGrb"); + }; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/aliases b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/aliases new file mode 100644 index 0000000..f398772 --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/aliases @@ -0,0 +1,99 @@ + +// keycode aliases for phonetic keyboard maps + +default +xkb_keycodes "qwerty" { + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; +}; + +xkb_keycodes "azerty" { + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; +}; + +xkb_keycodes "qwertz" { + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; +}; diff --git a/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/aliases-xkbcommon b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/aliases-xkbcommon new file mode 100644 index 0000000..96a17ab --- /dev/null +++ b/app/src/main/jni/libxkbcommon/xkbcommon/test/data/keycodes/aliases-xkbcommon @@ -0,0 +1,99 @@ + +// keycode aliases for phonetic keyboard maps + +default +xkb_keycodes "qwerty" { + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias =